@equinor/fusion-framework-module-http 6.2.1 → 6.2.2
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/CHANGELOG.md +336 -310
- package/dist/esm/configurator.js.map +1 -1
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/lib/client/client-msal.js.map +1 -1
- package/dist/esm/lib/client/client.js.map +1 -1
- package/dist/esm/lib/operators/capitalize-request-method.operator.js +3 -1
- package/dist/esm/lib/operators/capitalize-request-method.operator.js.map +1 -1
- package/dist/esm/lib/operators/fetch-request.schema.js.map +1 -1
- package/dist/esm/lib/operators/http-request-handler.js.map +1 -1
- package/dist/esm/lib/operators/process-operators.js.map +1 -1
- package/dist/esm/lib/operators/request-operator-header.js.map +1 -1
- package/dist/esm/lib/operators/request-validation.operator.js.map +1 -1
- package/dist/esm/lib/selectors/blob-selector.js.map +1 -1
- package/dist/esm/lib/selectors/json-selector.js.map +1 -1
- package/dist/esm/module.js +1 -1
- package/dist/esm/module.js.map +1 -1
- package/dist/esm/provider.js +8 -3
- package/dist/esm/provider.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/lib/operators/process-operators.d.ts +1 -1
- package/dist/types/module.d.ts +3 -3
- package/dist/types/provider.d.ts +10 -3
- package/dist/types/version.d.ts +1 -1
- package/package.json +3 -3
- package/src/configurator.ts +115 -116
- package/src/errors.ts +24 -24
- package/src/lib/client/client-msal.ts +34 -34
- package/src/lib/client/client.ts +298 -298
- package/src/lib/client/types.ts +147 -145
- package/src/lib/operators/capitalize-request-method.operator.ts +11 -9
- package/src/lib/operators/fetch-request.schema.ts +70 -73
- package/src/lib/operators/http-request-handler.ts +11 -11
- package/src/lib/operators/process-operators.ts +88 -88
- package/src/lib/operators/request-operator-header.ts +6 -6
- package/src/lib/operators/request-validation.operator.ts +32 -32
- package/src/lib/operators/types.ts +44 -44
- package/src/lib/selectors/blob-selector.ts +24 -24
- package/src/lib/selectors/json-selector.ts +25 -25
- package/src/module.ts +73 -69
- package/src/provider.ts +141 -139
- package/src/version.ts +1 -1
- package/tests/HttpClient.test.ts +37 -37
- package/tests/operators.test.ts +67 -67
- package/vitest.config.ts +6 -6
package/tests/operators.test.ts
CHANGED
|
@@ -1,101 +1,101 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
2
2
|
import { describe, it, expect, vi } from 'vitest';
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
capitalizeRequestMethodOperator,
|
|
5
|
+
type ProcessOperator,
|
|
6
|
+
requestValidationOperator,
|
|
7
7
|
} from '../src/lib/operators';
|
|
8
|
-
import { FetchRequest } from '../src/lib';
|
|
8
|
+
import type { FetchRequest } from '../src/lib';
|
|
9
9
|
|
|
10
10
|
const executeOperator = <R, O extends ProcessOperator<FetchRequest, R>>(
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
operator: O,
|
|
12
|
+
request: Parameters<O>[0],
|
|
13
13
|
): Promise<ReturnType<O>> => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
return new Promise((resolve, rejects) => {
|
|
15
|
+
try {
|
|
16
|
+
resolve(operator(request) as ReturnType<O>);
|
|
17
|
+
} catch (error) {
|
|
18
|
+
rejects(error);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
describe('capitalizeRequestMethodOperator', () => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
it('should capitalize request method', async () => {
|
|
25
|
+
const consoleWarn = vi.spyOn(console, 'warn').mockImplementationOnce((msg) => {
|
|
26
|
+
expect(msg).toMatch(/RFC 7231/);
|
|
27
|
+
});
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
const operator = capitalizeRequestMethodOperator();
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
const result = executeOperator(operator, { method: 'get' });
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
expect(result).resolves.toMatchObject({ method: 'GET' });
|
|
34
|
+
expect(consoleWarn).toHaveBeenCalled();
|
|
35
|
+
});
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
describe('requestValidationOperator', () => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
/**
|
|
40
|
+
* A mock FetchRequest object used for testing purposes.
|
|
41
|
+
*/
|
|
42
|
+
const mockRequest: FetchRequest = Object.freeze({
|
|
43
|
+
method: 'GET',
|
|
44
|
+
uri: 'https://foo.bar',
|
|
45
|
+
path: 'api',
|
|
46
|
+
});
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
it('should pass validation for valid request parameters', async () => {
|
|
49
|
+
const operator = requestValidationOperator();
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
const result = executeOperator(operator, mockRequest);
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
it('should parse valid request parameters', async () => {
|
|
57
|
-
const operator = requestValidationOperator({ parse: true });
|
|
53
|
+
expect(result).resolves.toBeUndefined();
|
|
54
|
+
});
|
|
58
55
|
|
|
59
|
-
|
|
56
|
+
it('should parse valid request parameters', async () => {
|
|
57
|
+
const operator = requestValidationOperator({ parse: true });
|
|
60
58
|
|
|
61
|
-
|
|
62
|
-
});
|
|
59
|
+
const result = executeOperator(operator, mockRequest);
|
|
63
60
|
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
expect(result).resolves.toStrictEqual(mockRequest);
|
|
62
|
+
});
|
|
66
63
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
// @ts-expect-error
|
|
70
|
-
additionalProperty: 'some-value',
|
|
71
|
-
});
|
|
64
|
+
it('should allow additional properties when strict validation is disabled', async () => {
|
|
65
|
+
const operator = requestValidationOperator({ parse: true });
|
|
72
66
|
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
const result = executeOperator(operator, {
|
|
68
|
+
...mockRequest,
|
|
69
|
+
// @ts-expect-error
|
|
70
|
+
additionalProperty: 'some-value',
|
|
75
71
|
});
|
|
76
72
|
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
expect(result).resolves.toMatchObject(mockRequest);
|
|
74
|
+
expect(result).resolves.toHaveProperty('additionalProperty', 'some-value');
|
|
75
|
+
});
|
|
79
76
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// @ts-expect-error
|
|
83
|
-
additionalProperty: 'some-value',
|
|
84
|
-
method: 'GET',
|
|
85
|
-
});
|
|
77
|
+
it('should remove additional properties when strict validation is enabled', async () => {
|
|
78
|
+
const operator = requestValidationOperator({ parse: true, strict: true });
|
|
86
79
|
|
|
87
|
-
|
|
88
|
-
|
|
80
|
+
const result = executeOperator(operator, {
|
|
81
|
+
...mockRequest,
|
|
82
|
+
// @ts-expect-error
|
|
83
|
+
additionalProperty: 'some-value',
|
|
84
|
+
method: 'GET',
|
|
89
85
|
});
|
|
90
86
|
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
expect(result).resolves.toStrictEqual(mockRequest);
|
|
88
|
+
expect(result).resolves.not.toHaveProperty('additionalProperty');
|
|
89
|
+
});
|
|
93
90
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
method: 'GETS', // invalid method
|
|
97
|
-
});
|
|
91
|
+
it('should throw an error for invalid request parameters', async () => {
|
|
92
|
+
const operator = requestValidationOperator({ parse: true });
|
|
98
93
|
|
|
99
|
-
|
|
94
|
+
const result = executeOperator(operator, {
|
|
95
|
+
...mockRequest,
|
|
96
|
+
method: 'GETS', // invalid method
|
|
100
97
|
});
|
|
98
|
+
|
|
99
|
+
expect(result).rejects.toThrowError('RFC 2615');
|
|
100
|
+
});
|
|
101
101
|
});
|
package/vitest.config.ts
CHANGED
|
@@ -3,10 +3,10 @@ import { defineProject } from 'vitest/config';
|
|
|
3
3
|
import { name, version } from './package.json';
|
|
4
4
|
|
|
5
5
|
export default defineProject({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
test: {
|
|
7
|
+
// TODO remove after __tests__ are deleted!
|
|
8
|
+
include: ['tests/**'],
|
|
9
|
+
name: `${name}@${version}`,
|
|
10
|
+
environment: 'happy-dom',
|
|
11
|
+
},
|
|
12
12
|
});
|