Skip to content

Commit ddc2f97

Browse files
committed
test: Simplify npm mock
1 parent b0635c3 commit ddc2f97

File tree

2 files changed

+19
-30
lines changed

2 files changed

+19
-30
lines changed

test/get-last-release.test.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import nock from 'nock';
44
import {stub} from 'sinon';
55
import tempy from 'tempy';
66
import lastRelease from '../lib/get-last-release';
7-
import {registry, mock, available, unpublished} from './helpers/mock-registry';
7+
import {registry, mock, availableModule, unpublishedModule} from './helpers/mock-registry';
88

99
let processStdout;
1010
let processStderr;
@@ -51,7 +51,7 @@ test.after.always(() => {
5151

5252
test.serial('Get release from package name', async t => {
5353
const name = 'available';
54-
const registryMock = available(name);
54+
const registryMock = mock(name).reply(200, availableModule);
5555
const release = await lastRelease({name, publishConfig: {registry}}, t.context.logger);
5656

5757
t.is(release.version, '1.33.7');
@@ -61,7 +61,7 @@ test.serial('Get release from package name', async t => {
6161

6262
test.serial("Get release from a tagged package's name", async t => {
6363
const name = 'tagged';
64-
const registryMock = available(name);
64+
const registryMock = mock(name).reply(200, availableModule);
6565
const release = await lastRelease({name, publishConfig: {registry, tag: 'foo'}}, t.context.logger);
6666

6767
t.is(release.version, '0.8.15');
@@ -71,7 +71,7 @@ test.serial("Get release from a tagged package's name", async t => {
7171

7272
test.serial('Get release from the latest fallback tag', async t => {
7373
const name = 'tagged';
74-
const registryMock = available(name);
74+
const registryMock = mock(name).reply(200, availableModule);
7575
const release = await lastRelease({name, publishConfig: {registry, tag: 'bar'}}, t.context.logger);
7676

7777
t.is(release.version, '1.33.7');
@@ -81,7 +81,7 @@ test.serial('Get release from the latest fallback tag', async t => {
8181

8282
test.serial('Get release from scoped package name', async t => {
8383
const name = '@scoped/available';
84-
const registryMock = available(name);
84+
const registryMock = mock(name).reply(200, availableModule);
8585

8686
const release = await lastRelease({name, publishConfig: {registry}}, t.context.logger);
8787
t.is(release.version, '1.33.7');
@@ -91,7 +91,7 @@ test.serial('Get release from scoped package name', async t => {
9191

9292
test.serial('Get nothing from completely unpublished package name', async t => {
9393
const name = 'completely-unpublished';
94-
const registryMock = unpublished(name);
94+
const registryMock = mock(name).reply(200, unpublishedModule);
9595
const release = await lastRelease({name, publishConfig: {registry}}, t.context.logger);
9696

9797
t.is(release.version, undefined);
@@ -118,7 +118,7 @@ test.serial('Get nothing from not yet published package name (unavailable w/o re
118118

119119
test.serial('Get registry from ".npmrc"', async t => {
120120
const name = 'available';
121-
const registryMock = available(name);
121+
const registryMock = mock(name).reply(200, availableModule);
122122
await appendFile('./.npmrc', `registry = ${registry}`);
123123
const release = await lastRelease({name}, t.context.logger);
124124

@@ -141,7 +141,10 @@ test.serial('Get nothing from not yet published package name (unavailable w/o st
141141

142142
test.serial('Send bearer authorization using NPM_TOKEN', async t => {
143143
const name = 'available';
144-
const registryMock = available(name, ['authorization', 'Bearer npm_token']);
144+
const registryMock = mock(name, {reqheaders: {authorization: `Bearer ${process.env.NPM_TOKEN}`}}).reply(
145+
200,
146+
availableModule
147+
);
145148
await appendFile('./.npmrc', `registry = ${registry}\nalways-auth = true`);
146149
const release = await lastRelease({name}, t.context.logger);
147150

@@ -155,7 +158,9 @@ test.serial('Uses basic auth when always-auth=true in ".npmrc"', async t => {
155158
delete process.env.NPM_TOKEN;
156159
process.env.NPM_USERNAME = 'username';
157160
process.env.NPM_PASSWORD = 'password';
158-
const registryMock = available(name, null, {user: 'username', pass: 'password'});
161+
const registryMock = mock(name)
162+
.basicAuth({user: 'username', pass: 'password'})
163+
.reply(200, availableModule);
159164
await appendFile('./.npmrc', `registry = ${registry}\nalways-auth = true`);
160165
const release = await lastRelease({name}, t.context.logger);
161166

@@ -177,7 +182,7 @@ test.serial('Throws error on server error', async t => {
177182

178183
test.serial('Handle missing trailing slash on registry URL', async t => {
179184
const name = 'available';
180-
const registryMock = available(name);
185+
const registryMock = mock(name).reply(200, availableModule);
181186
const release = await lastRelease({name, publishConfig: {registry: 'http://registry.npmjs.org'}}, t.context.logger);
182187

183188
t.is(release.version, '1.33.7');

test/helpers/mock-registry.js

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,17 @@
11
import nock from 'nock';
22

33
const REGISTRY_URL = 'http://registry.npmjs.org/';
4-
const availableModule = {
4+
export const availableModule = {
55
'dist-tags': {latest: '1.33.7', foo: '0.8.15'},
66
versions: {'0.8.15': {gitHead: 'bar'}, '1.33.7': {gitHead: 'HEAD'}},
77
};
8-
const unpublishedModule = {
8+
export const unpublishedModule = {
99
name: 'i-am-completely-unpublished',
1010
time: {'2.0.0': '2016-12-01T17:50:30.699Z', unpublished: {time: '2016-12-01T17:53:45.940Z'}},
1111
};
1212

1313
export const registry = REGISTRY_URL;
1414

15-
export function mock(packageName, matchHeader, basicAuth) {
16-
let req = nock(REGISTRY_URL);
17-
if (matchHeader) {
18-
req = req.matchHeader.apply(req, matchHeader);
19-
}
20-
req = req.get(`/${packageName.replace('/', '%2F')}`);
21-
if (basicAuth) {
22-
req = req.basicAuth(basicAuth);
23-
}
24-
return req;
25-
}
26-
27-
export function available(packageName, matchHeader, basicAuth) {
28-
return mock(packageName, matchHeader, basicAuth).reply(200, availableModule);
29-
}
30-
31-
export function unpublished(packageName, matchHeader, basicAuth) {
32-
return mock(packageName, matchHeader, basicAuth).reply(200, unpublishedModule);
15+
export function mock(packageName, headers) {
16+
return nock(REGISTRY_URL, headers).get(`/${packageName.replace('/', '%2F')}`);
3317
}

0 commit comments

Comments
 (0)