Mock of a private npm registry, useful for testing npm-related stuff
npm install --save-dev mock-private-registry
var registry = require('mock-private-registry')
var got = require('got')
var token = 'MySecretToken'
registry({port: 18888, token: token}, function (err, server) {
if (err) {
throw err
}
var opts = {headers: {Authorization: 'Bearer ' + token}, json: true}
got('http://localhost:18888/@mockscope%2Ffoobar', opts)
.then(function (res) {
console.log('Package manifest: ', res.body)
})
.catch(function (err) {
console.error(err)
})
.then(function () {
server.close()
})
})
Basically, call the module to spin up a server, and specify whatever you want to use as the valid authorization token. Second argument is a callback, which provides access to the server that is listening. This allows you to call close()
on it when you're done.
There is an alternative promise API available if you require mock-private-registry/promise
. Usage is the same except there is no callback. Instead, the function will return a promise.
port
- Port number for the server. Default:63142
hostname
- Hostname the server should listen on. Default:127.0.0.1
token
- The token that valid requests should use. Default:MySecretToken
tokenType
- Type of token. UsuallyBearer
orBasic
. Default:Bearer
pkgName
- Name of the package that should be available to query for. Default:@mockscope/foobar
debug
- Boolean. Set to true in order to have the registry mock spit back whatever is not matching, for instance the expected vs received token. Default:false
tarballPath
- Absolute path to a tarball you want to serve on the tarball endpoint. Default:<mock-private-registry-path>/mock.tgz
/@mockscope%2Ffoobar
- Provides a mock registry response for the fictional@mockscope/foobar
module./@mockscope/foobar/-/foobar-1.0.0.tgz
- Provides a tarball of the fictional module.
Note: If providing a different package name in the options, the above paths will reflect these.
For testing. Lots of stuff interacts with the NPM registry, but often has bugs when authorizing against private registries. Trying to mock the whole private registry flow can be difficult, so I created this.
MIT-licensed. See LICENSE.