@natlibfi/fixugen-http-server 2.0.0 → 2.0.1-alpha.1
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.
- package/README.md +6 -3
- package/dist/index.js +5 -3
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
- package/src/index.js +6 -8
package/README.md
CHANGED
|
@@ -9,11 +9,11 @@ Uses [fixugen's](https://www.npmjs.com/package/@natlibfi/fixugen) **useMetadataF
|
|
|
9
9
|
# Usage
|
|
10
10
|
```js
|
|
11
11
|
import generateTests from '@natlibfi/fixugen-http-server';
|
|
12
|
-
import startApp from './app';
|
|
12
|
+
import startApp from './app.js';
|
|
13
13
|
|
|
14
14
|
generateTests({
|
|
15
15
|
callback: () => startApp(),
|
|
16
|
-
path: [
|
|
16
|
+
path: [import.meta.dirname, '..', '..', 'test-fixtures', 'app']
|
|
17
17
|
});
|
|
18
18
|
|
|
19
19
|
```
|
|
@@ -41,12 +41,15 @@ generateTests({
|
|
|
41
41
|
path: [__dirname, '..', '..', 'test-fixtures', 'app']
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
// Note: version > 2 requires response as input for formatResponse instead of headers and payload
|
|
45
|
+
function formatResponse(response) {
|
|
46
|
+
const payload = await response.text(); // or which ever method is used for reading payload
|
|
45
47
|
const newHeaders = doSomethingWithHeaders();
|
|
46
48
|
return { payload, headers: newHeaders };
|
|
47
49
|
}
|
|
48
50
|
```
|
|
49
51
|
|
|
52
|
+
|
|
50
53
|
Where `[0-9]+` denotes the index number of the fixture (Requests and responses are mocked in that order).
|
|
51
54
|
|
|
52
55
|
## License and copyright
|
package/dist/index.js
CHANGED
|
@@ -61,18 +61,20 @@ export default ({ path, recurse, formatResponse = formatResponseDefault, callbac
|
|
|
61
61
|
debug("Handling response");
|
|
62
62
|
const { headers, payload } = await formatResponse(response2);
|
|
63
63
|
const expectedResponsePayload = responseFixtures[index];
|
|
64
|
-
debugDev(
|
|
65
|
-
debugDev(status2);
|
|
66
|
-
debugDev(response2.status);
|
|
64
|
+
debugDev(`status: ${status2} vs response.status: ${response2.status}`);
|
|
67
65
|
assert.equal(response2.status, status2);
|
|
66
|
+
debugDev(`Status OK`);
|
|
68
67
|
debugDev("responseHeaders");
|
|
69
68
|
debugDev(responseHeaders2);
|
|
69
|
+
debugDev(headers);
|
|
70
70
|
Object.entries(responseHeaders2).forEach(([key, value]) => {
|
|
71
71
|
assert.equal(headers.get(key), value);
|
|
72
72
|
});
|
|
73
|
+
debugDev(`Headers OK`);
|
|
73
74
|
if (expectedResponsePayload) {
|
|
74
75
|
debugDev("expectedResponsePayload");
|
|
75
76
|
debugDev(expectedResponsePayload);
|
|
77
|
+
debugDev("actual payload");
|
|
76
78
|
debugDev(payload);
|
|
77
79
|
assert.equal(payload, expectedResponsePayload);
|
|
78
80
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.js"],
|
|
4
|
-
"sourcesContent": ["import assert from 'node:assert';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport createDebugLogger from 'debug';\nimport {promisify} from 'util';\n\nexport default ({path, recurse, formatResponse = formatResponseDefault, callback: createApp, hooks = {}}) => {\n const setTimeoutPromise = promisify(setTimeout); // eslint-disable-line\n const debug = createDebugLogger('@natlibfi/fixugen-http-server');\n const debugDev = createDebugLogger('@natlibfi/fixugen-http-server:dev');\n\n generateTests({\n path, recurse,\n callback: httpCallback,\n useMetadataFile: true,\n fixura: {\n failWhenNotFound: false\n },\n hooks: {\n ...hooks\n }\n });\n\n async function httpCallback({getFixtures, requests, ...options}) {\n const requestFixtures = getFixtures({\n components: [/^request[0-9]+\\..*$/u],\n reader: READERS.TEXT\n });\n\n const responseFixtures = getFixtures({\n components: [/^response[0-9]+\\..*$/u],\n reader: READERS.TEXT\n });\n\n const server = await createApp({getFixtures, ...options, requests});\n await iterate(requests, server);\n //await setTimeoutPromise(5000);\n\n return;\n\n
|
|
5
|
-
"mappings": "AAAA,OAAO,YAAY;AACnB,SAAQ,eAAc;AACtB,OAAO,mBAAmB;AAC1B,OAAO,uBAAuB;AAC9B,SAAQ,iBAAgB;AAExB,eAAe,CAAC,EAAC,MAAM,SAAS,iBAAiB,uBAAuB,UAAU,WAAW,QAAQ,CAAC,EAAC,MAAM;AAC3G,QAAM,oBAAoB,UAAU,UAAU;AAC9C,QAAM,QAAQ,kBAAkB,+BAA+B;AAC/D,QAAM,WAAW,kBAAkB,mCAAmC;AAEtE,gBAAc;AAAA,IACZ;AAAA,IAAM;AAAA,IACN,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,kBAAkB;AAAA,IACpB;AAAA,IACA,OAAO;AAAA,MACL,GAAG;AAAA,IACL;AAAA,EACF,CAAC;AAED,iBAAe,aAAa,EAAC,aAAa,UAAU,GAAG,QAAO,GAAG;AAC/D,UAAM,kBAAkB,YAAY;AAAA,MAClC,YAAY,CAAC,sBAAsB;AAAA,MACnC,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAED,UAAM,mBAAmB,YAAY;AAAA,MACnC,YAAY,CAAC,uBAAuB;AAAA,MACpC,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAED,UAAM,SAAS,MAAM,UAAU,EAAC,aAAa,GAAG,SAAS,SAAQ,CAAC;AAClE,UAAM,QAAQ,UAAU,MAAM;AAG9B;
|
|
4
|
+
"sourcesContent": ["import assert from 'node:assert';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport createDebugLogger from 'debug';\nimport {promisify} from 'util';\n\nexport default ({path, recurse, formatResponse = formatResponseDefault, callback: createApp, hooks = {}}) => {\n const setTimeoutPromise = promisify(setTimeout); // eslint-disable-line\n const debug = createDebugLogger('@natlibfi/fixugen-http-server');\n const debugDev = createDebugLogger('@natlibfi/fixugen-http-server:dev');\n\n generateTests({\n path, recurse,\n callback: httpCallback,\n useMetadataFile: true,\n fixura: {\n failWhenNotFound: false\n },\n hooks: {\n ...hooks\n }\n });\n\n async function httpCallback({getFixtures, requests, ...options}) {\n const requestFixtures = getFixtures({\n components: [/^request[0-9]+\\..*$/u],\n reader: READERS.TEXT\n });\n\n const responseFixtures = getFixtures({\n components: [/^response[0-9]+\\..*$/u],\n reader: READERS.TEXT\n });\n\n const server = await createApp({getFixtures, ...options, requests});\n await iterate(requests, server);\n //await setTimeoutPromise(5000);\n\n return;\n\n async function iterate(testRequests, server, index = 0) {\n const [testRequest, ...rest] = testRequests;\n\n if (testRequest === undefined) {\n await server.close();\n debug('Server closed');\n return;\n }\n debug('Iteration', index);\n debugDev(testRequest);\n\n const {\n method, path, status,\n requestParams = {}, requestHeaders = {}, responseHeaders = {}\n } = testRequest;\n\n const requestPayload = requestFixtures[index];\n const requestPath = path || '/';\n const requestMethod = method.toLowerCase();\n const parsedParams = new URLSearchParams(requestParams).toString();\n const url = `http://localhost:1337${requestPath}${parsedParams === '' ? '' : '?' + parsedParams}`;\n debugDev(url);\n const response = await fetch(url, {method: requestMethod, headers: requestHeaders, body: requestPayload});\n await handleResponse(response, status, responseHeaders);\n return iterate(rest, server, index + 1);\n\n\n async function handleResponse(response, status, responseHeaders) {\n debug('Handling response');\n // Note: formatResponse requires response itself as input\n const {headers, payload} = await formatResponse(response);\n const expectedResponsePayload = responseFixtures[index];\n debugDev(`status: ${status} vs response.status: ${response.status}`);\n assert.equal(response.status, status);\n debugDev(`Status OK`);\n debugDev('responseHeaders');\n debugDev(responseHeaders);\n debugDev(headers);\n Object.entries(responseHeaders).forEach(([key, value]) => {\n assert.equal(headers.get(key), value);\n });\n debugDev(`Headers OK`);\n\n if (expectedResponsePayload) {\n debugDev('expectedResponsePayload');\n debugDev(expectedResponsePayload);\n debugDev('actual payload');\n debugDev(payload);\n assert.equal(payload, expectedResponsePayload);\n }\n\n debug('Response handling done');\n }\n }\n }\n};\n\nasync function formatResponseDefault(response) {\n const payload = await response.text();\n const headers = response.headers;\n return {headers, payload};\n}\n\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["server", "path", "response", "status", "responseHeaders"]
|
|
7
7
|
}
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -38,7 +38,6 @@ export default ({path, recurse, formatResponse = formatResponseDefault, callback
|
|
|
38
38
|
|
|
39
39
|
return;
|
|
40
40
|
|
|
41
|
-
// eslint-disable-next-line
|
|
42
41
|
async function iterate(testRequests, server, index = 0) {
|
|
43
42
|
const [testRequest, ...rest] = testRequests;
|
|
44
43
|
|
|
@@ -62,31 +61,30 @@ export default ({path, recurse, formatResponse = formatResponseDefault, callback
|
|
|
62
61
|
const url = `http://localhost:1337${requestPath}${parsedParams === '' ? '' : '?' + parsedParams}`;
|
|
63
62
|
debugDev(url);
|
|
64
63
|
const response = await fetch(url, {method: requestMethod, headers: requestHeaders, body: requestPayload});
|
|
65
|
-
|
|
66
64
|
await handleResponse(response, status, responseHeaders);
|
|
67
65
|
return iterate(rest, server, index + 1);
|
|
68
66
|
|
|
69
67
|
|
|
70
68
|
async function handleResponse(response, status, responseHeaders) {
|
|
71
69
|
debug('Handling response');
|
|
70
|
+
// Note: formatResponse requires response itself as input
|
|
72
71
|
const {headers, payload} = await formatResponse(response);
|
|
73
72
|
const expectedResponsePayload = responseFixtures[index];
|
|
74
|
-
debugDev(
|
|
75
|
-
debugDev(status);
|
|
76
|
-
debugDev(response.status);
|
|
73
|
+
debugDev(`status: ${status} vs response.status: ${response.status}`);
|
|
77
74
|
assert.equal(response.status, status);
|
|
78
|
-
|
|
75
|
+
debugDev(`Status OK`);
|
|
79
76
|
debugDev('responseHeaders');
|
|
80
77
|
debugDev(responseHeaders);
|
|
81
|
-
|
|
82
|
-
|
|
78
|
+
debugDev(headers);
|
|
83
79
|
Object.entries(responseHeaders).forEach(([key, value]) => {
|
|
84
80
|
assert.equal(headers.get(key), value);
|
|
85
81
|
});
|
|
82
|
+
debugDev(`Headers OK`);
|
|
86
83
|
|
|
87
84
|
if (expectedResponsePayload) {
|
|
88
85
|
debugDev('expectedResponsePayload');
|
|
89
86
|
debugDev(expectedResponsePayload);
|
|
87
|
+
debugDev('actual payload');
|
|
90
88
|
debugDev(payload);
|
|
91
89
|
assert.equal(payload, expectedResponsePayload);
|
|
92
90
|
}
|