1 | const chai = require('chai');
|
2 | const chaiAsPromised = require('chai-as-promised');
|
3 | chai.use(chaiAsPromised);
|
4 | const expect = chai.expect;
|
5 | const sinon = require('sinon');
|
6 | const utils = require('../utils');
|
7 | const { prepareMockNetwork } = require('./prepareRunner');
|
8 |
|
9 | describe('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 |
|
25 | const buf = Buffer.alloc(1000001);
|
26 | getSourceAsBufferStub.withArgs(localFileUrl).returns(Promise.resolve(buf));
|
27 |
|
28 |
|
29 | const mockNetworkRules = prepareMockNetwork(localFileUrl);
|
30 |
|
31 |
|
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 |
|
38 | const buf = Buffer.from('{a: 1}');
|
39 | getSourceAsBufferStub.withArgs(localFileUrl).returns(Promise.resolve(buf));
|
40 |
|
41 |
|
42 | const mockNetworkRules = prepareMockNetwork(localFileUrl);
|
43 |
|
44 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
141 | const mockNetworkRules = prepareMockNetwork(localFileUrl);
|
142 |
|
143 |
|
144 | sinon.assert.calledOnce(getSourceAsBufferStub);
|
145 | return expect(mockNetworkRules).to.be.fulfilled;
|
146 | });
|
147 | });
|
148 | });
|