UNPKG

5.75 kBJavaScriptView Raw
1const chai = require('chai');
2const chaiAsPromised = require('chai-as-promised');
3chai.use(chaiAsPromised);
4const expect = chai.expect;
5const sinon = require('sinon');
6const utils = require('../utils');
7const { prepareMockNetwork } = require('./prepareRunner');
8
9describe('prepareRunner', () => {
10 describe('prepareMockNetwork', () => {
11 const localFileUrl = './rules.json';
12 const remoteFileUrl = 'https://s3/testim/files/rules.json';
13 let getSourceAsBufferStub;
14
15 beforeEach(() => {
16 getSourceAsBufferStub = sinon.stub(utils, 'getSourceAsBuffer');
17 });
18
19 afterEach(() => {
20 sinon.restore();
21 });
22
23 it('prepareMockNetwork rejected with - exceeded 1MB', () => {
24 // Arrange:
25 const buf = Buffer.alloc(1000001);
26 getSourceAsBufferStub.withArgs(localFileUrl).returns(Promise.resolve(buf));
27
28 // Act:
29 const mockNetworkRules = prepareMockNetwork(localFileUrl);
30
31 // Assert:
32 sinon.assert.calledOnce(getSourceAsBufferStub);
33 return expect(mockNetworkRules).to.be.rejectedWith('exceeded 1MB');
34 });
35
36 it('prepareMockNetwork rejected with - cannot be parsed', () => {
37 // Arrange:
38 const buf = Buffer.from('{a: 1}');
39 getSourceAsBufferStub.withArgs(localFileUrl).returns(Promise.resolve(buf));
40
41 // Act:
42 const mockNetworkRules = prepareMockNetwork(localFileUrl);
43
44 // Assert:
45 sinon.assert.calledOnce(getSourceAsBufferStub);
46 return expect(mockNetworkRules).to.be.rejectedWith('cannot be parsed');
47 });
48
49 it('prepareMockNetwork rejected with - is malformed', () => {
50 // Arrange:
51 const buf1 = Buffer.from('{"a": 1}');
52 const buf2 = Buffer.from(JSON.stringify({
53 version: '2.0.0',
54 entries: [],
55 }));
56 const buf3 = Buffer.from(Buffer.from(JSON.stringify({
57 version: '1.0.0',
58 entries: [{
59 request: {
60 url: '/test/*',
61 },
62 }],
63 })));
64 const buf4 = Buffer.from(Buffer.from(JSON.stringify({
65 version: '1.0.0',
66 entries: [{
67 request: {
68 url: '/test/*',
69 method: 'POSTTTTT',
70 },
71 response: {
72 status: 200,
73 },
74 }],
75 })));
76 const buf5 = Buffer.from(Buffer.from(JSON.stringify({
77 version: '1.0.0',
78 entries: [{
79 request: {
80 url: '/test/*',
81 },
82 response: {
83 status: 600,
84 },
85 }],
86 })));
87 const buf6 = Buffer.from(Buffer.from(JSON.stringify({
88 version: '1.0.0',
89 entries: [{
90 request: {
91 url: '/test/*',
92 },
93 response: {
94 status: 400.1,
95 },
96 }],
97 })));
98 getSourceAsBufferStub.withArgs(`${remoteFileUrl}.1`).returns(Promise.resolve(buf1));
99 getSourceAsBufferStub.withArgs(`${remoteFileUrl}.2`).returns(Promise.resolve(buf2));
100 getSourceAsBufferStub.withArgs(`${remoteFileUrl}.3`).returns(Promise.resolve(buf3));
101 getSourceAsBufferStub.withArgs(`${remoteFileUrl}.4`).returns(Promise.resolve(buf4));
102 getSourceAsBufferStub.withArgs(`${remoteFileUrl}.5`).returns(Promise.resolve(buf5));
103 getSourceAsBufferStub.withArgs(`${remoteFileUrl}.6`).returns(Promise.resolve(buf6));
104
105 // Act:
106 const mockNetworkRules1 = prepareMockNetwork(`${remoteFileUrl}.1`);
107 const mockNetworkRules2 = prepareMockNetwork(`${remoteFileUrl}.2`);
108 const mockNetworkRules3 = prepareMockNetwork(`${remoteFileUrl}.3`);
109 const mockNetworkRules4 = prepareMockNetwork(`${remoteFileUrl}.4`);
110 const mockNetworkRules5 = prepareMockNetwork(`${remoteFileUrl}.5`);
111 const mockNetworkRules6 = prepareMockNetwork(`${remoteFileUrl}.6`);
112
113 // Assert:
114 return Promise.all([
115 expect(mockNetworkRules1).to.be.rejectedWith('is malformed'),
116 expect(mockNetworkRules2).to.be.rejectedWith('is malformed'),
117 expect(mockNetworkRules3).to.be.rejectedWith('is malformed'),
118 expect(mockNetworkRules4).to.be.rejectedWith('is malformed'),
119 expect(mockNetworkRules5).to.be.rejectedWith('is malformed'),
120 expect(mockNetworkRules6).to.be.rejectedWith('is malformed'),
121 ]);
122 });
123
124 it('prepareMockNetwork is fine', () => {
125 // Arrange:
126 const buf = Buffer.from(JSON.stringify({
127 version: '1.0.0',
128 entries: [{
129 request: {
130 url: '/test/*',
131 method: 'POST',
132 },
133 response: {
134 status: 400,
135 },
136 }],
137 }));
138 getSourceAsBufferStub.withArgs(localFileUrl).returns(Promise.resolve(buf));
139
140 // Act:
141 const mockNetworkRules = prepareMockNetwork(localFileUrl);
142
143 // Assert:
144 sinon.assert.calledOnce(getSourceAsBufferStub);
145 return expect(mockNetworkRules).to.be.fulfilled;
146 });
147 });
148});