@memberjunction/credentials 3.3.0 → 4.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.
- package/README.md +130 -0
- package/dist/CredentialEngine.d.ts +8 -9
- package/dist/CredentialEngine.d.ts.map +1 -1
- package/dist/CredentialEngine.js +104 -65
- package/dist/CredentialEngine.js.map +1 -1
- package/dist/__tests__/credential-validation.test.d.ts +2 -0
- package/dist/__tests__/credential-validation.test.d.ts.map +1 -0
- package/dist/__tests__/credential-validation.test.js +440 -0
- package/dist/__tests__/credential-validation.test.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -9
- package/dist/index.js.map +1 -1
- package/dist/types.js +1 -2
- package/package.json +16 -9
package/README.md
CHANGED
|
@@ -171,6 +171,136 @@ Audit log entry includes:
|
|
|
171
171
|
- Success/failure status
|
|
172
172
|
- Duration in milliseconds
|
|
173
173
|
|
|
174
|
+
## JSON Schema Validation
|
|
175
|
+
|
|
176
|
+
The CredentialEngine uses [Ajv JSON Schema validator](https://ajv.js.org/) to validate credential values against the `FieldSchema` defined in each Credential Type. This ensures data integrity and security by enforcing constraints at save time.
|
|
177
|
+
|
|
178
|
+
### Supported Constraints
|
|
179
|
+
|
|
180
|
+
All JSON Schema Draft 7 validation keywords are supported:
|
|
181
|
+
|
|
182
|
+
| Constraint | Description | Example Use Case |
|
|
183
|
+
|-----------|-------------|------------------|
|
|
184
|
+
| `required` | Mandatory fields | API keys must include `apiKey` field |
|
|
185
|
+
| `const` | Fixed immutable values | OAuth token URLs that must never change |
|
|
186
|
+
| `enum` | Limited set of allowed values | Region selection, account types |
|
|
187
|
+
| `format` | Value format validation | `uri`, `email`, `date`, `uuid` |
|
|
188
|
+
| `pattern` | Regex pattern matching | API key format validation |
|
|
189
|
+
| `minLength`/`maxLength` | String length bounds | Password length requirements |
|
|
190
|
+
| `minimum`/`maximum` | Numeric range validation | Port numbers, timeout values |
|
|
191
|
+
| `default` | Auto-populated values | Default regions, endpoints |
|
|
192
|
+
|
|
193
|
+
### Schema Validation Flow
|
|
194
|
+
|
|
195
|
+
1. **Create/Update**: When `storeCredential()` or `updateCredential()` is called
|
|
196
|
+
2. **Apply Defaults**: Fields with `default` or `const` values are auto-populated
|
|
197
|
+
3. **Validate**: The complete credential values are validated against the schema
|
|
198
|
+
4. **Throw on Error**: If validation fails, a clear error message is thrown listing all violations
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
// This credential type schema
|
|
202
|
+
{
|
|
203
|
+
"type": "object",
|
|
204
|
+
"properties": {
|
|
205
|
+
"apiKey": {
|
|
206
|
+
"type": "string",
|
|
207
|
+
"pattern": "^sk-[a-zA-Z0-9]{32}$",
|
|
208
|
+
"description": "OpenAI API key"
|
|
209
|
+
},
|
|
210
|
+
"endpoint": {
|
|
211
|
+
"type": "string",
|
|
212
|
+
"format": "uri",
|
|
213
|
+
"default": "https://api.openai.com/v1"
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"required": ["apiKey"]
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Will reject this (invalid pattern)
|
|
220
|
+
await engine.storeCredential('OpenAI', 'Production', {
|
|
221
|
+
apiKey: 'invalid-format' // ❌ Fails pattern validation
|
|
222
|
+
}, {}, contextUser);
|
|
223
|
+
// Error: Field "apiKey" does not match required pattern
|
|
224
|
+
|
|
225
|
+
// Will reject this (invalid URI format)
|
|
226
|
+
await engine.storeCredential('OpenAI', 'Production', {
|
|
227
|
+
apiKey: 'sk-abcdefghijklmnopqrstuvwxyz123456',
|
|
228
|
+
endpoint: 'not-a-url' // ❌ Fails format validation
|
|
229
|
+
}, {}, contextUser);
|
|
230
|
+
// Error: Field "endpoint" must be a valid uri
|
|
231
|
+
|
|
232
|
+
// Will accept and auto-populate default
|
|
233
|
+
await engine.storeCredential('OpenAI', 'Production', {
|
|
234
|
+
apiKey: 'sk-abcdefghijklmnopqrstuvwxyz123456'
|
|
235
|
+
// endpoint auto-populated with default: https://api.openai.com/v1
|
|
236
|
+
}, {}, contextUser);
|
|
237
|
+
// ✅ Success
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Error Messages
|
|
241
|
+
|
|
242
|
+
Validation errors are formatted for clarity:
|
|
243
|
+
|
|
244
|
+
- **Required**: `Missing required field: apiKey`
|
|
245
|
+
- **Const**: `Field "tokenUrl" must be "https://api.box.com/oauth2/token"`
|
|
246
|
+
- **Enum**: `Field "region" must be one of: us-east-1, us-west-2, eu-west-1`
|
|
247
|
+
- **Format**: `Field "endpoint" must be a valid uri`
|
|
248
|
+
- **Pattern**: `Field "apiKey" does not match required pattern`
|
|
249
|
+
- **Length**: `Field "password" must be at least 8 characters`
|
|
250
|
+
- **Range**: `Field "port" must be at least 1024`
|
|
251
|
+
|
|
252
|
+
### Const Fields for Security
|
|
253
|
+
|
|
254
|
+
Use `const` in schemas to enforce fixed values that must never change:
|
|
255
|
+
|
|
256
|
+
```json
|
|
257
|
+
{
|
|
258
|
+
"tokenUrl": {
|
|
259
|
+
"type": "string",
|
|
260
|
+
"const": "https://api.box.com/oauth2/token",
|
|
261
|
+
"description": "Box.com OAuth token endpoint"
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
This prevents:
|
|
267
|
+
- Users from accidentally changing critical endpoints
|
|
268
|
+
- Malicious redirection of credentials to external servers
|
|
269
|
+
- Configuration drift across environments
|
|
270
|
+
|
|
271
|
+
Const values are:
|
|
272
|
+
- **Auto-populated** when creating credentials (users don't need to enter them)
|
|
273
|
+
- **Immutable** - validation rejects any attempt to change them
|
|
274
|
+
- **Visible** in UI as read-only fields
|
|
275
|
+
|
|
276
|
+
### Format Validation
|
|
277
|
+
|
|
278
|
+
The `format` keyword validates common data types:
|
|
279
|
+
|
|
280
|
+
- **uri** / **url** - Valid HTTP/HTTPS URLs
|
|
281
|
+
- **email** - Valid email addresses
|
|
282
|
+
- **date** - ISO 8601 dates
|
|
283
|
+
- **date-time** - ISO 8601 timestamps
|
|
284
|
+
- **uuid** - RFC 4122 UUIDs
|
|
285
|
+
- **ipv4** / **ipv6** - IP addresses
|
|
286
|
+
- **hostname** - Valid DNS hostnames
|
|
287
|
+
|
|
288
|
+
### Default Values
|
|
289
|
+
|
|
290
|
+
Use `default` to pre-populate fields with sensible values:
|
|
291
|
+
|
|
292
|
+
```json
|
|
293
|
+
{
|
|
294
|
+
"region": {
|
|
295
|
+
"type": "string",
|
|
296
|
+
"default": "us-east-1",
|
|
297
|
+
"enum": ["us-east-1", "us-west-2", "eu-west-1"]
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Users can override defaults, but they provide good starting points and reduce configuration errors.
|
|
303
|
+
|
|
174
304
|
## Credential Validation
|
|
175
305
|
|
|
176
306
|
Validate credentials against provider endpoints:
|
|
@@ -1,23 +1,19 @@
|
|
|
1
1
|
import { BaseEngine, IMetadataProvider, UserInfo } from "@memberjunction/core";
|
|
2
|
-
import { CredentialCategoryEntity, CredentialEntity, CredentialTypeEntity
|
|
3
|
-
import { CredentialResolutionOptions, ResolvedCredential, StoreCredentialOptions, CredentialValidationResult } from "./types";
|
|
2
|
+
import { CredentialCategoryEntity, CredentialEntity, CredentialTypeEntity } from "@memberjunction/core-entities";
|
|
3
|
+
import { CredentialResolutionOptions, ResolvedCredential, StoreCredentialOptions, CredentialValidationResult } from "./types.js";
|
|
4
4
|
export declare class CredentialEngine extends BaseEngine<CredentialEngine> {
|
|
5
5
|
private _credentials;
|
|
6
6
|
private _credentialTypes;
|
|
7
7
|
private _credentialCategories;
|
|
8
|
-
private _apiKeys;
|
|
9
|
-
private _apiScopes;
|
|
10
|
-
private _apiKeyScopes;
|
|
11
8
|
private _credentialsEntityId;
|
|
9
|
+
private _ajv;
|
|
10
|
+
private _schemaValidators;
|
|
11
|
+
constructor();
|
|
12
12
|
Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
|
|
13
13
|
static get Instance(): CredentialEngine;
|
|
14
14
|
get Credentials(): CredentialEntity[];
|
|
15
15
|
get CredentialTypes(): CredentialTypeEntity[];
|
|
16
16
|
get CredentialCategories(): CredentialCategoryEntity[];
|
|
17
|
-
get APIKeys(): APIKeyEntity[];
|
|
18
|
-
get APIKeyScopes(): APIKeyScopeEntity[];
|
|
19
|
-
get APIScopes(): APIScopeEntity[];
|
|
20
|
-
getAPIKeyByHash(hash: string): APIKeyEntity | undefined;
|
|
21
17
|
getCredentialTypeByName(typeName: string): CredentialTypeEntity | undefined;
|
|
22
18
|
getDefaultCredentialForType(credentialTypeName: string): CredentialEntity | undefined;
|
|
23
19
|
getCredentialById(credentialId: string): CredentialEntity | undefined;
|
|
@@ -28,7 +24,10 @@ export declare class CredentialEngine extends BaseEngine<CredentialEngine> {
|
|
|
28
24
|
validateCredential(credentialId: string, contextUser: UserInfo): Promise<CredentialValidationResult>;
|
|
29
25
|
private resolveCredential;
|
|
30
26
|
private parseCredentialValues;
|
|
27
|
+
private getValidator;
|
|
31
28
|
private validateValues;
|
|
29
|
+
private formatValidationErrors;
|
|
30
|
+
private applySchemaDefaults;
|
|
32
31
|
private updateLastUsedAt;
|
|
33
32
|
private updateLastValidatedAt;
|
|
34
33
|
protected callValidationEndpoint(endpoint: string, values: Record<string, string>): Promise<CredentialValidationResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CredentialEngine.d.ts","sourceRoot":"","sources":["../src/CredentialEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAEV,iBAAiB,EAIjB,QAAQ,EACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEH,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"CredentialEngine.d.ts","sourceRoot":"","sources":["../src/CredentialEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAEV,iBAAiB,EAIjB,QAAQ,EACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEH,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACvB,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACH,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAE7B,MAAM,SAAS,CAAC;AAuCjB,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,gBAAgB,CAAC;IAE9D,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,qBAAqB,CAAkC;IAG/D,OAAO,CAAC,oBAAoB,CAAuB;IAGnD,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,iBAAiB,CAA4C;;IAwBxD,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyChH,WAAkB,QAAQ,IAAI,gBAAgB,CAE7C;IASD,IAAW,WAAW,IAAI,gBAAgB,EAAE,CAE3C;IAKD,IAAW,eAAe,IAAI,oBAAoB,EAAE,CAEnD;IAKD,IAAW,oBAAoB,IAAI,wBAAwB,EAAE,CAE5D;IASM,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAS3E,2BAA2B,CAAC,kBAAkB,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAYrF,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAOrE,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAiC/F,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChF,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,2BAAgC,GAC1C,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAsEpB,eAAe,CACxB,kBAAkB,EAAE,MAAM,EAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,gBAAgB,CAAC;IAwDf,gBAAgB,CACzB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAgDH,kBAAkB,CAC3B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,0BAA0B,CAAC;IAuDtC,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,mBAAmB;YA+Bb,gBAAgB;YAgBhB,qBAAqB;cAiBnB,sBAAsB,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,0BAA0B,CAAC;YAexB,SAAS;CAuC1B"}
|
package/dist/CredentialEngine.js
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
class CredentialEngine extends core_1.BaseEngine {
|
|
1
|
+
import { BaseEngine, LogError, LogStatus, Metadata } from "@memberjunction/core";
|
|
2
|
+
import Ajv from 'ajv';
|
|
3
|
+
import addFormats from 'ajv-formats';
|
|
4
|
+
const CREDENTIAL_ACCESS_AUDIT_LOG_TYPE_ID = '9375C9F9-1A58-44D6-9B09-8C6AF0714383';
|
|
5
|
+
export class CredentialEngine extends BaseEngine {
|
|
7
6
|
constructor() {
|
|
8
|
-
super(
|
|
7
|
+
super();
|
|
9
8
|
this._credentials = [];
|
|
10
9
|
this._credentialTypes = [];
|
|
11
10
|
this._credentialCategories = [];
|
|
12
|
-
this._apiKeys = [];
|
|
13
|
-
this._apiScopes = [];
|
|
14
|
-
this._apiKeyScopes = [];
|
|
15
11
|
this._credentialsEntityId = null;
|
|
12
|
+
this._schemaValidators = new Map();
|
|
13
|
+
this._ajv = new Ajv({
|
|
14
|
+
allErrors: true,
|
|
15
|
+
strict: false,
|
|
16
|
+
coerceTypes: false
|
|
17
|
+
});
|
|
18
|
+
addFormats(this._ajv);
|
|
16
19
|
}
|
|
17
20
|
async Config(forceRefresh, contextUser, provider) {
|
|
18
21
|
const params = [
|
|
@@ -30,21 +33,6 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
30
33
|
PropertyName: '_credentialCategories',
|
|
31
34
|
EntityName: 'MJ: Credential Categories',
|
|
32
35
|
CacheLocal: true
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
PropertyName: '_apiScopes',
|
|
36
|
-
EntityName: 'MJ: API Scopes',
|
|
37
|
-
CacheLocal: true
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
PropertyName: '_apiKeys',
|
|
41
|
-
EntityName: 'MJ: API Keys',
|
|
42
|
-
CacheLocal: true
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
PropertyName: '_apiKeyScopes',
|
|
46
|
-
EntityName: 'MJ: API Key Scopes',
|
|
47
|
-
CacheLocal: true
|
|
48
36
|
}
|
|
49
37
|
];
|
|
50
38
|
let entityMatch;
|
|
@@ -52,7 +40,7 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
52
40
|
entityMatch = provider.Entities.find(e => e.Name?.trim().toLowerCase() === 'mj: credentials');
|
|
53
41
|
}
|
|
54
42
|
else {
|
|
55
|
-
const md = new
|
|
43
|
+
const md = new Metadata();
|
|
56
44
|
entityMatch = md.EntityByName("MJ: Credentials");
|
|
57
45
|
}
|
|
58
46
|
if (entityMatch) {
|
|
@@ -75,18 +63,6 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
75
63
|
get CredentialCategories() {
|
|
76
64
|
return this._credentialCategories;
|
|
77
65
|
}
|
|
78
|
-
get APIKeys() {
|
|
79
|
-
return this._apiKeys;
|
|
80
|
-
}
|
|
81
|
-
get APIKeyScopes() {
|
|
82
|
-
return this._apiKeyScopes;
|
|
83
|
-
}
|
|
84
|
-
get APIScopes() {
|
|
85
|
-
return this._apiScopes;
|
|
86
|
-
}
|
|
87
|
-
getAPIKeyByHash(hash) {
|
|
88
|
-
return this._apiKeys.find(k => k.Hash === hash);
|
|
89
|
-
}
|
|
90
66
|
getCredentialTypeByName(typeName) {
|
|
91
67
|
return this._credentialTypes.find(t => t.Name.trim().toLowerCase() === typeName.trim().toLowerCase());
|
|
92
68
|
}
|
|
@@ -135,7 +111,7 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
135
111
|
durationMs: Date.now() - startTime
|
|
136
112
|
});
|
|
137
113
|
if (credential && options.contextUser) {
|
|
138
|
-
this.updateLastUsedAt(credential.ID, options.contextUser).catch(e =>
|
|
114
|
+
this.updateLastUsedAt(credential.ID, options.contextUser).catch(e => LogError(e));
|
|
139
115
|
}
|
|
140
116
|
return {
|
|
141
117
|
credential,
|
|
@@ -161,14 +137,15 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
161
137
|
if (!credType) {
|
|
162
138
|
throw new Error(`Credential type not found: ${credentialTypeName}`);
|
|
163
139
|
}
|
|
164
|
-
this.
|
|
165
|
-
|
|
140
|
+
const valuesWithDefaults = this.applySchemaDefaults(values, credType.FieldSchema);
|
|
141
|
+
this.validateValues(valuesWithDefaults, credType.FieldSchema, credType.ID);
|
|
142
|
+
const md = new Metadata();
|
|
166
143
|
const credEntity = await md.GetEntityObject('MJ: Credentials', contextUser);
|
|
167
144
|
credEntity.NewRecord();
|
|
168
145
|
credEntity.CredentialTypeID = credType.ID;
|
|
169
146
|
credEntity.Name = name;
|
|
170
147
|
credEntity.Description = options.description || null;
|
|
171
|
-
credEntity.Values = JSON.stringify(
|
|
148
|
+
credEntity.Values = JSON.stringify(valuesWithDefaults);
|
|
172
149
|
credEntity.IsDefault = options.isDefault ?? false;
|
|
173
150
|
credEntity.IsActive = true;
|
|
174
151
|
credEntity.CategoryID = options.categoryId || null;
|
|
@@ -187,7 +164,7 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
187
164
|
}
|
|
188
165
|
async updateCredential(credentialId, values, contextUser) {
|
|
189
166
|
this.TryThrowIfNotLoaded();
|
|
190
|
-
const md = new
|
|
167
|
+
const md = new Metadata();
|
|
191
168
|
const credEntity = await md.GetEntityObject('MJ: Credentials', contextUser);
|
|
192
169
|
const loaded = await credEntity.Load(credentialId);
|
|
193
170
|
if (!loaded) {
|
|
@@ -195,9 +172,13 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
195
172
|
}
|
|
196
173
|
const credType = this._credentialTypes.find(t => t.ID === credEntity.CredentialTypeID);
|
|
197
174
|
if (credType) {
|
|
198
|
-
this.
|
|
175
|
+
const valuesWithDefaults = this.applySchemaDefaults(values, credType.FieldSchema);
|
|
176
|
+
this.validateValues(valuesWithDefaults, credType.FieldSchema, credType.ID);
|
|
177
|
+
credEntity.Values = JSON.stringify(valuesWithDefaults);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
credEntity.Values = JSON.stringify(values);
|
|
199
181
|
}
|
|
200
|
-
credEntity.Values = JSON.stringify(values);
|
|
201
182
|
const saved = await credEntity.Save();
|
|
202
183
|
if (!saved) {
|
|
203
184
|
throw new Error('Failed to update credential');
|
|
@@ -231,7 +212,7 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
231
212
|
const values = this.parseCredentialValues(credential.Values);
|
|
232
213
|
const result = await this.callValidationEndpoint(credType.ValidationEndpoint, values);
|
|
233
214
|
if (contextUser) {
|
|
234
|
-
this.updateLastValidatedAt(credentialId, contextUser).catch(e =>
|
|
215
|
+
this.updateLastValidatedAt(credentialId, contextUser).catch(e => LogError(e));
|
|
235
216
|
}
|
|
236
217
|
await this.logAccess(credential, contextUser, {
|
|
237
218
|
operation: 'Validate',
|
|
@@ -261,57 +242,116 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
261
242
|
return JSON.parse(valuesField);
|
|
262
243
|
}
|
|
263
244
|
catch (e) {
|
|
264
|
-
|
|
245
|
+
LogError(`Failed to parse credential values: ${e}`);
|
|
265
246
|
return {};
|
|
266
247
|
}
|
|
267
248
|
}
|
|
268
|
-
|
|
249
|
+
getValidator(credentialTypeId, schemaJson) {
|
|
250
|
+
if (!this._schemaValidators.has(credentialTypeId)) {
|
|
251
|
+
const schema = JSON.parse(schemaJson);
|
|
252
|
+
const validator = this._ajv.compile(schema);
|
|
253
|
+
this._schemaValidators.set(credentialTypeId, validator);
|
|
254
|
+
}
|
|
255
|
+
return this._schemaValidators.get(credentialTypeId);
|
|
256
|
+
}
|
|
257
|
+
validateValues(values, fieldSchemaJson, credentialTypeId) {
|
|
269
258
|
if (!fieldSchemaJson)
|
|
270
259
|
return;
|
|
271
260
|
try {
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
261
|
+
const validator = credentialTypeId
|
|
262
|
+
? this.getValidator(credentialTypeId, fieldSchemaJson)
|
|
263
|
+
: this._ajv.compile(JSON.parse(fieldSchemaJson));
|
|
264
|
+
const valid = validator(values);
|
|
265
|
+
if (!valid) {
|
|
266
|
+
const errors = this.formatValidationErrors(validator.errors || []);
|
|
267
|
+
throw new Error(`Credential validation failed:\n${errors.join('\n')}`);
|
|
278
268
|
}
|
|
279
269
|
}
|
|
280
270
|
catch (e) {
|
|
281
271
|
if (e instanceof SyntaxError) {
|
|
282
|
-
|
|
272
|
+
LogError(`Invalid FieldSchema JSON: ${e}`);
|
|
273
|
+
throw new Error('Invalid credential type schema');
|
|
283
274
|
}
|
|
284
|
-
|
|
285
|
-
|
|
275
|
+
throw e;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
formatValidationErrors(errors) {
|
|
279
|
+
return errors.map(error => {
|
|
280
|
+
const field = error.instancePath.replace(/^\//, '') || 'credential';
|
|
281
|
+
switch (error.keyword) {
|
|
282
|
+
case 'required':
|
|
283
|
+
return `Missing required field: ${error.params.missingProperty}`;
|
|
284
|
+
case 'const':
|
|
285
|
+
return `Field "${field}" must be "${error.params.allowedValue}"`;
|
|
286
|
+
case 'enum':
|
|
287
|
+
const allowed = error.params.allowedValues.join(', ');
|
|
288
|
+
return `Field "${field}" must be one of: ${allowed}`;
|
|
289
|
+
case 'format':
|
|
290
|
+
return `Field "${field}" must be a valid ${error.params.format}`;
|
|
291
|
+
case 'pattern':
|
|
292
|
+
return `Field "${field}" does not match required pattern`;
|
|
293
|
+
case 'minLength':
|
|
294
|
+
return `Field "${field}" must be at least ${error.params.limit} characters`;
|
|
295
|
+
case 'maxLength':
|
|
296
|
+
return `Field "${field}" must be no more than ${error.params.limit} characters`;
|
|
297
|
+
case 'minimum':
|
|
298
|
+
return `Field "${field}" must be at least ${error.params.limit}`;
|
|
299
|
+
case 'maximum':
|
|
300
|
+
return `Field "${field}" must be no more than ${error.params.limit}`;
|
|
301
|
+
default:
|
|
302
|
+
return `Field "${field}": ${error.message}`;
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
applySchemaDefaults(values, fieldSchemaJson) {
|
|
307
|
+
if (!fieldSchemaJson)
|
|
308
|
+
return values;
|
|
309
|
+
try {
|
|
310
|
+
const schema = JSON.parse(fieldSchemaJson);
|
|
311
|
+
const properties = schema.properties || {};
|
|
312
|
+
const result = { ...values };
|
|
313
|
+
for (const [fieldName, fieldSchema] of Object.entries(properties)) {
|
|
314
|
+
const propSchema = fieldSchema;
|
|
315
|
+
if (!(fieldName in result) && 'const' in propSchema) {
|
|
316
|
+
result[fieldName] = String(propSchema.const);
|
|
317
|
+
}
|
|
318
|
+
else if (!(fieldName in result) && 'default' in propSchema) {
|
|
319
|
+
result[fieldName] = String(propSchema.default);
|
|
320
|
+
}
|
|
286
321
|
}
|
|
322
|
+
return result;
|
|
323
|
+
}
|
|
324
|
+
catch (e) {
|
|
325
|
+
LogError(`Failed to apply schema defaults: ${e}`);
|
|
326
|
+
return values;
|
|
287
327
|
}
|
|
288
328
|
}
|
|
289
329
|
async updateLastUsedAt(credentialId, contextUser) {
|
|
290
330
|
try {
|
|
291
|
-
const md = new
|
|
331
|
+
const md = new Metadata();
|
|
292
332
|
const credEntity = await md.GetEntityObject('MJ: Credentials', contextUser);
|
|
293
333
|
await credEntity.Load(credentialId);
|
|
294
334
|
credEntity.LastUsedAt = new Date();
|
|
295
335
|
await credEntity.Save();
|
|
296
336
|
}
|
|
297
337
|
catch (e) {
|
|
298
|
-
|
|
338
|
+
LogError(e);
|
|
299
339
|
}
|
|
300
340
|
}
|
|
301
341
|
async updateLastValidatedAt(credentialId, contextUser) {
|
|
302
342
|
try {
|
|
303
|
-
const md = new
|
|
343
|
+
const md = new Metadata();
|
|
304
344
|
const credEntity = await md.GetEntityObject('MJ: Credentials', contextUser);
|
|
305
345
|
await credEntity.Load(credentialId);
|
|
306
346
|
credEntity.LastValidatedAt = new Date();
|
|
307
347
|
await credEntity.Save();
|
|
308
348
|
}
|
|
309
349
|
catch (e) {
|
|
310
|
-
|
|
350
|
+
LogError(e);
|
|
311
351
|
}
|
|
312
352
|
}
|
|
313
353
|
async callValidationEndpoint(endpoint, values) {
|
|
314
|
-
|
|
354
|
+
LogStatus(`Validation endpoint configured but not implemented: ${endpoint}`);
|
|
315
355
|
return {
|
|
316
356
|
isValid: true,
|
|
317
357
|
errors: [],
|
|
@@ -324,7 +364,7 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
324
364
|
if (!contextUser) {
|
|
325
365
|
return;
|
|
326
366
|
}
|
|
327
|
-
const md = new
|
|
367
|
+
const md = new Metadata();
|
|
328
368
|
const auditLog = await md.GetEntityObject('Audit Logs', contextUser);
|
|
329
369
|
auditLog.NewRecord();
|
|
330
370
|
auditLog.UserID = contextUser.ID;
|
|
@@ -346,9 +386,8 @@ class CredentialEngine extends core_1.BaseEngine {
|
|
|
346
386
|
await auditLog.Save();
|
|
347
387
|
}
|
|
348
388
|
catch (e) {
|
|
349
|
-
|
|
389
|
+
LogError(`Failed to log credential access: ${e}`);
|
|
350
390
|
}
|
|
351
391
|
}
|
|
352
392
|
}
|
|
353
|
-
exports.CredentialEngine = CredentialEngine;
|
|
354
393
|
//# sourceMappingURL=CredentialEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CredentialEngine.js","sourceRoot":"","sources":["../src/CredentialEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CredentialEngine.js","sourceRoot":"","sources":["../src/CredentialEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-validation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/credential-validation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import { describe, test, expect, beforeEach } from '@jest/globals';
|
|
2
|
+
import Ajv from 'ajv';
|
|
3
|
+
import addFormats from 'ajv-formats';
|
|
4
|
+
describe('Credential Validation with Ajv', () => {
|
|
5
|
+
let ajv;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
ajv = new Ajv({
|
|
8
|
+
allErrors: true,
|
|
9
|
+
strict: false,
|
|
10
|
+
coerceTypes: false
|
|
11
|
+
});
|
|
12
|
+
addFormats(ajv);
|
|
13
|
+
});
|
|
14
|
+
describe('Required Field Validation', () => {
|
|
15
|
+
test('should reject when required field is missing', () => {
|
|
16
|
+
const schema = {
|
|
17
|
+
type: 'object',
|
|
18
|
+
properties: {
|
|
19
|
+
apiKey: { type: 'string' }
|
|
20
|
+
},
|
|
21
|
+
required: ['apiKey']
|
|
22
|
+
};
|
|
23
|
+
const validator = ajv.compile(schema);
|
|
24
|
+
const result = validator({});
|
|
25
|
+
expect(result).toBe(false);
|
|
26
|
+
expect(validator.errors).toBeDefined();
|
|
27
|
+
expect(validator.errors?.[0].keyword).toBe('required');
|
|
28
|
+
expect(validator.errors?.[0].params.missingProperty).toBe('apiKey');
|
|
29
|
+
});
|
|
30
|
+
test('should pass when all required fields are present', () => {
|
|
31
|
+
const schema = {
|
|
32
|
+
type: 'object',
|
|
33
|
+
properties: {
|
|
34
|
+
apiKey: { type: 'string' },
|
|
35
|
+
endpoint: { type: 'string' }
|
|
36
|
+
},
|
|
37
|
+
required: ['apiKey', 'endpoint']
|
|
38
|
+
};
|
|
39
|
+
const validator = ajv.compile(schema);
|
|
40
|
+
const result = validator({
|
|
41
|
+
apiKey: 'sk-test123',
|
|
42
|
+
endpoint: 'https://api.example.com'
|
|
43
|
+
});
|
|
44
|
+
expect(result).toBe(true);
|
|
45
|
+
expect(validator.errors).toBeNull();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('Const Field Validation', () => {
|
|
49
|
+
test('should reject when const field has wrong value', () => {
|
|
50
|
+
const schema = {
|
|
51
|
+
type: 'object',
|
|
52
|
+
properties: {
|
|
53
|
+
tokenUrl: {
|
|
54
|
+
type: 'string',
|
|
55
|
+
const: 'https://api.box.com/oauth2/token'
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const validator = ajv.compile(schema);
|
|
60
|
+
const result = validator({ tokenUrl: 'https://wrong.url.com' });
|
|
61
|
+
expect(result).toBe(false);
|
|
62
|
+
expect(validator.errors?.[0].keyword).toBe('const');
|
|
63
|
+
expect(validator.errors?.[0].params.allowedValue).toBe('https://api.box.com/oauth2/token');
|
|
64
|
+
});
|
|
65
|
+
test('should pass when const field matches exactly', () => {
|
|
66
|
+
const schema = {
|
|
67
|
+
type: 'object',
|
|
68
|
+
properties: {
|
|
69
|
+
tokenUrl: {
|
|
70
|
+
type: 'string',
|
|
71
|
+
const: 'https://api.box.com/oauth2/token'
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const validator = ajv.compile(schema);
|
|
76
|
+
const result = validator({ tokenUrl: 'https://api.box.com/oauth2/token' });
|
|
77
|
+
expect(result).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('Enum Field Validation', () => {
|
|
81
|
+
test('should reject when value is not in enum', () => {
|
|
82
|
+
const schema = {
|
|
83
|
+
type: 'object',
|
|
84
|
+
properties: {
|
|
85
|
+
boxSubjectType: {
|
|
86
|
+
type: 'string',
|
|
87
|
+
enum: ['enterprise', 'user']
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const validator = ajv.compile(schema);
|
|
92
|
+
const result = validator({ boxSubjectType: 'invalid' });
|
|
93
|
+
expect(result).toBe(false);
|
|
94
|
+
expect(validator.errors?.[0].keyword).toBe('enum');
|
|
95
|
+
expect(validator.errors?.[0].params.allowedValues).toEqual(['enterprise', 'user']);
|
|
96
|
+
});
|
|
97
|
+
test('should pass when value is in enum', () => {
|
|
98
|
+
const schema = {
|
|
99
|
+
type: 'object',
|
|
100
|
+
properties: {
|
|
101
|
+
boxSubjectType: {
|
|
102
|
+
type: 'string',
|
|
103
|
+
enum: ['enterprise', 'user']
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const validator = ajv.compile(schema);
|
|
108
|
+
const result = validator({ boxSubjectType: 'enterprise' });
|
|
109
|
+
expect(result).toBe(true);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
describe('Format Validation', () => {
|
|
113
|
+
test('should reject invalid URI format', () => {
|
|
114
|
+
const schema = {
|
|
115
|
+
type: 'object',
|
|
116
|
+
properties: {
|
|
117
|
+
endpoint: {
|
|
118
|
+
type: 'string',
|
|
119
|
+
format: 'uri'
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
const validator = ajv.compile(schema);
|
|
124
|
+
const result = validator({ endpoint: 'not-a-valid-url' });
|
|
125
|
+
expect(result).toBe(false);
|
|
126
|
+
expect(validator.errors?.[0].keyword).toBe('format');
|
|
127
|
+
expect(validator.errors?.[0].params.format).toBe('uri');
|
|
128
|
+
});
|
|
129
|
+
test('should pass valid URI format', () => {
|
|
130
|
+
const schema = {
|
|
131
|
+
type: 'object',
|
|
132
|
+
properties: {
|
|
133
|
+
endpoint: {
|
|
134
|
+
type: 'string',
|
|
135
|
+
format: 'uri'
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
const validator = ajv.compile(schema);
|
|
140
|
+
const result = validator({ endpoint: 'https://api.example.com/v1' });
|
|
141
|
+
expect(result).toBe(true);
|
|
142
|
+
});
|
|
143
|
+
test('should reject invalid email format', () => {
|
|
144
|
+
const schema = {
|
|
145
|
+
type: 'object',
|
|
146
|
+
properties: {
|
|
147
|
+
email: {
|
|
148
|
+
type: 'string',
|
|
149
|
+
format: 'email'
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const validator = ajv.compile(schema);
|
|
154
|
+
const result = validator({ email: 'not-an-email' });
|
|
155
|
+
expect(result).toBe(false);
|
|
156
|
+
expect(validator.errors?.[0].params.format).toBe('email');
|
|
157
|
+
});
|
|
158
|
+
test('should pass valid email format', () => {
|
|
159
|
+
const schema = {
|
|
160
|
+
type: 'object',
|
|
161
|
+
properties: {
|
|
162
|
+
email: {
|
|
163
|
+
type: 'string',
|
|
164
|
+
format: 'email'
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
const validator = ajv.compile(schema);
|
|
169
|
+
const result = validator({ email: 'test@example.com' });
|
|
170
|
+
expect(result).toBe(true);
|
|
171
|
+
});
|
|
172
|
+
test('should reject invalid uuid format', () => {
|
|
173
|
+
const schema = {
|
|
174
|
+
type: 'object',
|
|
175
|
+
properties: {
|
|
176
|
+
id: {
|
|
177
|
+
type: 'string',
|
|
178
|
+
format: 'uuid'
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
const validator = ajv.compile(schema);
|
|
183
|
+
const result = validator({ id: 'not-a-uuid' });
|
|
184
|
+
expect(result).toBe(false);
|
|
185
|
+
});
|
|
186
|
+
test('should pass valid uuid format', () => {
|
|
187
|
+
const schema = {
|
|
188
|
+
type: 'object',
|
|
189
|
+
properties: {
|
|
190
|
+
id: {
|
|
191
|
+
type: 'string',
|
|
192
|
+
format: 'uuid'
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
const validator = ajv.compile(schema);
|
|
197
|
+
const result = validator({ id: '550e8400-e29b-41d4-a716-446655440000' });
|
|
198
|
+
expect(result).toBe(true);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
describe('Pattern Validation', () => {
|
|
202
|
+
test('should reject value not matching pattern', () => {
|
|
203
|
+
const schema = {
|
|
204
|
+
type: 'object',
|
|
205
|
+
properties: {
|
|
206
|
+
apiKey: {
|
|
207
|
+
type: 'string',
|
|
208
|
+
pattern: '^sk-[a-zA-Z0-9]{32}$'
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
const validator = ajv.compile(schema);
|
|
213
|
+
const result = validator({ apiKey: 'invalid-key' });
|
|
214
|
+
expect(result).toBe(false);
|
|
215
|
+
expect(validator.errors?.[0].keyword).toBe('pattern');
|
|
216
|
+
});
|
|
217
|
+
test('should pass value matching pattern', () => {
|
|
218
|
+
const schema = {
|
|
219
|
+
type: 'object',
|
|
220
|
+
properties: {
|
|
221
|
+
apiKey: {
|
|
222
|
+
type: 'string',
|
|
223
|
+
pattern: '^sk-[a-zA-Z0-9]{32}$'
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
const validator = ajv.compile(schema);
|
|
228
|
+
const result = validator({ apiKey: 'sk-abcdefghijklmnopqrstuvwxyz123456' });
|
|
229
|
+
expect(result).toBe(true);
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
describe('Length Validation', () => {
|
|
233
|
+
test('should reject value shorter than minLength', () => {
|
|
234
|
+
const schema = {
|
|
235
|
+
type: 'object',
|
|
236
|
+
properties: {
|
|
237
|
+
password: {
|
|
238
|
+
type: 'string',
|
|
239
|
+
minLength: 8
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
const validator = ajv.compile(schema);
|
|
244
|
+
const result = validator({ password: 'short' });
|
|
245
|
+
expect(result).toBe(false);
|
|
246
|
+
expect(validator.errors?.[0].keyword).toBe('minLength');
|
|
247
|
+
expect(validator.errors?.[0].params.limit).toBe(8);
|
|
248
|
+
});
|
|
249
|
+
test('should reject value longer than maxLength', () => {
|
|
250
|
+
const schema = {
|
|
251
|
+
type: 'object',
|
|
252
|
+
properties: {
|
|
253
|
+
name: {
|
|
254
|
+
type: 'string',
|
|
255
|
+
maxLength: 10
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
const validator = ajv.compile(schema);
|
|
260
|
+
const result = validator({ name: 'this-is-too-long' });
|
|
261
|
+
expect(result).toBe(false);
|
|
262
|
+
expect(validator.errors?.[0].keyword).toBe('maxLength');
|
|
263
|
+
expect(validator.errors?.[0].params.limit).toBe(10);
|
|
264
|
+
});
|
|
265
|
+
test('should pass value within length bounds', () => {
|
|
266
|
+
const schema = {
|
|
267
|
+
type: 'object',
|
|
268
|
+
properties: {
|
|
269
|
+
password: {
|
|
270
|
+
type: 'string',
|
|
271
|
+
minLength: 8,
|
|
272
|
+
maxLength: 20
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
const validator = ajv.compile(schema);
|
|
277
|
+
const result = validator({ password: 'goodpassword' });
|
|
278
|
+
expect(result).toBe(true);
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
describe('Numeric Range Validation', () => {
|
|
282
|
+
test('should reject value below minimum', () => {
|
|
283
|
+
const schema = {
|
|
284
|
+
type: 'object',
|
|
285
|
+
properties: {
|
|
286
|
+
port: {
|
|
287
|
+
type: 'number',
|
|
288
|
+
minimum: 1024
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
const validator = ajv.compile(schema);
|
|
293
|
+
const result = validator({ port: 80 });
|
|
294
|
+
expect(result).toBe(false);
|
|
295
|
+
expect(validator.errors?.[0].keyword).toBe('minimum');
|
|
296
|
+
});
|
|
297
|
+
test('should reject value above maximum', () => {
|
|
298
|
+
const schema = {
|
|
299
|
+
type: 'object',
|
|
300
|
+
properties: {
|
|
301
|
+
port: {
|
|
302
|
+
type: 'number',
|
|
303
|
+
maximum: 65535
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
const validator = ajv.compile(schema);
|
|
308
|
+
const result = validator({ port: 70000 });
|
|
309
|
+
expect(result).toBe(false);
|
|
310
|
+
expect(validator.errors?.[0].keyword).toBe('maximum');
|
|
311
|
+
});
|
|
312
|
+
test('should pass value within numeric bounds', () => {
|
|
313
|
+
const schema = {
|
|
314
|
+
type: 'object',
|
|
315
|
+
properties: {
|
|
316
|
+
port: {
|
|
317
|
+
type: 'number',
|
|
318
|
+
minimum: 1024,
|
|
319
|
+
maximum: 65535
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
const validator = ajv.compile(schema);
|
|
324
|
+
const result = validator({ port: 8080 });
|
|
325
|
+
expect(result).toBe(true);
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
describe('Combined Constraints', () => {
|
|
329
|
+
test('should validate Box.com OAuth schema', () => {
|
|
330
|
+
const schema = {
|
|
331
|
+
type: 'object',
|
|
332
|
+
properties: {
|
|
333
|
+
clientId: { type: 'string' },
|
|
334
|
+
clientSecret: { type: 'string' },
|
|
335
|
+
tokenUrl: {
|
|
336
|
+
type: 'string',
|
|
337
|
+
const: 'https://api.box.com/oauth2/token'
|
|
338
|
+
},
|
|
339
|
+
boxSubjectType: {
|
|
340
|
+
type: 'string',
|
|
341
|
+
enum: ['enterprise', 'user']
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
required: ['clientId', 'clientSecret', 'tokenUrl', 'boxSubjectType']
|
|
345
|
+
};
|
|
346
|
+
const validator = ajv.compile(schema);
|
|
347
|
+
expect(validator({
|
|
348
|
+
clientId: 'test-client',
|
|
349
|
+
clientSecret: 'test-secret',
|
|
350
|
+
tokenUrl: 'https://api.box.com/oauth2/token',
|
|
351
|
+
boxSubjectType: 'enterprise'
|
|
352
|
+
})).toBe(true);
|
|
353
|
+
expect(validator({
|
|
354
|
+
clientId: 'test-client',
|
|
355
|
+
clientSecret: 'test-secret',
|
|
356
|
+
tokenUrl: 'https://wrong.url.com',
|
|
357
|
+
boxSubjectType: 'enterprise'
|
|
358
|
+
})).toBe(false);
|
|
359
|
+
expect(validator({
|
|
360
|
+
clientId: 'test-client',
|
|
361
|
+
clientSecret: 'test-secret',
|
|
362
|
+
tokenUrl: 'https://api.box.com/oauth2/token',
|
|
363
|
+
boxSubjectType: 'invalid'
|
|
364
|
+
})).toBe(false);
|
|
365
|
+
});
|
|
366
|
+
test('should validate GCP credential schema with defaults', () => {
|
|
367
|
+
const schema = {
|
|
368
|
+
type: 'object',
|
|
369
|
+
properties: {
|
|
370
|
+
projectId: { type: 'string' },
|
|
371
|
+
location: {
|
|
372
|
+
type: 'string',
|
|
373
|
+
default: 'us-central1'
|
|
374
|
+
},
|
|
375
|
+
endpoint: {
|
|
376
|
+
type: 'string',
|
|
377
|
+
format: 'uri'
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
required: ['projectId']
|
|
381
|
+
};
|
|
382
|
+
const validator = ajv.compile(schema);
|
|
383
|
+
expect(validator({
|
|
384
|
+
projectId: 'my-project',
|
|
385
|
+
endpoint: 'https://api.example.com'
|
|
386
|
+
})).toBe(true);
|
|
387
|
+
expect(validator({
|
|
388
|
+
projectId: 'my-project',
|
|
389
|
+
endpoint: 'not-a-uri'
|
|
390
|
+
})).toBe(false);
|
|
391
|
+
});
|
|
392
|
+
});
|
|
393
|
+
describe('Error Message Formatting', () => {
|
|
394
|
+
test('should format required error message', () => {
|
|
395
|
+
const schema = {
|
|
396
|
+
type: 'object',
|
|
397
|
+
properties: {
|
|
398
|
+
apiKey: { type: 'string' }
|
|
399
|
+
},
|
|
400
|
+
required: ['apiKey']
|
|
401
|
+
};
|
|
402
|
+
const validator = ajv.compile(schema);
|
|
403
|
+
validator({});
|
|
404
|
+
const error = validator.errors?.[0];
|
|
405
|
+
expect(error?.keyword).toBe('required');
|
|
406
|
+
expect(error?.params.missingProperty).toBe('apiKey');
|
|
407
|
+
const message = `Missing required field: ${error?.params.missingProperty}`;
|
|
408
|
+
expect(message).toBe('Missing required field: apiKey');
|
|
409
|
+
});
|
|
410
|
+
test('should format const error message', () => {
|
|
411
|
+
const schema = {
|
|
412
|
+
type: 'object',
|
|
413
|
+
properties: {
|
|
414
|
+
tokenUrl: { const: 'https://api.box.com/oauth2/token' }
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
const validator = ajv.compile(schema);
|
|
418
|
+
validator({ tokenUrl: 'wrong' });
|
|
419
|
+
const error = validator.errors?.[0];
|
|
420
|
+
const field = error?.instancePath.replace(/^\//, '') || 'credential';
|
|
421
|
+
const message = `Field "${field}" must be "${error?.params.allowedValue}"`;
|
|
422
|
+
expect(message).toContain('must be "https://api.box.com/oauth2/token"');
|
|
423
|
+
});
|
|
424
|
+
test('should format enum error message', () => {
|
|
425
|
+
const schema = {
|
|
426
|
+
type: 'object',
|
|
427
|
+
properties: {
|
|
428
|
+
type: { enum: ['enterprise', 'user'] }
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
const validator = ajv.compile(schema);
|
|
432
|
+
validator({ type: 'invalid' });
|
|
433
|
+
const error = validator.errors?.[0];
|
|
434
|
+
const allowed = error?.params.allowedValues.join(', ');
|
|
435
|
+
const message = `Field "type" must be one of: ${allowed}`;
|
|
436
|
+
expect(message).toBe('Field "type" must be one of: enterprise, user');
|
|
437
|
+
});
|
|
438
|
+
});
|
|
439
|
+
});
|
|
440
|
+
//# sourceMappingURL=credential-validation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-validation.test.js","sourceRoot":"","sources":["../../src/__tests__/credential-validation.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { CredentialEngine } from './CredentialEngine';
|
|
2
|
-
export { CredentialResolutionOptions, ResolvedCredential, StoreCredentialOptions, CredentialValidationResult, CredentialAccessDetails, APIKeyCredentialValues, APIKeyWithEndpointCredentialValues, OAuth2ClientCredentialValues, BasicAuthCredentialValues, AzureServicePrincipalCredentialValues, AWSIAMCredentialValues, DatabaseConnectionCredentialValues, TwilioCredentialValues } from './types';
|
|
1
|
+
export { CredentialEngine } from './CredentialEngine.js';
|
|
2
|
+
export { CredentialResolutionOptions, ResolvedCredential, StoreCredentialOptions, CredentialValidationResult, CredentialAccessDetails, APIKeyCredentialValues, APIKeyWithEndpointCredentialValues, OAuth2ClientCredentialValues, BasicAuthCredentialValues, AzureServicePrincipalCredentialValues, AWSIAMCredentialValues, DatabaseConnectionCredentialValues, TwilioCredentialValues } from './types.js';
|
|
3
3
|
export { CredentialEntity, CredentialTypeEntity, CredentialCategoryEntity } from '@memberjunction/core-entities';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.CredentialCategoryEntity = exports.CredentialTypeEntity = exports.CredentialEntity = exports.CredentialEngine = void 0;
|
|
4
|
-
var CredentialEngine_1 = require("./CredentialEngine");
|
|
5
|
-
Object.defineProperty(exports, "CredentialEngine", { enumerable: true, get: function () { return CredentialEngine_1.CredentialEngine; } });
|
|
6
|
-
var core_entities_1 = require("@memberjunction/core-entities");
|
|
7
|
-
Object.defineProperty(exports, "CredentialEntity", { enumerable: true, get: function () { return core_entities_1.CredentialEntity; } });
|
|
8
|
-
Object.defineProperty(exports, "CredentialTypeEntity", { enumerable: true, get: function () { return core_entities_1.CredentialTypeEntity; } });
|
|
9
|
-
Object.defineProperty(exports, "CredentialCategoryEntity", { enumerable: true, get: function () { return core_entities_1.CredentialCategoryEntity; } });
|
|
1
|
+
export { CredentialEngine } from './CredentialEngine.js';
|
|
2
|
+
export { CredentialEntity, CredentialTypeEntity, CredentialCategoryEntity } from '@memberjunction/core-entities';
|
|
10
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAqBtD,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EAC3B,MAAM,+BAA+B,CAAC"}
|
package/dist/types.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/credentials",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "MemberJunction: Credential Engine - secure credential management with caching, encryption, and audit logging.",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
7
|
"types": "dist/index.d.ts",
|
|
7
8
|
"files": [
|
|
@@ -9,21 +10,27 @@
|
|
|
9
10
|
],
|
|
10
11
|
"scripts": {
|
|
11
12
|
"start": "ts-node-dev src/index.ts",
|
|
12
|
-
"build": "tsc",
|
|
13
|
-
"test": "
|
|
13
|
+
"build": "tsc && tsc-alias -f",
|
|
14
|
+
"test": "jest"
|
|
14
15
|
},
|
|
15
16
|
"author": "MemberJunction.com",
|
|
16
17
|
"license": "ISC",
|
|
17
18
|
"dependencies": {
|
|
18
|
-
"@memberjunction/core": "
|
|
19
|
-
"@memberjunction/global": "
|
|
20
|
-
"@memberjunction/core-entities": "
|
|
21
|
-
"
|
|
19
|
+
"@memberjunction/core": "4.0.0",
|
|
20
|
+
"@memberjunction/global": "4.0.0",
|
|
21
|
+
"@memberjunction/core-entities": "4.0.0",
|
|
22
|
+
"ajv": "^8.17.1",
|
|
23
|
+
"ajv-formats": "^3.0.1",
|
|
24
|
+
"rxjs": "^7.8.2"
|
|
22
25
|
},
|
|
23
26
|
"devDependencies": {
|
|
24
|
-
"@types/
|
|
27
|
+
"@types/jest": "^30.0.0",
|
|
28
|
+
"@types/node": "24.10.11",
|
|
29
|
+
"jest": "^30.2.0",
|
|
30
|
+
"tsc-alias": "^1.8.16",
|
|
31
|
+
"ts-jest": "^29.4.6",
|
|
25
32
|
"ts-node-dev": "^2.0.0",
|
|
26
|
-
"typescript": "^5.
|
|
33
|
+
"typescript": "^5.9.3"
|
|
27
34
|
},
|
|
28
35
|
"repository": {
|
|
29
36
|
"type": "git",
|