mock-config-server 1.0.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +277 -213
  2. package/dist/bin/mock-config-server.d.ts +2 -2
  3. package/dist/bin/mock-config-server.js +67 -65
  4. package/dist/bin/resolveExportsFromSourceCode.d.ts +1 -1
  5. package/dist/bin/resolveExportsFromSourceCode.js +11 -11
  6. package/dist/bin/validateMockServerConfig/validateBaseUrl/validateBaseUrl.d.ts +1 -0
  7. package/dist/bin/validateMockServerConfig/validateBaseUrl/validateBaseUrl.js +12 -0
  8. package/dist/bin/validateMockServerConfig/validateCors/validateCors.d.ts +1 -0
  9. package/dist/bin/validateMockServerConfig/validateCors/validateCors.js +82 -0
  10. package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateGraphqlConfig.d.ts +1 -0
  11. package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateGraphqlConfig.js +48 -0
  12. package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateRoutes/validateRoutes.d.ts +2 -0
  13. package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateRoutes/validateRoutes.js +71 -0
  14. package/dist/bin/validateMockServerConfig/validateInterceptors/validateInterceptors.d.ts +1 -0
  15. package/dist/bin/validateMockServerConfig/validateInterceptors/validateInterceptors.js +21 -0
  16. package/dist/bin/validateMockServerConfig/validateMockServerConfig.d.ts +1 -0
  17. package/dist/bin/validateMockServerConfig/validateMockServerConfig.js +34 -0
  18. package/dist/bin/validateMockServerConfig/validatePort/validatePort.d.ts +1 -0
  19. package/dist/bin/validateMockServerConfig/validatePort/validatePort.js +9 -0
  20. package/dist/bin/validateMockServerConfig/validateRestConfig/validateRestConfig.d.ts +1 -0
  21. package/dist/bin/validateMockServerConfig/validateRestConfig/validateRestConfig.js +52 -0
  22. package/dist/bin/validateMockServerConfig/validateRestConfig/validateRoutes/validateRoutes.d.ts +2 -0
  23. package/dist/bin/validateMockServerConfig/validateRestConfig/validateRoutes/validateRoutes.js +104 -0
  24. package/dist/bin/validateMockServerConfig/validateStaticPath/validateStaticPath.d.ts +1 -0
  25. package/dist/bin/validateMockServerConfig/validateStaticPath/validateStaticPath.js +44 -0
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.js +17 -17
  28. package/dist/src/configs/isEntitiesEqual/isEntityValuesEqual.d.ts +1 -2
  29. package/dist/src/configs/isEntitiesEqual/isEntityValuesEqual.js +29 -29
  30. package/dist/src/cors/corsMiddleware/corsMiddleware.d.ts +3 -3
  31. package/dist/src/cors/corsMiddleware/corsMiddleware.js +44 -32
  32. package/dist/src/cors/getOrigins/getAllowedOrigins.d.ts +2 -2
  33. package/dist/src/cors/getOrigins/getAllowedOrigins.js +13 -16
  34. package/dist/src/cors/noCorsMiddleware/noCorsMiddleware.d.ts +2 -2
  35. package/dist/src/cors/noCorsMiddleware/noCorsMiddleware.js +20 -15
  36. package/dist/src/graphql/createGraphQLRoutes/createGraphQLRoutes.d.ts +3 -0
  37. package/dist/src/graphql/createGraphQLRoutes/createGraphQLRoutes.js +73 -0
  38. package/dist/src/graphql/getGraphQLInput/getGraphQLInput.d.ts +3 -0
  39. package/dist/src/graphql/getGraphQLInput/getGraphQLInput.js +21 -0
  40. package/dist/src/graphql/parseGraphQLRequest/parseGraphQLRequest.d.ts +3 -0
  41. package/dist/src/graphql/parseGraphQLRequest/parseGraphQLRequest.js +12 -0
  42. package/dist/src/graphql/parseQuery/parseQuery.d.ts +7 -0
  43. package/dist/src/graphql/parseQuery/parseQuery.js +21 -0
  44. package/dist/src/graphql/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.d.ts +2 -0
  45. package/dist/src/graphql/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +28 -0
  46. package/dist/src/index.d.ts +3 -3
  47. package/dist/src/index.js +19 -19
  48. package/dist/src/notFound/notFoundMiddleware.d.ts +8 -0
  49. package/dist/src/notFound/notFoundMiddleware.js +47 -0
  50. package/dist/src/notFound/urlSuggestions/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.d.ts +6 -0
  51. package/dist/src/notFound/urlSuggestions/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.js +18 -0
  52. package/dist/src/notFound/urlSuggestions/getGraphqlUrlSuggestions/index.d.ts +1 -0
  53. package/dist/src/notFound/urlSuggestions/getGraphqlUrlSuggestions/index.js +17 -0
  54. package/dist/src/notFound/urlSuggestions/getLevenshteinDistance/getLevenshteinDistance.d.ts +1 -0
  55. package/dist/src/notFound/urlSuggestions/getLevenshteinDistance/getLevenshteinDistance.js +80 -0
  56. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/getRestUrlSuggestions.d.ts +6 -0
  57. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/getRestUrlSuggestions.js +34 -0
  58. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.d.ts +1 -0
  59. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.js +7 -0
  60. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.d.ts +1 -0
  61. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.js +5 -0
  62. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/helpers/index.d.ts +2 -0
  63. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/helpers/index.js +18 -0
  64. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/index.d.ts +1 -0
  65. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/index.js +17 -0
  66. package/dist/src/notFound/urlSuggestions/index.d.ts +2 -0
  67. package/dist/src/notFound/urlSuggestions/index.js +18 -0
  68. package/dist/src/rest/createRestRoutes/createRestRoutes.d.ts +3 -0
  69. package/dist/src/{routes/createRoutes/createRoutes.js → rest/createRestRoutes/createRestRoutes.js} +41 -43
  70. package/dist/src/rest/prepareRestRequestConfigs/prepareRestRequestConfigs.d.ts +2 -0
  71. package/dist/src/{configs/prepareRequestConfigs/prepareRequestConfigs.js → rest/prepareRestRequestConfigs/prepareRestRequestConfigs.js} +30 -30
  72. package/dist/src/routes/callRequestInterceptors/callRequestInterceptors.d.ts +12 -12
  73. package/dist/src/routes/callRequestInterceptors/callRequestInterceptors.js +13 -13
  74. package/dist/src/routes/callResponseInterceptors/callResponseInterceptors.d.ts +14 -14
  75. package/dist/src/routes/callResponseInterceptors/callResponseInterceptors.js +31 -31
  76. package/dist/src/server/createMockServer/createMockServer.d.ts +3 -3
  77. package/dist/src/server/createMockServer/createMockServer.js +48 -35
  78. package/dist/src/server/startMockServer/startMockServer.d.ts +2 -2
  79. package/dist/src/server/startMockServer/startMockServer.js +17 -13
  80. package/dist/src/static/staticMiddleware/staticMiddleware.d.ts +3 -3
  81. package/dist/src/static/staticMiddleware/staticMiddleware.js +30 -29
  82. package/dist/src/utils/constants/appPath.d.ts +1 -1
  83. package/dist/src/utils/constants/appPath.js +4 -4
  84. package/dist/src/utils/constants/default.d.ts +11 -10
  85. package/dist/src/utils/constants/default.js +14 -13
  86. package/dist/src/utils/constants/index.d.ts +2 -2
  87. package/dist/src/utils/constants/index.js +18 -18
  88. package/dist/src/utils/helpers/index.d.ts +3 -2
  89. package/dist/src/utils/helpers/index.js +19 -18
  90. package/dist/src/utils/helpers/isPlainObject.d.ts +1 -1
  91. package/dist/src/utils/helpers/isPlainObject.js +5 -5
  92. package/dist/src/utils/helpers/sleep.d.ts +1 -1
  93. package/dist/src/utils/helpers/sleep.js +7 -7
  94. package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.d.ts +1 -0
  95. package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.js +6 -0
  96. package/dist/src/utils/helpers/url/index.d.ts +2 -0
  97. package/dist/src/utils/helpers/url/index.js +18 -0
  98. package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.d.ts +1 -0
  99. package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.js +5 -0
  100. package/dist/src/utils/types/configs.d.ts +63 -34
  101. package/dist/src/utils/types/configs.js +2 -2
  102. package/dist/src/utils/types/graphql.d.ts +5 -0
  103. package/dist/src/utils/types/graphql.js +2 -0
  104. package/dist/src/utils/types/index.d.ts +4 -3
  105. package/dist/src/utils/types/index.js +20 -19
  106. package/dist/src/utils/types/interceptors.d.ts +15 -15
  107. package/dist/src/utils/types/interceptors.js +2 -2
  108. package/dist/src/utils/types/server.d.ts +32 -24
  109. package/dist/src/utils/types/server.js +2 -2
  110. package/package.json +102 -99
  111. package/dist/jest.config.d.ts +0 -3
  112. package/dist/jest.config.js +0 -7
  113. package/dist/src/configs/isEntitiesEqual/isEntityValuesEqual.test.d.ts +0 -1
  114. package/dist/src/configs/isEntitiesEqual/isEntityValuesEqual.test.js +0 -25
  115. package/dist/src/configs/prepareRequestConfigs/prepareRequestConfigs.d.ts +0 -2
  116. package/dist/src/configs/prepareRequestConfigs/prepareRequestConfigs.test.d.ts +0 -1
  117. package/dist/src/configs/prepareRequestConfigs/prepareRequestConfigs.test.js +0 -151
  118. package/dist/src/cors/corsMiddleware/corsMiddleware.test.d.ts +0 -1
  119. package/dist/src/cors/corsMiddleware/corsMiddleware.test.js +0 -86
  120. package/dist/src/cors/getOrigins/getAllowedOrigins.test.d.ts +0 -1
  121. package/dist/src/cors/getOrigins/getAllowedOrigins.test.js +0 -24
  122. package/dist/src/cors/noCorsMiddleware/noCorsMiddleware.test.d.ts +0 -1
  123. package/dist/src/cors/noCorsMiddleware/noCorsMiddleware.test.js +0 -22
  124. package/dist/src/routes/callRequestInterceptors/callRequestInterceptors.test.d.ts +0 -1
  125. package/dist/src/routes/callRequestInterceptors/callRequestInterceptors.test.js +0 -28
  126. package/dist/src/routes/callResponseInterceptors/callResponseInterceptors.test.d.ts +0 -1
  127. package/dist/src/routes/callResponseInterceptors/callResponseInterceptors.test.js +0 -36
  128. package/dist/src/routes/createRoutes/createRoutes.d.ts +0 -3
  129. package/dist/src/routes/createRoutes/createRoutes.test.d.ts +0 -1
  130. package/dist/src/routes/createRoutes/createRoutes.test.js +0 -276
