@aep-foundation/conformance 0.1.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.
- package/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.md +72 -0
- package/dist/index.cjs +473 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +110 -0
- package/dist/index.d.ts +110 -0
- package/dist/index.js +406 -0
- package/dist/index.js.map +1 -0
- package/fixtures/aep-specs/manifest.json +61 -0
- package/fixtures/aep-specs/schemas/README.md +57 -0
- package/fixtures/aep-specs/schemas/api-key-grant-response.schema.json +32 -0
- package/fixtures/aep-specs/schemas/basic-grant-response.schema.json +36 -0
- package/fixtures/aep-specs/schemas/client-assertion-claims.schema.json +36 -0
- package/fixtures/aep-specs/schemas/enroll-request.schema.json +22 -0
- package/fixtures/aep-specs/schemas/enroll-response.schema.json +24 -0
- package/fixtures/aep-specs/schemas/grant-request.schema.json +20 -0
- package/fixtures/aep-specs/schemas/idempotency-metadata.schema.json +26 -0
- package/fixtures/aep-specs/schemas/inspect-document.schema.json +136 -0
- package/fixtures/aep-specs/schemas/oauth-bearer-grant-response.schema.json +32 -0
- package/fixtures/aep-specs/schemas/platform-agent-identity-list-response.schema.json +78 -0
- package/fixtures/aep-specs/schemas/platform-agent-identity.schema.json +60 -0
- package/fixtures/aep-specs/schemas/platform-discovery.schema.json +107 -0
- package/fixtures/aep-specs/schemas/platform-lifecycle-request.schema.json +14 -0
- package/fixtures/aep-specs/schemas/platform-lifecycle-response.schema.json +60 -0
- package/fixtures/aep-specs/schemas/platform-provision-request.schema.json +18 -0
- package/fixtures/aep-specs/schemas/platform-sign-request.schema.json +26 -0
- package/fixtures/aep-specs/schemas/platform-sign-response.schema.json +34 -0
- package/fixtures/aep-specs/schemas/platform-verification-request.schema.json +22 -0
- package/fixtures/aep-specs/schemas/platform-verification-response.schema.json +37 -0
- package/fixtures/aep-specs/schemas/problem.schema.json +25 -0
- package/fixtures/aep-specs/schemas/revoke-request.schema.json +32 -0
- package/fixtures/aep-specs/schemas/revoke-response.schema.json +7 -0
- package/fixtures/aep-specs/schemas/status-response.schema.json +28 -0
- package/fixtures/aep-specs/test-vectors/README.md +100 -0
- package/fixtures/aep-specs/test-vectors/client-assertion/enroll-claims.json +26 -0
- package/fixtures/aep-specs/test-vectors/credentials/api-key/grant-response.json +20 -0
- package/fixtures/aep-specs/test-vectors/credentials/basic/grant-response.json +21 -0
- package/fixtures/aep-specs/test-vectors/credentials/oauth-bearer/grant-response.json +20 -0
- package/fixtures/aep-specs/test-vectors/enroll/request-minimal.json +24 -0
- package/fixtures/aep-specs/test-vectors/enroll/response-active.json +19 -0
- package/fixtures/aep-specs/test-vectors/errors/not-recognized-problem.json +22 -0
- package/fixtures/aep-specs/test-vectors/grant-revoke/grant-request-oauth-bearer.json +25 -0
- package/fixtures/aep-specs/test-vectors/grant-revoke/revoke-request-all-grant-types.json +23 -0
- package/fixtures/aep-specs/test-vectors/grant-revoke/revoke-request-oauth-bearer.json +25 -0
- package/fixtures/aep-specs/test-vectors/grant-revoke/revoke-response-empty.json +17 -0
- package/fixtures/aep-specs/test-vectors/idempotency/enroll-conflict.json +25 -0
- package/fixtures/aep-specs/test-vectors/inspect/minimal-http.json +45 -0
- package/fixtures/aep-specs/test-vectors/platform/discovery.json +36 -0
- package/fixtures/aep-specs/test-vectors/platform/lifecycle-request.json +13 -0
- package/fixtures/aep-specs/test-vectors/platform/lifecycle-response.json +21 -0
- package/fixtures/aep-specs/test-vectors/platform/list-response.json +35 -0
- package/fixtures/aep-specs/test-vectors/platform/provision-request.json +14 -0
- package/fixtures/aep-specs/test-vectors/platform/provision-response-distinct-services.json +44 -0
- package/fixtures/aep-specs/test-vectors/platform/provision-response.json +21 -0
- package/fixtures/aep-specs/test-vectors/platform/sign-request.json +16 -0
- package/fixtures/aep-specs/test-vectors/platform/sign-response.json +18 -0
- package/fixtures/aep-specs/test-vectors/platform/verification-request.json +15 -0
- package/fixtures/aep-specs/test-vectors/platform/verification-response-recognized.json +19 -0
- package/fixtures/aep-specs/test-vectors/platform/verification-response-unrecognized.json +15 -0
- package/fixtures/aep-specs/test-vectors/status/response-active.json +22 -0
- package/package.json +56 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# @aep-foundation/conformance
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1](https://github.com/aep-foundation/aep-node/pull/1) [`3d4713e`](https://github.com/aep-foundation/aep-node/commit/3d4713e2a9cf85478a415192c7c0abc90c374073) Thanks [@nkavian](https://github.com/nkavian)! - Add the initial AEP Node SDK packages, framework adapters, and conformance helpers.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`3d4713e`](https://github.com/aep-foundation/aep-node/commit/3d4713e2a9cf85478a415192c7c0abc90c374073)]:
|
|
12
|
+
- @aep-foundation/core@0.1.0
|
|
13
|
+
|
|
14
|
+
## 0.0.0
|
|
15
|
+
|
|
16
|
+
Initial development version.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AEP Foundation
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# @aep-foundation/conformance
|
|
2
|
+
|
|
3
|
+
SDK-facing conformance helpers for checking AEP behavior against schemas,
|
|
4
|
+
examples, and test vectors.
|
|
5
|
+
|
|
6
|
+
Initial responsibilities:
|
|
7
|
+
|
|
8
|
+
- load AEP schemas and test vectors
|
|
9
|
+
- validate SDK-produced Inspect documents
|
|
10
|
+
- validate SDK-produced Enroll request/response and Status response objects
|
|
11
|
+
- validate SDK-produced Grant/Revoke request/response and built-in credential
|
|
12
|
+
response objects
|
|
13
|
+
- validate AEP Problem Details error responses and idempotency conflict fixtures
|
|
14
|
+
- load Platform Hosted Identity schemas and test vectors through stable helpers
|
|
15
|
+
|
|
16
|
+
## Initial API
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import {
|
|
20
|
+
assertEnrollResponseConformance,
|
|
21
|
+
assertBuiltInGrantResponseConformance,
|
|
22
|
+
assertInspectConformance,
|
|
23
|
+
assertProblemDetailsConformance,
|
|
24
|
+
loadActiveEnrollResponseTestVector,
|
|
25
|
+
loadEnrollIdempotencyConflictTestVector,
|
|
26
|
+
loadOAuthBearerGrantResponseTestVector,
|
|
27
|
+
loadMinimalInspectTestVector,
|
|
28
|
+
loadNotRecognizedProblemTestVector,
|
|
29
|
+
loadPlatformDiscoveryTestVector,
|
|
30
|
+
loadPlatformProvisionRequestTestVector,
|
|
31
|
+
loadPlatformVerificationResponseRecognizedTestVector
|
|
32
|
+
} from "@aep-foundation/conformance";
|
|
33
|
+
|
|
34
|
+
const vector = await loadMinimalInspectTestVector();
|
|
35
|
+
const inspect = assertInspectConformance(vector.expected);
|
|
36
|
+
|
|
37
|
+
const enrollVector = await loadActiveEnrollResponseTestVector();
|
|
38
|
+
const enroll = assertEnrollResponseConformance(enrollVector.expected.body);
|
|
39
|
+
|
|
40
|
+
const grantVector = await loadOAuthBearerGrantResponseTestVector();
|
|
41
|
+
const grant = assertBuiltInGrantResponseConformance("oauth-bearer", grantVector.expected);
|
|
42
|
+
|
|
43
|
+
const errorVector = await loadNotRecognizedProblemTestVector();
|
|
44
|
+
const problem = assertProblemDetailsConformance(errorVector.expected.body);
|
|
45
|
+
|
|
46
|
+
const conflictVector = await loadEnrollIdempotencyConflictTestVector();
|
|
47
|
+
const conflict = assertProblemDetailsConformance(conflictVector.expected.body);
|
|
48
|
+
|
|
49
|
+
const platformDiscoveryVector = await loadPlatformDiscoveryTestVector();
|
|
50
|
+
const platformProvisionVector = await loadPlatformProvisionRequestTestVector();
|
|
51
|
+
const hostedVerificationVector = await loadPlatformVerificationResponseRecognizedTestVector();
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The initial conformance surface loads synced spec artifacts from
|
|
55
|
+
`fixtures/aep-specs`, validates Inspect, Enroll, Status, Grant, Revoke, and
|
|
56
|
+
built-in credential response objects, Problem Details errors, and idempotency
|
|
57
|
+
conflict fixtures through `@aep-foundation/core`, exposes Platform Hosted
|
|
58
|
+
Identity test-vector loaders, and exposes stable fixture path helpers for
|
|
59
|
+
package and SDK tests.
|
|
60
|
+
|
|
61
|
+
## Spec Artifacts
|
|
62
|
+
|
|
63
|
+
Conformance fixtures are synced from the local `aep-specs` checkout into
|
|
64
|
+
`fixtures/aep-specs`.
|
|
65
|
+
|
|
66
|
+
```sh
|
|
67
|
+
pnpm sync:spec-artifacts
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The script expects `../aep-specs/ietf` relative to the repository root by
|
|
71
|
+
default. Set `AEP_SPECS_DIR` to point at another `aep-specs` checkout or at its
|
|
72
|
+
`ietf` directory.
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
AepConformanceError: () => AepConformanceError,
|
|
34
|
+
assertBuiltInGrantResponseConformance: () => assertBuiltInGrantResponseConformance,
|
|
35
|
+
assertEnrollRequestConformance: () => assertEnrollRequestConformance,
|
|
36
|
+
assertEnrollResponseConformance: () => assertEnrollResponseConformance,
|
|
37
|
+
assertGrantRequestConformance: () => assertGrantRequestConformance,
|
|
38
|
+
assertInspectConformance: () => assertInspectConformance,
|
|
39
|
+
assertProblemDetailsConformance: () => assertProblemDetailsConformance,
|
|
40
|
+
assertRevokeRequestConformance: () => assertRevokeRequestConformance,
|
|
41
|
+
assertRevokeResponseConformance: () => assertRevokeResponseConformance,
|
|
42
|
+
assertStatusResponseConformance: () => assertStatusResponseConformance,
|
|
43
|
+
loadActiveEnrollResponseTestVector: () => loadActiveEnrollResponseTestVector,
|
|
44
|
+
loadActiveStatusResponseTestVector: () => loadActiveStatusResponseTestVector,
|
|
45
|
+
loadAllGrantTypesRevokeRequestTestVector: () => loadAllGrantTypesRevokeRequestTestVector,
|
|
46
|
+
loadApiKeyGrantResponseTestVector: () => loadApiKeyGrantResponseTestVector,
|
|
47
|
+
loadBasicGrantResponseTestVector: () => loadBasicGrantResponseTestVector,
|
|
48
|
+
loadEmptyRevokeResponseTestVector: () => loadEmptyRevokeResponseTestVector,
|
|
49
|
+
loadEnrollIdempotencyConflictTestVector: () => loadEnrollIdempotencyConflictTestVector,
|
|
50
|
+
loadMinimalEnrollRequestTestVector: () => loadMinimalEnrollRequestTestVector,
|
|
51
|
+
loadMinimalInspectTestVector: () => loadMinimalInspectTestVector,
|
|
52
|
+
loadNotRecognizedProblemTestVector: () => loadNotRecognizedProblemTestVector,
|
|
53
|
+
loadOAuthBearerGrantRequestTestVector: () => loadOAuthBearerGrantRequestTestVector,
|
|
54
|
+
loadOAuthBearerGrantResponseTestVector: () => loadOAuthBearerGrantResponseTestVector,
|
|
55
|
+
loadOAuthBearerRevokeRequestTestVector: () => loadOAuthBearerRevokeRequestTestVector,
|
|
56
|
+
loadPlatformDiscoveryTestVector: () => loadPlatformDiscoveryTestVector,
|
|
57
|
+
loadPlatformLifecycleRequestTestVector: () => loadPlatformLifecycleRequestTestVector,
|
|
58
|
+
loadPlatformLifecycleResponseTestVector: () => loadPlatformLifecycleResponseTestVector,
|
|
59
|
+
loadPlatformListResponseTestVector: () => loadPlatformListResponseTestVector,
|
|
60
|
+
loadPlatformProvisionRequestTestVector: () => loadPlatformProvisionRequestTestVector,
|
|
61
|
+
loadPlatformProvisionResponseTestVector: () => loadPlatformProvisionResponseTestVector,
|
|
62
|
+
loadPlatformSignRequestTestVector: () => loadPlatformSignRequestTestVector,
|
|
63
|
+
loadPlatformSignResponseTestVector: () => loadPlatformSignResponseTestVector,
|
|
64
|
+
loadPlatformVerificationRequestTestVector: () => loadPlatformVerificationRequestTestVector,
|
|
65
|
+
loadPlatformVerificationResponseRecognizedTestVector: () => loadPlatformVerificationResponseRecognizedTestVector,
|
|
66
|
+
loadPlatformVerificationResponseUnrecognizedTestVector: () => loadPlatformVerificationResponseUnrecognizedTestVector,
|
|
67
|
+
loadSchemaArtifact: () => loadSchemaArtifact,
|
|
68
|
+
loadSpecArtifactManifest: () => loadSpecArtifactManifest,
|
|
69
|
+
loadTestVector: () => loadTestVector,
|
|
70
|
+
schemaArtifactPath: () => schemaArtifactPath,
|
|
71
|
+
schemaArtifactsRoot: () => schemaArtifactsRoot,
|
|
72
|
+
specArtifactManifestPath: () => specArtifactManifestPath,
|
|
73
|
+
specArtifactsRoot: () => specArtifactsRoot,
|
|
74
|
+
testVectorArtifactPath: () => testVectorArtifactPath,
|
|
75
|
+
testVectorArtifactsRoot: () => testVectorArtifactsRoot,
|
|
76
|
+
validateBuiltInGrantResponseConformance: () => validateBuiltInGrantResponseConformance,
|
|
77
|
+
validateEnrollRequestConformance: () => validateEnrollRequestConformance,
|
|
78
|
+
validateEnrollResponseConformance: () => validateEnrollResponseConformance,
|
|
79
|
+
validateGrantRequestConformance: () => validateGrantRequestConformance,
|
|
80
|
+
validateInspectConformance: () => validateInspectConformance,
|
|
81
|
+
validateProblemDetailsConformance: () => validateProblemDetailsConformance,
|
|
82
|
+
validateRevokeRequestConformance: () => validateRevokeRequestConformance,
|
|
83
|
+
validateRevokeResponseConformance: () => validateRevokeResponseConformance,
|
|
84
|
+
validateStatusResponseConformance: () => validateStatusResponseConformance
|
|
85
|
+
});
|
|
86
|
+
module.exports = __toCommonJS(index_exports);
|
|
87
|
+
var import_promises = require("fs/promises");
|
|
88
|
+
var import_node_module = require("module");
|
|
89
|
+
var import_node_path = __toESM(require("path"), 1);
|
|
90
|
+
var import_core = require("@aep-foundation/core");
|
|
91
|
+
var requireFromCwd = (0, import_node_module.createRequire)(`${process.cwd()}/`);
|
|
92
|
+
var packageRoot = import_node_path.default.dirname(
|
|
93
|
+
requireFromCwd.resolve("@aep-foundation/conformance/package.json")
|
|
94
|
+
);
|
|
95
|
+
var specArtifactsRoot = import_node_path.default.join(packageRoot, "fixtures/aep-specs");
|
|
96
|
+
var schemaArtifactsRoot = import_node_path.default.join(specArtifactsRoot, "schemas");
|
|
97
|
+
var testVectorArtifactsRoot = import_node_path.default.join(specArtifactsRoot, "test-vectors");
|
|
98
|
+
var specArtifactManifestPath = import_node_path.default.join(specArtifactsRoot, "manifest.json");
|
|
99
|
+
var AepConformanceError = class extends Error {
|
|
100
|
+
issues;
|
|
101
|
+
constructor(message, issues) {
|
|
102
|
+
super(message);
|
|
103
|
+
this.name = "AepConformanceError";
|
|
104
|
+
this.issues = issues;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
async function loadSpecArtifactManifest() {
|
|
108
|
+
return readJson(specArtifactManifestPath);
|
|
109
|
+
}
|
|
110
|
+
function schemaArtifactPath(relativePath) {
|
|
111
|
+
return import_node_path.default.join(schemaArtifactsRoot, relativePath);
|
|
112
|
+
}
|
|
113
|
+
function testVectorArtifactPath(relativePath) {
|
|
114
|
+
return import_node_path.default.join(testVectorArtifactsRoot, relativePath);
|
|
115
|
+
}
|
|
116
|
+
async function loadSchemaArtifact(relativePath) {
|
|
117
|
+
return readJson(schemaArtifactPath(relativePath));
|
|
118
|
+
}
|
|
119
|
+
async function loadTestVector(relativePath) {
|
|
120
|
+
return readJson(testVectorArtifactPath(relativePath));
|
|
121
|
+
}
|
|
122
|
+
function validateInspectConformance(value) {
|
|
123
|
+
return (0, import_core.validateInspectDocument)(value);
|
|
124
|
+
}
|
|
125
|
+
function validateEnrollRequestConformance(value) {
|
|
126
|
+
return (0, import_core.validateEnrollRequest)(value);
|
|
127
|
+
}
|
|
128
|
+
function validateEnrollResponseConformance(value) {
|
|
129
|
+
return (0, import_core.validateEnrollResponse)(value);
|
|
130
|
+
}
|
|
131
|
+
function validateStatusResponseConformance(value) {
|
|
132
|
+
return (0, import_core.validateStatusResponse)(value);
|
|
133
|
+
}
|
|
134
|
+
function validateGrantRequestConformance(value) {
|
|
135
|
+
return (0, import_core.validateGrantRequest)(value);
|
|
136
|
+
}
|
|
137
|
+
function validateRevokeRequestConformance(value) {
|
|
138
|
+
return (0, import_core.validateRevokeRequest)(value);
|
|
139
|
+
}
|
|
140
|
+
function validateRevokeResponseConformance(value) {
|
|
141
|
+
return (0, import_core.validateRevokeResponse)(value);
|
|
142
|
+
}
|
|
143
|
+
function validateBuiltInGrantResponseConformance(grantType, value) {
|
|
144
|
+
return (0, import_core.validateBuiltInGrantResponse)(grantType, value);
|
|
145
|
+
}
|
|
146
|
+
function validateProblemDetailsConformance(value) {
|
|
147
|
+
return (0, import_core.validateProblemDetails)(value);
|
|
148
|
+
}
|
|
149
|
+
function assertInspectConformance(value) {
|
|
150
|
+
const result = (0, import_core.validateInspectDocument)(value);
|
|
151
|
+
if (!result.ok) {
|
|
152
|
+
throw new AepConformanceError(
|
|
153
|
+
"Inspect document failed AEP conformance validation.",
|
|
154
|
+
result.issues
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
return result.value;
|
|
158
|
+
}
|
|
159
|
+
function assertEnrollRequestConformance(value) {
|
|
160
|
+
const result = (0, import_core.validateEnrollRequest)(value);
|
|
161
|
+
if (!result.ok) {
|
|
162
|
+
throw new AepConformanceError(
|
|
163
|
+
"Enroll request failed AEP conformance validation.",
|
|
164
|
+
result.issues
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
return result.value;
|
|
168
|
+
}
|
|
169
|
+
function assertEnrollResponseConformance(value) {
|
|
170
|
+
const result = (0, import_core.validateEnrollResponse)(value);
|
|
171
|
+
if (!result.ok) {
|
|
172
|
+
throw new AepConformanceError(
|
|
173
|
+
"Enroll response failed AEP conformance validation.",
|
|
174
|
+
result.issues
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
return result.value;
|
|
178
|
+
}
|
|
179
|
+
function assertStatusResponseConformance(value) {
|
|
180
|
+
const result = (0, import_core.validateStatusResponse)(value);
|
|
181
|
+
if (!result.ok) {
|
|
182
|
+
throw new AepConformanceError(
|
|
183
|
+
"Status response failed AEP conformance validation.",
|
|
184
|
+
result.issues
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
return result.value;
|
|
188
|
+
}
|
|
189
|
+
function assertGrantRequestConformance(value) {
|
|
190
|
+
const result = (0, import_core.validateGrantRequest)(value);
|
|
191
|
+
if (!result.ok) {
|
|
192
|
+
throw new AepConformanceError(
|
|
193
|
+
"Grant request failed AEP conformance validation.",
|
|
194
|
+
result.issues
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
return result.value;
|
|
198
|
+
}
|
|
199
|
+
function assertRevokeRequestConformance(value) {
|
|
200
|
+
const result = (0, import_core.validateRevokeRequest)(value);
|
|
201
|
+
if (!result.ok) {
|
|
202
|
+
throw new AepConformanceError(
|
|
203
|
+
"Revoke request failed AEP conformance validation.",
|
|
204
|
+
result.issues
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
return result.value;
|
|
208
|
+
}
|
|
209
|
+
function assertRevokeResponseConformance(value) {
|
|
210
|
+
const result = (0, import_core.validateRevokeResponse)(value);
|
|
211
|
+
if (!result.ok) {
|
|
212
|
+
throw new AepConformanceError(
|
|
213
|
+
"Revoke response failed AEP conformance validation.",
|
|
214
|
+
result.issues
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
return result.value;
|
|
218
|
+
}
|
|
219
|
+
function assertBuiltInGrantResponseConformance(grantType, value) {
|
|
220
|
+
const result = (0, import_core.validateBuiltInGrantResponse)(grantType, value);
|
|
221
|
+
if (!result.ok) {
|
|
222
|
+
throw new AepConformanceError(
|
|
223
|
+
"Grant response failed AEP conformance validation.",
|
|
224
|
+
result.issues
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
return result.value;
|
|
228
|
+
}
|
|
229
|
+
function assertProblemDetailsConformance(value) {
|
|
230
|
+
const result = (0, import_core.validateProblemDetails)(value);
|
|
231
|
+
if (!result.ok) {
|
|
232
|
+
throw new AepConformanceError(
|
|
233
|
+
"Problem Details response failed AEP conformance validation.",
|
|
234
|
+
result.issues
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
return result.value;
|
|
238
|
+
}
|
|
239
|
+
async function loadMinimalInspectTestVector() {
|
|
240
|
+
const vector = await loadTestVector("inspect/minimal-http.json");
|
|
241
|
+
return {
|
|
242
|
+
...vector,
|
|
243
|
+
expected: (0, import_core.parseInspectDocument)(vector.expected)
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
async function loadMinimalEnrollRequestTestVector() {
|
|
247
|
+
const vector = await loadTestVector(
|
|
248
|
+
"enroll/request-minimal.json"
|
|
249
|
+
);
|
|
250
|
+
return {
|
|
251
|
+
...vector,
|
|
252
|
+
input: (0, import_core.parseEnrollRequest)(vector.input)
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
async function loadActiveEnrollResponseTestVector() {
|
|
256
|
+
const vector = await loadTestVector("enroll/response-active.json");
|
|
257
|
+
return {
|
|
258
|
+
...vector,
|
|
259
|
+
expected: {
|
|
260
|
+
...vector.expected,
|
|
261
|
+
body: (0, import_core.parseEnrollResponse)(vector.expected.body)
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
async function loadActiveStatusResponseTestVector() {
|
|
266
|
+
const vector = await loadTestVector("status/response-active.json");
|
|
267
|
+
return {
|
|
268
|
+
...vector,
|
|
269
|
+
expected: {
|
|
270
|
+
...vector.expected,
|
|
271
|
+
body: (0, import_core.parseStatusResponse)(vector.expected.body)
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
async function loadOAuthBearerGrantRequestTestVector() {
|
|
276
|
+
const vector = await loadTestVector(
|
|
277
|
+
"grant-revoke/grant-request-oauth-bearer.json"
|
|
278
|
+
);
|
|
279
|
+
return {
|
|
280
|
+
...vector,
|
|
281
|
+
input: (0, import_core.parseGrantRequest)(vector.input),
|
|
282
|
+
expected: {
|
|
283
|
+
...vector.expected,
|
|
284
|
+
body: (0, import_core.parseGrantRequest)(vector.expected.body)
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
async function loadOAuthBearerRevokeRequestTestVector() {
|
|
289
|
+
const vector = await loadTestVector(
|
|
290
|
+
"grant-revoke/revoke-request-oauth-bearer.json"
|
|
291
|
+
);
|
|
292
|
+
return {
|
|
293
|
+
...vector,
|
|
294
|
+
input: (0, import_core.parseRevokeRequest)(vector.input),
|
|
295
|
+
expected: {
|
|
296
|
+
...vector.expected,
|
|
297
|
+
body: (0, import_core.parseRevokeRequest)(vector.expected.body)
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
async function loadAllGrantTypesRevokeRequestTestVector() {
|
|
302
|
+
const vector = await loadTestVector("grant-revoke/revoke-request-all-grant-types.json");
|
|
303
|
+
return {
|
|
304
|
+
...vector,
|
|
305
|
+
input: (0, import_core.parseRevokeRequest)(vector.input),
|
|
306
|
+
expected: {
|
|
307
|
+
...vector.expected,
|
|
308
|
+
body: (0, import_core.parseRevokeRequest)(vector.expected.body)
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
async function loadEmptyRevokeResponseTestVector() {
|
|
313
|
+
const vector = await loadTestVector("grant-revoke/revoke-response-empty.json");
|
|
314
|
+
return {
|
|
315
|
+
...vector,
|
|
316
|
+
expected: {
|
|
317
|
+
...vector.expected,
|
|
318
|
+
body: (0, import_core.parseRevokeResponse)(vector.expected.body)
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
async function loadOAuthBearerGrantResponseTestVector() {
|
|
323
|
+
return loadBuiltInGrantResponseTestVector(
|
|
324
|
+
"oauth-bearer",
|
|
325
|
+
"credentials/oauth-bearer/grant-response.json"
|
|
326
|
+
);
|
|
327
|
+
}
|
|
328
|
+
async function loadApiKeyGrantResponseTestVector() {
|
|
329
|
+
return loadBuiltInGrantResponseTestVector("api-key", "credentials/api-key/grant-response.json");
|
|
330
|
+
}
|
|
331
|
+
async function loadBasicGrantResponseTestVector() {
|
|
332
|
+
return loadBuiltInGrantResponseTestVector("basic", "credentials/basic/grant-response.json");
|
|
333
|
+
}
|
|
334
|
+
async function loadNotRecognizedProblemTestVector() {
|
|
335
|
+
return loadProblemDetailsResponseTestVector(
|
|
336
|
+
"errors/not-recognized-problem.json"
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
async function loadEnrollIdempotencyConflictTestVector() {
|
|
340
|
+
return loadProblemDetailsResponseTestVector(
|
|
341
|
+
"idempotency/enroll-conflict.json"
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
function loadPlatformDiscoveryTestVector() {
|
|
345
|
+
return loadTestVector("platform/discovery.json");
|
|
346
|
+
}
|
|
347
|
+
function loadPlatformProvisionRequestTestVector() {
|
|
348
|
+
return loadTestVector(
|
|
349
|
+
"platform/provision-request.json"
|
|
350
|
+
);
|
|
351
|
+
}
|
|
352
|
+
function loadPlatformProvisionResponseTestVector() {
|
|
353
|
+
return loadTestVector(
|
|
354
|
+
"platform/provision-response.json"
|
|
355
|
+
);
|
|
356
|
+
}
|
|
357
|
+
function loadPlatformListResponseTestVector() {
|
|
358
|
+
return loadTestVector(
|
|
359
|
+
"platform/list-response.json"
|
|
360
|
+
);
|
|
361
|
+
}
|
|
362
|
+
function loadPlatformLifecycleRequestTestVector() {
|
|
363
|
+
return loadTestVector(
|
|
364
|
+
"platform/lifecycle-request.json"
|
|
365
|
+
);
|
|
366
|
+
}
|
|
367
|
+
function loadPlatformLifecycleResponseTestVector() {
|
|
368
|
+
return loadTestVector(
|
|
369
|
+
"platform/lifecycle-response.json"
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
function loadPlatformSignRequestTestVector() {
|
|
373
|
+
return loadTestVector(
|
|
374
|
+
"platform/sign-request.json"
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
function loadPlatformSignResponseTestVector() {
|
|
378
|
+
return loadTestVector(
|
|
379
|
+
"platform/sign-response.json"
|
|
380
|
+
);
|
|
381
|
+
}
|
|
382
|
+
function loadPlatformVerificationRequestTestVector() {
|
|
383
|
+
return loadTestVector(
|
|
384
|
+
"platform/verification-request.json"
|
|
385
|
+
);
|
|
386
|
+
}
|
|
387
|
+
function loadPlatformVerificationResponseRecognizedTestVector() {
|
|
388
|
+
return loadTestVector(
|
|
389
|
+
"platform/verification-response-recognized.json"
|
|
390
|
+
);
|
|
391
|
+
}
|
|
392
|
+
function loadPlatformVerificationResponseUnrecognizedTestVector() {
|
|
393
|
+
return loadTestVector(
|
|
394
|
+
"platform/verification-response-unrecognized.json"
|
|
395
|
+
);
|
|
396
|
+
}
|
|
397
|
+
async function readJson(file) {
|
|
398
|
+
return JSON.parse(await (0, import_promises.readFile)(file, "utf8"));
|
|
399
|
+
}
|
|
400
|
+
async function loadBuiltInGrantResponseTestVector(grantType, relativePath) {
|
|
401
|
+
const vector = await loadTestVector(relativePath);
|
|
402
|
+
return {
|
|
403
|
+
...vector,
|
|
404
|
+
input: (0, import_core.parseGrantRequest)(vector.input),
|
|
405
|
+
expected: (0, import_core.parseBuiltInGrantResponse)(grantType, vector.expected)
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
async function loadProblemDetailsResponseTestVector(relativePath) {
|
|
409
|
+
const vector = await loadTestVector(relativePath);
|
|
410
|
+
return {
|
|
411
|
+
...vector,
|
|
412
|
+
expected: {
|
|
413
|
+
...vector.expected,
|
|
414
|
+
body: (0, import_core.parseProblemDetails)(vector.expected.body)
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
419
|
+
0 && (module.exports = {
|
|
420
|
+
AepConformanceError,
|
|
421
|
+
assertBuiltInGrantResponseConformance,
|
|
422
|
+
assertEnrollRequestConformance,
|
|
423
|
+
assertEnrollResponseConformance,
|
|
424
|
+
assertGrantRequestConformance,
|
|
425
|
+
assertInspectConformance,
|
|
426
|
+
assertProblemDetailsConformance,
|
|
427
|
+
assertRevokeRequestConformance,
|
|
428
|
+
assertRevokeResponseConformance,
|
|
429
|
+
assertStatusResponseConformance,
|
|
430
|
+
loadActiveEnrollResponseTestVector,
|
|
431
|
+
loadActiveStatusResponseTestVector,
|
|
432
|
+
loadAllGrantTypesRevokeRequestTestVector,
|
|
433
|
+
loadApiKeyGrantResponseTestVector,
|
|
434
|
+
loadBasicGrantResponseTestVector,
|
|
435
|
+
loadEmptyRevokeResponseTestVector,
|
|
436
|
+
loadEnrollIdempotencyConflictTestVector,
|
|
437
|
+
loadMinimalEnrollRequestTestVector,
|
|
438
|
+
loadMinimalInspectTestVector,
|
|
439
|
+
loadNotRecognizedProblemTestVector,
|
|
440
|
+
loadOAuthBearerGrantRequestTestVector,
|
|
441
|
+
loadOAuthBearerGrantResponseTestVector,
|
|
442
|
+
loadOAuthBearerRevokeRequestTestVector,
|
|
443
|
+
loadPlatformDiscoveryTestVector,
|
|
444
|
+
loadPlatformLifecycleRequestTestVector,
|
|
445
|
+
loadPlatformLifecycleResponseTestVector,
|
|
446
|
+
loadPlatformListResponseTestVector,
|
|
447
|
+
loadPlatformProvisionRequestTestVector,
|
|
448
|
+
loadPlatformProvisionResponseTestVector,
|
|
449
|
+
loadPlatformSignRequestTestVector,
|
|
450
|
+
loadPlatformSignResponseTestVector,
|
|
451
|
+
loadPlatformVerificationRequestTestVector,
|
|
452
|
+
loadPlatformVerificationResponseRecognizedTestVector,
|
|
453
|
+
loadPlatformVerificationResponseUnrecognizedTestVector,
|
|
454
|
+
loadSchemaArtifact,
|
|
455
|
+
loadSpecArtifactManifest,
|
|
456
|
+
loadTestVector,
|
|
457
|
+
schemaArtifactPath,
|
|
458
|
+
schemaArtifactsRoot,
|
|
459
|
+
specArtifactManifestPath,
|
|
460
|
+
specArtifactsRoot,
|
|
461
|
+
testVectorArtifactPath,
|
|
462
|
+
testVectorArtifactsRoot,
|
|
463
|
+
validateBuiltInGrantResponseConformance,
|
|
464
|
+
validateEnrollRequestConformance,
|
|
465
|
+
validateEnrollResponseConformance,
|
|
466
|
+
validateGrantRequestConformance,
|
|
467
|
+
validateInspectConformance,
|
|
468
|
+
validateProblemDetailsConformance,
|
|
469
|
+
validateRevokeRequestConformance,
|
|
470
|
+
validateRevokeResponseConformance,
|
|
471
|
+
validateStatusResponseConformance
|
|
472
|
+
});
|
|
473
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\n\nimport {\n parseBuiltInGrantResponse,\n parseEnrollRequest,\n parseEnrollResponse,\n parseGrantRequest,\n parseInspectDocument,\n parseProblemDetails,\n parseRevokeRequest,\n parseRevokeResponse,\n parseStatusResponse,\n validateBuiltInGrantResponse,\n validateEnrollRequest,\n validateEnrollResponse,\n validateGrantRequest,\n validateInspectDocument,\n validateProblemDetails,\n validateRevokeRequest,\n validateRevokeResponse,\n validateStatusResponse\n} from \"@aep-foundation/core\";\nimport type {\n AepBuiltInGrantResponse,\n AepGrantType,\n AepProblemDetails,\n EnrollRequest,\n EnrollResponse,\n GrantRequest,\n InspectDocument,\n RevokeRequest,\n RevokeResponse,\n StatusResponse,\n ValidationIssue,\n ValidationResult\n} from \"@aep-foundation/core\";\n\nconst requireFromCwd = createRequire(`${process.cwd()}/`);\nconst packageRoot = path.dirname(\n requireFromCwd.resolve(\"@aep-foundation/conformance/package.json\")\n);\n\nexport const specArtifactsRoot = path.join(packageRoot, \"fixtures/aep-specs\");\nexport const schemaArtifactsRoot = path.join(specArtifactsRoot, \"schemas\");\nexport const testVectorArtifactsRoot = path.join(specArtifactsRoot, \"test-vectors\");\nexport const specArtifactManifestPath = path.join(specArtifactsRoot, \"manifest.json\");\n\nexport interface SpecArtifactManifest {\n source: string;\n generated_by: string;\n artifacts: {\n schemas: string[];\n \"test-vectors\": string[];\n };\n}\n\nexport interface AepTestVector<TInput = unknown, TExpected = unknown> {\n id: string;\n title?: string;\n description?: string;\n drafts?: string[];\n category?: string;\n applies_to?: string[];\n profile?: string;\n input: TInput;\n expected: TExpected;\n [key: string]: unknown;\n}\n\nexport class AepConformanceError extends Error {\n readonly issues: ValidationIssue[];\n\n constructor(message: string, issues: ValidationIssue[]) {\n super(message);\n this.name = \"AepConformanceError\";\n this.issues = issues;\n }\n}\n\nexport async function loadSpecArtifactManifest(): Promise<SpecArtifactManifest> {\n return readJson<SpecArtifactManifest>(specArtifactManifestPath);\n}\n\nexport function schemaArtifactPath(relativePath: string): string {\n return path.join(schemaArtifactsRoot, relativePath);\n}\n\nexport function testVectorArtifactPath(relativePath: string): string {\n return path.join(testVectorArtifactsRoot, relativePath);\n}\n\nexport async function loadSchemaArtifact<T = unknown>(relativePath: string): Promise<T> {\n return readJson<T>(schemaArtifactPath(relativePath));\n}\n\nexport async function loadTestVector<TInput = unknown, TExpected = unknown>(\n relativePath: string\n): Promise<AepTestVector<TInput, TExpected>> {\n return readJson<AepTestVector<TInput, TExpected>>(testVectorArtifactPath(relativePath));\n}\n\nexport function validateInspectConformance(value: unknown): ValidationResult<InspectDocument> {\n return validateInspectDocument(value);\n}\n\nexport function validateEnrollRequestConformance(value: unknown): ValidationResult<EnrollRequest> {\n return validateEnrollRequest(value);\n}\n\nexport function validateEnrollResponseConformance(\n value: unknown\n): ValidationResult<EnrollResponse> {\n return validateEnrollResponse(value);\n}\n\nexport function validateStatusResponseConformance(\n value: unknown\n): ValidationResult<StatusResponse> {\n return validateStatusResponse(value);\n}\n\nexport function validateGrantRequestConformance(value: unknown): ValidationResult<GrantRequest> {\n return validateGrantRequest(value);\n}\n\nexport function validateRevokeRequestConformance(value: unknown): ValidationResult<RevokeRequest> {\n return validateRevokeRequest(value);\n}\n\nexport function validateRevokeResponseConformance(\n value: unknown\n): ValidationResult<RevokeResponse> {\n return validateRevokeResponse(value);\n}\n\nexport function validateBuiltInGrantResponseConformance(\n grantType: AepGrantType,\n value: unknown\n): ValidationResult<AepBuiltInGrantResponse> {\n return validateBuiltInGrantResponse(grantType, value);\n}\n\nexport function validateProblemDetailsConformance(\n value: unknown\n): ValidationResult<AepProblemDetails> {\n return validateProblemDetails(value);\n}\n\nexport function assertInspectConformance(value: unknown): InspectDocument {\n const result = validateInspectDocument(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Inspect document failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertEnrollRequestConformance(value: unknown): EnrollRequest {\n const result = validateEnrollRequest(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Enroll request failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertEnrollResponseConformance(value: unknown): EnrollResponse {\n const result = validateEnrollResponse(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Enroll response failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertStatusResponseConformance(value: unknown): StatusResponse {\n const result = validateStatusResponse(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Status response failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertGrantRequestConformance(value: unknown): GrantRequest {\n const result = validateGrantRequest(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Grant request failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertRevokeRequestConformance(value: unknown): RevokeRequest {\n const result = validateRevokeRequest(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Revoke request failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertRevokeResponseConformance(value: unknown): RevokeResponse {\n const result = validateRevokeResponse(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Revoke response failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertBuiltInGrantResponseConformance(\n grantType: AepGrantType,\n value: unknown\n): AepBuiltInGrantResponse {\n const result = validateBuiltInGrantResponse(grantType, value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Grant response failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertProblemDetailsConformance(value: unknown): AepProblemDetails {\n const result = validateProblemDetails(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Problem Details response failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport async function loadMinimalInspectTestVector(): Promise<\n AepTestVector<Record<string, never>, InspectDocument>\n> {\n const vector = await loadTestVector<Record<string, never>, unknown>(\"inspect/minimal-http.json\");\n\n return {\n ...vector,\n expected: parseInspectDocument(vector.expected)\n };\n}\n\nexport async function loadMinimalEnrollRequestTestVector(): Promise<\n AepTestVector<EnrollRequest, Record<string, unknown>>\n> {\n const vector = await loadTestVector<unknown, Record<string, unknown>>(\n \"enroll/request-minimal.json\"\n );\n\n return {\n ...vector,\n input: parseEnrollRequest(vector.input)\n };\n}\n\nexport async function loadActiveEnrollResponseTestVector(): Promise<\n AepTestVector<\n Record<string, unknown>,\n { body: EnrollResponse; content_type: string; status: number }\n >\n> {\n const vector = await loadTestVector<\n Record<string, unknown>,\n { body: unknown; content_type: string; status: number }\n >(\"enroll/response-active.json\");\n\n return {\n ...vector,\n expected: {\n ...vector.expected,\n body: parseEnrollResponse(vector.expected.body)\n }\n };\n}\n\nexport async function loadActiveStatusResponseTestVector(): Promise<\n AepTestVector<\n Record<string, unknown>,\n { body: StatusResponse; content_type: string; status: number }\n >\n> {\n const vector = await loadTestVector<\n Record<string, unknown>,\n { body: unknown; content_type: string; status: number }\n >(\"status/response-active.json\");\n\n return {\n ...vector,\n expected: {\n ...vector.expected,\n body: parseStatusResponse(vector.expected.body)\n }\n };\n}\n\nexport async function loadOAuthBearerGrantRequestTestVector(): Promise<\n AepTestVector<GrantRequest, AepCommandRequestExpectation<GrantRequest>>\n> {\n const vector = await loadTestVector<unknown, AepCommandRequestExpectation<unknown>>(\n \"grant-revoke/grant-request-oauth-bearer.json\"\n );\n\n return {\n ...vector,\n input: parseGrantRequest(vector.input),\n expected: {\n ...vector.expected,\n body: parseGrantRequest(vector.expected.body)\n }\n };\n}\n\nexport async function loadOAuthBearerRevokeRequestTestVector(): Promise<\n AepTestVector<RevokeRequest, AepCommandRequestExpectation<RevokeRequest>>\n> {\n const vector = await loadTestVector<unknown, AepCommandRequestExpectation<unknown>>(\n \"grant-revoke/revoke-request-oauth-bearer.json\"\n );\n\n return {\n ...vector,\n input: parseRevokeRequest(vector.input),\n expected: {\n ...vector.expected,\n body: parseRevokeRequest(vector.expected.body)\n }\n };\n}\n\nexport async function loadAllGrantTypesRevokeRequestTestVector(): Promise<\n AepTestVector<\n RevokeRequest,\n AepCommandRequestExpectation<RevokeRequest> & {\n must_not_contain?: string[];\n }\n >\n> {\n const vector = await loadTestVector<\n unknown,\n AepCommandRequestExpectation<unknown> & {\n must_not_contain?: string[];\n }\n >(\"grant-revoke/revoke-request-all-grant-types.json\");\n\n return {\n ...vector,\n input: parseRevokeRequest(vector.input),\n expected: {\n ...vector.expected,\n body: parseRevokeRequest(vector.expected.body)\n }\n };\n}\n\nexport async function loadEmptyRevokeResponseTestVector(): Promise<\n AepTestVector<Record<string, unknown>, AepCommandResponseExpectation<RevokeResponse>>\n> {\n const vector = await loadTestVector<\n Record<string, unknown>,\n AepCommandResponseExpectation<unknown>\n >(\"grant-revoke/revoke-response-empty.json\");\n\n return {\n ...vector,\n expected: {\n ...vector.expected,\n body: parseRevokeResponse(vector.expected.body)\n }\n };\n}\n\nexport async function loadOAuthBearerGrantResponseTestVector(): Promise<\n AepTestVector<GrantRequest, AepBuiltInGrantResponse>\n> {\n return loadBuiltInGrantResponseTestVector(\n \"oauth-bearer\",\n \"credentials/oauth-bearer/grant-response.json\"\n );\n}\n\nexport async function loadApiKeyGrantResponseTestVector(): Promise<\n AepTestVector<GrantRequest, AepBuiltInGrantResponse>\n> {\n return loadBuiltInGrantResponseTestVector(\"api-key\", \"credentials/api-key/grant-response.json\");\n}\n\nexport async function loadBasicGrantResponseTestVector(): Promise<\n AepTestVector<GrantRequest, AepBuiltInGrantResponse>\n> {\n return loadBuiltInGrantResponseTestVector(\"basic\", \"credentials/basic/grant-response.json\");\n}\n\nexport async function loadNotRecognizedProblemTestVector(): Promise<\n AepTestVector<{ failure_class: string }, AepCommandResponseExpectation<AepProblemDetails>>\n> {\n return loadProblemDetailsResponseTestVector<{ failure_class: string }>(\n \"errors/not-recognized-problem.json\"\n );\n}\n\nexport async function loadEnrollIdempotencyConflictTestVector(): Promise<\n AepTestVector<AepEnrollIdempotencyConflictInput, AepCommandResponseExpectation<AepProblemDetails>>\n> {\n return loadProblemDetailsResponseTestVector<AepEnrollIdempotencyConflictInput>(\n \"idempotency/enroll-conflict.json\"\n );\n}\n\nexport function loadPlatformDiscoveryTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\"platform/discovery.json\");\n}\n\nexport function loadPlatformProvisionRequestTestVector(): Promise<\n AepTestVector<Record<string, unknown>, Record<string, never>>\n> {\n return loadTestVector<Record<string, unknown>, Record<string, never>>(\n \"platform/provision-request.json\"\n );\n}\n\nexport function loadPlatformProvisionResponseTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\n \"platform/provision-response.json\"\n );\n}\n\nexport function loadPlatformListResponseTestVector(): Promise<\n AepTestVector<Record<string, unknown>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, unknown>, Record<string, unknown>>(\n \"platform/list-response.json\"\n );\n}\n\nexport function loadPlatformLifecycleRequestTestVector(): Promise<\n AepTestVector<Record<string, unknown>, Record<string, never>>\n> {\n return loadTestVector<Record<string, unknown>, Record<string, never>>(\n \"platform/lifecycle-request.json\"\n );\n}\n\nexport function loadPlatformLifecycleResponseTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\n \"platform/lifecycle-response.json\"\n );\n}\n\nexport function loadPlatformSignRequestTestVector(): Promise<\n AepTestVector<Record<string, unknown>, Record<string, never>>\n> {\n return loadTestVector<Record<string, unknown>, Record<string, never>>(\n \"platform/sign-request.json\"\n );\n}\n\nexport function loadPlatformSignResponseTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\n \"platform/sign-response.json\"\n );\n}\n\nexport function loadPlatformVerificationRequestTestVector(): Promise<\n AepTestVector<Record<string, unknown>, Record<string, never>>\n> {\n return loadTestVector<Record<string, unknown>, Record<string, never>>(\n \"platform/verification-request.json\"\n );\n}\n\nexport function loadPlatformVerificationResponseRecognizedTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\n \"platform/verification-response-recognized.json\"\n );\n}\n\nexport function loadPlatformVerificationResponseUnrecognizedTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\n \"platform/verification-response-unrecognized.json\"\n );\n}\n\nasync function readJson<T>(file: string): Promise<T> {\n return JSON.parse(await readFile(file, \"utf8\")) as T;\n}\n\ninterface AepCommandRequestExpectation<TBody> {\n authorization_scheme: string;\n body: TBody;\n client_assertion_op: string;\n content_type: string;\n method: string;\n path: string;\n}\n\nexport interface AepCommandResponseExpectation<TBody> {\n body: TBody;\n content_type: string;\n status: number;\n}\n\nexport interface AepEnrollIdempotencyConflictInput {\n agent_did: string;\n first_body_hash: string;\n idempotency_key: string;\n second_body_hash: string;\n}\n\nasync function loadBuiltInGrantResponseTestVector(\n grantType: AepGrantType,\n relativePath: string\n): Promise<AepTestVector<GrantRequest, AepBuiltInGrantResponse>> {\n const vector = await loadTestVector<unknown, unknown>(relativePath);\n\n return {\n ...vector,\n input: parseGrantRequest(vector.input),\n expected: parseBuiltInGrantResponse(grantType, vector.expected)\n };\n}\n\nasync function loadProblemDetailsResponseTestVector<TInput>(\n relativePath: string\n): Promise<AepTestVector<TInput, AepCommandResponseExpectation<AepProblemDetails>>> {\n const vector = await loadTestVector<TInput, AepCommandResponseExpectation<unknown>>(relativePath);\n\n return {\n ...vector,\n expected: {\n ...vector.expected,\n body: parseProblemDetails(vector.expected.body)\n }\n };\n}\n"],"mappings":"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","names":["path"]}
|