1. @octokit/fixtures-server
Fixtures server for browser & language agnositic octokit testing
@octokit/fixtures-server
Package: @octokit/fixtures-server
Created by: octokit
Last modified: Wed, 10 Apr 2024 00:21:16 GMT
Version: 8.1.1
License: MIT
Downloads: 888
Repository: https://github.com/octokit/fixtures-server

Install

npm install @octokit/fixtures-server
yarn add @octokit/fixtures-server

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

     {
      "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
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 FIXTURES_URL 'http://localhost:<port>' 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

 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

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code