An open API service indexing awesome lists of open source software.

https://github.com/octokit/fixtures-server

Fixtures server for browser & language agnositic octokit testing
https://github.com/octokit/fixtures-server

hacktoberfest octokit-js tooling

Last synced: 7 months ago
JSON representation

Fixtures server for browser & language agnositic octokit testing

Awesome Lists containing this project

README

          

# fixtures-server

> Fixtures server for browser & language agnostic octokit testing

[![Test](https://github.com/octokit/fixtures-server/workflows/Test/badge.svg?branch=main)](https://github.com/octokit/fixtures-server/actions?query=workflow%3ATest+branch%3Amain)

The Octokit Fixtures Server is proxies requests to the mocked routes
provided by [@octokit/fixtures](https://github.com/octokit/fixtures).

- [Usage](#usage)
- [How it works](HOW_IT_WORKS.md)
- [Contributing](CONTRIBUTING.md)
- [License](#license)

## Usage

1. Load a fixture. All folder names at [@octokit/fixtures/scenarios/api.github.com](https://github.com/octokit/fixtures/tree/main/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"
}
```

2. 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](#standaloneserver)
or as as [express middleware](#expressmiddleware).

### Standalone Server

Download binary for your os from the [latest release](https://github.com/octokit/fixtures-server/releases/latest).

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 | FIXTURES_URL | `'http://localhost:'` | URL to handle fixture requests (This helps with continuous deployments) |
| --log-level | LOG_LEVEL | `'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

```js
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:'` | 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](https://github.com/octokit/fixtures/tree/main/scenarios/api.github.com) | Object with keys being the scenario names and values being the fixtures arrays |

## License

[MIT](LICENSE.md)