@octokit/fixtures-server

Fixtures server for browser & language agnositic octokit testing

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@octokit/fixtures-server
2618.1.110 days ago6 years agoMinified + gzip package size for @octokit/fixtures-server in KB

Readme

fixtures-server
Fixtures server for browser & language agnostic octokit testing

Test
The Octokit Fixtures Server is proxies requests to the mocked routes provided by @octokit/fixtures.

Usage

  1. 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"
}
```
  1. 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 |

License

MIT