fixtures-server
Fixtures server for browser & language agnostic octokit testing
The Octokit Fixtures Server is proxies requests to the mocked routes provided by @octokit/fixtures.
Usage
- Load a fixture. All folder names at @octokit/fixtures/scenarios/api.github.com
are valid values for `scenario`.
```
curl -XPOST -H'Content-Type: application/json' http://localhost:3000/fixtures -d '{"scenario": "get-repository"}'
```
The response looks something like this
```json
{
"id": "fixturesid123",
"url": "http://localhost:3000/api.github.com/fixturesid123/api.github.com/fixturesid123"
}
```
- Send a request to the returned
url
as if it was https://api.github.com.
```
curl -H'Authorization: token 0000000000000000000000000000000000000001' -H'Accept: application/vnd.github.v3+json' http://localhost:3000/api.github.com/fixturesid123/repos/octokit-fixture-org/hello-world
```
After that request the fixture is "consumed". That allows for different responses for the same requests based on order.If you want to load custom fixtures, you'll have to use
@octokit/fixtures-server
as standalone server
or as as express middleware.Standalone Server
Download binary for your os from the latest release.Alternatively, you can also install
@octokit/fixtures-server
as a global npm package, if you prefer that:npm install --global @octokit/fixtures-server
By default the server runs at http://localhost:3000
octokit-fixtures-server
Options
| CLI option | ENV variable | default | description | | -------------- | ------------ | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | --port | PORT |
3000
| Server port number |
| --fixtures-url | FIXTURESURL | 'http://localhost:<port>'
| URL to handle fixture requests (This helps with continuous deployments) |
| --log-level | LOGLEVEL | 'info'
| One of 'debug'
, 'info'
, 'warn'
, 'error'
, 'silent'
|
| --ttl | TTL | 60000
| Expiration time for loaded fixtures in ms |
| --fixtures | FIXTURES | 'node_modules/@octokit/fixtures/scenarios/**/normalized-fixture.json'
| glob path to load JSON fixture files recorded with nock. Make sure to wrap the value with quotes, e.g. --fixtures='./scenarios/*.json'
|Express Middleware
const express = require("express");
const app = express();
const fixturesServer = require("@octokit/fixtures-server");
app.use(
fixturesServer({
fixtures: {
"my-scenario": require("./scenarios/my-scenario.json"),
},
}),
);
app.listen(3000);
Options
| Option | Default | Description | | ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | |fixturesUrl
| 'http://localhost:<port>'
| URL to handle fixture requests (This helps with continuous deployments) |
| logLevel
| 'info'
| One of 'debug'
, 'info'
, 'warn'
, 'error'
, 'silent'
|
| ttl
| 60000
| Expiration time (time to live) for loaded fixtures in ms |
| fixtures
| fixtures from @octokit/fixtures/scenarios/api.github.com | Object with keys being the scenario names and values being the fixtures arrays |