@@ -1,276 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const express_1 = __importDefault(require("express"));
7
- const supertest_1 = __importDefault(require("supertest"));
8
- const createRoutes_1 = require("./createRoutes");
9
- describe('createRoutes', () => {
10
- const createServer = (mockServerConfig) => {
11
- const server = (0, express_1.default)();
12
- const routerBase = express_1.default.Router();
13
- const routerWithRoutes = (0, createRoutes_1.createRoutes)(routerBase, mockServerConfig);
14
- server.use(express_1.default.json());
15
- server.use(mockServerConfig.baseUrl ?? '/', routerWithRoutes);
16
- return server;
17
- };
18
- test('Should match config by entities "includes" behavior', async () => {
19
- const server = createServer({
20
- configs: [
21
- {
22
- path: '/users',
23
- method: 'get',
24
- routes: [
25
- {
26
- entities: {
27
- headers: { key1: 'value1', key2: 'value2' },
28
- query: { key1: 'value1' }
29
- },
30
- data: { name: 'John', surname: 'Doe' }
31
- }
32
- ]
33
- }
34
- ]
35
- });
36
- const response = await (0, supertest_1.default)(server)
37
- .get('/users')
38
- .set({ key1: 'value1', key2: 'value2' })
39
- .query({ key1: 'value1', key2: 'value2' });
40
- expect(response.statusCode).toBe(200);
41
- expect(response.body).toStrictEqual({ name: 'John', surname: 'Doe' });
42
- });
43
- test('Should give priority to more specific route config', async () => {
44
- const server = createServer({
45
- configs: [
46
- {
47
- path: '/users',
48
- method: 'get',
49
- routes: [
50
- {
51
- entities: {
52
- headers: { key1: 'value1', key2: 'value2' },
53
- query: { key1: 'value1' }
54
- },
55
- data: { name: 'John', surname: 'Doe' }
56
- },
57
- {
58
- entities: {
59
- headers: { key1: 'value1', key2: 'value2' },
60
- query: { key1: 'value1', key2: 'value2' }
61
- },
62
- data: { name: 'John', surname: 'Smith' }
63
- }
64
- ]
65
- }
66
- ]
67
- });
68
- const response = await (0, supertest_1.default)(server)
69
- .get('/users')
70
- .set({ key1: 'value1', key2: 'value2', key3: 'value3' })
71
- .query({ key1: 'value1', key2: 'value2', key3: 'value3' });
72
- expect(response.statusCode).toBe(200);
73
- expect(response.body).toStrictEqual({ name: 'John', surname: 'Smith' });
74
- });
75
- test('Should return 404 and description text for no matched request entities', async () => {
76
- const server = createServer({
77
- configs: [
78
- {
79
- path: '/users',
80
- method: 'get',
81
- routes: [
82
- {
83
- entities: {
84
- headers: { key1: 'value1' }
85
- },
86
- data: { name: 'John', surname: 'Doe' }
87
- }
88
- ]
89
- }
90
- ]
91
- });
92
- const response = await (0, supertest_1.default)(server).get('/users').set({ key2: 'value2' });
93
- expect(response.statusCode).toBe(404);
94
- expect(response.body).toBe('No data for GET:/users');
95
- });
96
- test('Should compare non plain object body by full equal behavior', async () => {
97
- const server = createServer({
98
- configs: [
99
- {
100
- path: '/users',
101
- method: 'post',
102
- routes: [
103
- {
104
- entities: {
105
- body: [
106
- {
107
- key1: 'value1',
108
- key2: { nestedKey1: 'nestedValue1' }
109
- }
110
- ]
111
- },
112
- data: { name: 'John', surname: 'Doe' }
113
- }
114
- ]
115
- }
116
- ]
117
- });
118
- const successResponse = await (0, supertest_1.default)(server)
119
- .post('/users')
120
- .set('Content-Type', 'application/json')
121
- .send([{ key1: 'value1', key2: { nestedKey1: 'nestedValue1' } }]);
122
- expect(successResponse.statusCode).toBe(200);
123
- expect(successResponse.body).toStrictEqual({ name: 'John', surname: 'Doe' });
124
- const failedResponse = await (0, supertest_1.default)(server)
125
- .post('/users')
126
- .set('Content-Type', 'application/json')
127
- .send([{ key1: 'value1', key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' } }]);
128
- expect(failedResponse.statusCode).toBe(404);
129
- expect(failedResponse.body).toBe('No data for POST:/users');
130
- });
131
- test('Should compare plain object body by "includes" behavior', async () => {
132
- const server = createServer({
133
- configs: [
134
- {
135
- path: '/users',
136
- method: 'post',
137
- routes: [
138
- {
139
- entities: {
140
- body: {
141
- key1: 'value1',
142
- key2: { nestedKey1: 'nestedValue1' }
143
- }
144
- },
145
- data: { name: 'John', surname: 'Doe' }
146
- }
147
- ]
148
- }
149
- ]
150
- });
151
- const response = await (0, supertest_1.default)(server)
152
- .post('/users')
153
- .set('Content-Type', 'application/json')
154
- .send({ key1: 'value1', key2: { nestedKey1: 'nestedValue1', nestedKey2: 'nestedValue2' } });
155
- expect(response.statusCode).toBe(200);
156
- expect(response.body).toStrictEqual({ name: 'John', surname: 'Doe' });
157
- });
158
- test('Should call request interceptors in order: request -> server', async () => {
159
- const requestInterceptor = jest.fn();
160
- const serverInterceptor = jest.fn();
161
- const server = createServer({
162
- configs: [
163
- {
164
- path: '/users',
165
- method: 'post',
166
- routes: [
167
- {
168
- entities: {
169
- body: {
170
- key1: 'value1',
171
- key2: 'value2'
172
- }
173
- },
174
- data: { name: 'John', surname: 'Doe' }
175
- }
176
- ],
177
- interceptors: { request: requestInterceptor }
178
- },
179
- {
180
- path: '/settings',
181
- method: 'post',
182
- routes: [
183
- {
184
- entities: {
185
- body: {
186
- key1: 'value1',
187
- key2: 'value2'
188
- }
189
- },
190
- data: { name: 'John', surname: 'Smith' }
191
- }
192
- ]
193
- }
194
- ],
195
- interceptors: { request: serverInterceptor }
196
- });
197
- await (0, supertest_1.default)(server)
198
- .post('/users')
199
- .set('Content-Type', 'application/json')
200
- .send({ key1: 'value1', key2: 'value2' });
201
- expect(requestInterceptor.mock.calls.length).toBe(1);
202
- expect(serverInterceptor.mock.calls.length).toBe(1);
203
- expect(requestInterceptor.mock.invocationCallOrder[0]).toBeLessThan(serverInterceptor.mock.invocationCallOrder[0]);
204
- await (0, supertest_1.default)(server)
205
- .post('/settings')
206
- .set('Content-Type', 'application/json')
207
- .send({ key1: 'value1', key2: 'value2' });
208
- expect(requestInterceptor.mock.calls.length).toBe(1);
209
- expect(serverInterceptor.mock.calls.length).toBe(2);
210
- });
211
- test('Should call response interceptors in order: route -> request -> server', async () => {
212
- const routeInterceptor = jest.fn();
213
- const requestInterceptor = jest.fn();
214
- const serverInterceptor = jest.fn();
215
- const server = createServer({
216
- configs: [
217
- {
218
- path: '/users',
219
- method: 'post',
220
- routes: [
221
- {
222
- entities: {
223
- body: {
224
- key1: 'value1',
225
- key2: 'value2'
226
- }
227
- },
228
- data: { name: 'John', surname: 'Doe' },
229
- interceptors: { response: routeInterceptor }
230
- }
231
- ],
232
- interceptors: { response: requestInterceptor }
233
- },
234
- {
235
- path: '/settings',
236
- method: 'post',
237
- routes: [
238
- {
239
- entities: {
240
- body: {
241
- key1: 'value1',
242
- key2: 'value2'
243
- }
244
- },
245
- data: { name: 'John', surname: 'Smith' }
246
- }
247
- ]
248
- }
249
- ],
250
- interceptors: { response: serverInterceptor }
251
- });
252
- await (0, supertest_1.default)(server)
253
- .post('/users')
254
- .set('Content-Type', 'application/json')
255
- .send({ key1: 'value1', key2: 'value2' });
256
- expect(routeInterceptor.mock.calls.length).toBe(1);
257
- expect(requestInterceptor.mock.calls.length).toBe(1);
258
- expect(serverInterceptor.mock.calls.length).toBe(1);
259
- expect(routeInterceptor.mock.invocationCallOrder[0]).toBeLessThan(requestInterceptor.mock.invocationCallOrder[0]);
260
- expect(requestInterceptor.mock.invocationCallOrder[0]).toBeLessThan(serverInterceptor.mock.invocationCallOrder[0]);
261
- await (0, supertest_1.default)(server)
262
- .post('/settings')
263
- .set('Content-Type', 'application/json')
264
- .send({ key1: 'value1', key2: 'value2' });
265
- expect(routeInterceptor.mock.calls.length).toBe(1);
266
- expect(requestInterceptor.mock.calls.length).toBe(1);
267
- expect(serverInterceptor.mock.calls.length).toBe(2);
268
- await (0, supertest_1.default)(server)
269
- .post('/messages')
270
- .set('Content-Type', 'application/json')
271
- .send({ key1: 'value1', key2: 'value2' });
272
- expect(routeInterceptor.mock.calls.length).toBe(1);
273
- expect(requestInterceptor.mock.calls.length).toBe(1);
274
- expect(serverInterceptor.mock.calls.length).toBe(2);
275
- });
276
- });