@memberjunction/credentials 3.3.0 → 3.4.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 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, APIKeyEntity, APIScopeEntity, APIKeyScopeEntity } from "@memberjunction/core-entities";
2
+ import { CredentialCategoryEntity, CredentialEntity, CredentialTypeEntity } from "@memberjunction/core-entities";
3
3
  import { CredentialResolutionOptions, ResolvedCredential, StoreCredentialOptions, CredentialValidationResult } from "./types";
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,EACpB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACpB,MAAM,+BAA+B,CAAC;AACvC,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;IAC/D,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,aAAa,CAA2B;IAGhD,OAAO,CAAC,oBAAoB,CAAuB;IAUtC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwDhH,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;IAMD,IAAW,OAAO,IAAI,YAAY,EAAE,CAEnC;IAID,IAAW,YAAY,IAAI,iBAAiB,EAAE,CAE7C;IAID,IAAW,SAAS,IAAI,cAAc,EAAE,CAEvC;IASM,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAYvD,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;IAqDf,gBAAgB,CACzB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAuCH,kBAAkB,CAC3B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,0BAA0B,CAAC;IAuDtC,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,qBAAqB;IAkB7B,OAAO,CAAC,cAAc;YA0BR,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"}
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"}
@@ -1,18 +1,27 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.CredentialEngine = void 0;
4
7
  const core_1 = require("@memberjunction/core");
5
- const CREDENTIAL_ACCESS_AUDIT_LOG_TYPE_ID = 'E8D4D100-E785-42D3-997F-ECFF3B0BCFC0';
8
+ const ajv_1 = __importDefault(require("ajv"));
9
+ const ajv_formats_1 = __importDefault(require("ajv-formats"));
10
+ const CREDENTIAL_ACCESS_AUDIT_LOG_TYPE_ID = '9375C9F9-1A58-44D6-9B09-8C6AF0714383';
6
11
  class CredentialEngine extends core_1.BaseEngine {
7
12
  constructor() {
8
- super(...arguments);
13
+ super();
9
14
  this._credentials = [];
10
15
  this._credentialTypes = [];
11
16
  this._credentialCategories = [];
12
- this._apiKeys = [];
13
- this._apiScopes = [];
14
- this._apiKeyScopes = [];
15
17
  this._credentialsEntityId = null;
18
+ this._schemaValidators = new Map();
19
+ this._ajv = new ajv_1.default({
20
+ allErrors: true,
21
+ strict: false,
22
+ coerceTypes: false
23
+ });
24
+ (0, ajv_formats_1.default)(this._ajv);
16
25
  }
17
26
  async Config(forceRefresh, contextUser, provider) {
18
27
  const params = [
@@ -30,21 +39,6 @@ class CredentialEngine extends core_1.BaseEngine {
30
39
  PropertyName: '_credentialCategories',
31
40
  EntityName: 'MJ: Credential Categories',
32
41
  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
42
  }
49
43
  ];
50
44
  let entityMatch;
@@ -75,18 +69,6 @@ class CredentialEngine extends core_1.BaseEngine {
75
69
  get CredentialCategories() {
76
70
  return this._credentialCategories;
77
71
  }
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
72
  getCredentialTypeByName(typeName) {
91
73
  return this._credentialTypes.find(t => t.Name.trim().toLowerCase() === typeName.trim().toLowerCase());
92
74
  }
@@ -161,14 +143,15 @@ class CredentialEngine extends core_1.BaseEngine {
161
143
  if (!credType) {
162
144
  throw new Error(`Credential type not found: ${credentialTypeName}`);
163
145
  }
164
- this.validateValues(values, credType.FieldSchema);
146
+ const valuesWithDefaults = this.applySchemaDefaults(values, credType.FieldSchema);
147
+ this.validateValues(valuesWithDefaults, credType.FieldSchema, credType.ID);
165
148
  const md = new core_1.Metadata();
166
149
  const credEntity = await md.GetEntityObject('MJ: Credentials', contextUser);
167
150
  credEntity.NewRecord();
168
151
  credEntity.CredentialTypeID = credType.ID;
169
152
  credEntity.Name = name;
170
153
  credEntity.Description = options.description || null;
171
- credEntity.Values = JSON.stringify(values);
154
+ credEntity.Values = JSON.stringify(valuesWithDefaults);
172
155
  credEntity.IsDefault = options.isDefault ?? false;
173
156
  credEntity.IsActive = true;
174
157
  credEntity.CategoryID = options.categoryId || null;
@@ -195,9 +178,13 @@ class CredentialEngine extends core_1.BaseEngine {
195
178
  }
196
179
  const credType = this._credentialTypes.find(t => t.ID === credEntity.CredentialTypeID);
197
180
  if (credType) {
198
- this.validateValues(values, credType.FieldSchema);
181
+ const valuesWithDefaults = this.applySchemaDefaults(values, credType.FieldSchema);
182
+ this.validateValues(valuesWithDefaults, credType.FieldSchema, credType.ID);
183
+ credEntity.Values = JSON.stringify(valuesWithDefaults);
184
+ }
185
+ else {
186
+ credEntity.Values = JSON.stringify(values);
199
187
  }
200
- credEntity.Values = JSON.stringify(values);
201
188
  const saved = await credEntity.Save();
202
189
  if (!saved) {
203
190
  throw new Error('Failed to update credential');
@@ -265,25 +252,84 @@ class CredentialEngine extends core_1.BaseEngine {
265
252
  return {};
266
253
  }
267
254
  }
268
- validateValues(values, fieldSchemaJson) {
255
+ getValidator(credentialTypeId, schemaJson) {
256
+ if (!this._schemaValidators.has(credentialTypeId)) {
257
+ const schema = JSON.parse(schemaJson);
258
+ const validator = this._ajv.compile(schema);
259
+ this._schemaValidators.set(credentialTypeId, validator);
260
+ }
261
+ return this._schemaValidators.get(credentialTypeId);
262
+ }
263
+ validateValues(values, fieldSchemaJson, credentialTypeId) {
269
264
  if (!fieldSchemaJson)
270
265
  return;
271
266
  try {
272
- const schema = JSON.parse(fieldSchemaJson);
273
- const required = schema.required || [];
274
- for (const field of required) {
275
- if (!values[field]) {
276
- throw new Error(`Required field missing: ${field}`);
277
- }
267
+ const validator = credentialTypeId
268
+ ? this.getValidator(credentialTypeId, fieldSchemaJson)
269
+ : this._ajv.compile(JSON.parse(fieldSchemaJson));
270
+ const valid = validator(values);
271
+ if (!valid) {
272
+ const errors = this.formatValidationErrors(validator.errors || []);
273
+ throw new Error(`Credential validation failed:\n${errors.join('\n')}`);
278
274
  }
279
275
  }
280
276
  catch (e) {
281
277
  if (e instanceof SyntaxError) {
282
278
  (0, core_1.LogError)(`Invalid FieldSchema JSON: ${e}`);
279
+ throw new Error('Invalid credential type schema');
283
280
  }
284
- else {
285
- throw e;
281
+ throw e;
282
+ }
283
+ }
284
+ formatValidationErrors(errors) {
285
+ return errors.map(error => {
286
+ const field = error.instancePath.replace(/^\//, '') || 'credential';
287
+ switch (error.keyword) {
288
+ case 'required':
289
+ return `Missing required field: ${error.params.missingProperty}`;
290
+ case 'const':
291
+ return `Field "${field}" must be "${error.params.allowedValue}"`;
292
+ case 'enum':
293
+ const allowed = error.params.allowedValues.join(', ');
294
+ return `Field "${field}" must be one of: ${allowed}`;
295
+ case 'format':
296
+ return `Field "${field}" must be a valid ${error.params.format}`;
297
+ case 'pattern':
298
+ return `Field "${field}" does not match required pattern`;
299
+ case 'minLength':
300
+ return `Field "${field}" must be at least ${error.params.limit} characters`;
301
+ case 'maxLength':
302
+ return `Field "${field}" must be no more than ${error.params.limit} characters`;
303
+ case 'minimum':
304
+ return `Field "${field}" must be at least ${error.params.limit}`;
305
+ case 'maximum':
306
+ return `Field "${field}" must be no more than ${error.params.limit}`;
307
+ default:
308
+ return `Field "${field}": ${error.message}`;
309
+ }
310
+ });
311
+ }
312
+ applySchemaDefaults(values, fieldSchemaJson) {
313
+ if (!fieldSchemaJson)
314
+ return values;
315
+ try {
316
+ const schema = JSON.parse(fieldSchemaJson);
317
+ const properties = schema.properties || {};
318
+ const result = { ...values };
319
+ for (const [fieldName, fieldSchema] of Object.entries(properties)) {
320
+ const propSchema = fieldSchema;
321
+ if (!(fieldName in result) && 'const' in propSchema) {
322
+ result[fieldName] = String(propSchema.const);
323
+ }
324
+ else if (!(fieldName in result) && 'default' in propSchema) {
325
+ result[fieldName] = String(propSchema.default);
326
+ }
286
327
  }
328
+ return result;
329
+ }
330
+ catch (e) {
331
+ (0, core_1.LogError)(`Failed to apply schema defaults: ${e}`);
332
+ return values;
287
333
  }
288
334
  }
289
335
  async updateLastUsedAt(credentialId, contextUser) {
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=credential-validation.test.d.ts.map
@@ -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,445 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const globals_1 = require("@jest/globals");
7
+ const ajv_1 = __importDefault(require("ajv"));
8
+ const ajv_formats_1 = __importDefault(require("ajv-formats"));
9
+ (0, globals_1.describe)('Credential Validation with Ajv', () => {
10
+ let ajv;
11
+ (0, globals_1.beforeEach)(() => {
12
+ ajv = new ajv_1.default({
13
+ allErrors: true,
14
+ strict: false,
15
+ coerceTypes: false
16
+ });
17
+ (0, ajv_formats_1.default)(ajv);
18
+ });
19
+ (0, globals_1.describe)('Required Field Validation', () => {
20
+ (0, globals_1.test)('should reject when required field is missing', () => {
21
+ const schema = {
22
+ type: 'object',
23
+ properties: {
24
+ apiKey: { type: 'string' }
25
+ },
26
+ required: ['apiKey']
27
+ };
28
+ const validator = ajv.compile(schema);
29
+ const result = validator({});
30
+ (0, globals_1.expect)(result).toBe(false);
31
+ (0, globals_1.expect)(validator.errors).toBeDefined();
32
+ (0, globals_1.expect)(validator.errors?.[0].keyword).toBe('required');
33
+ (0, globals_1.expect)(validator.errors?.[0].params.missingProperty).toBe('apiKey');
34
+ });
35
+ (0, globals_1.test)('should pass when all required fields are present', () => {
36
+ const schema = {
37
+ type: 'object',
38
+ properties: {
39
+ apiKey: { type: 'string' },
40
+ endpoint: { type: 'string' }
41
+ },
42
+ required: ['apiKey', 'endpoint']
43
+ };
44
+ const validator = ajv.compile(schema);
45
+ const result = validator({
46
+ apiKey: 'sk-test123',
47
+ endpoint: 'https://api.example.com'
48
+ });
49
+ (0, globals_1.expect)(result).toBe(true);
50
+ (0, globals_1.expect)(validator.errors).toBeNull();
51
+ });
52
+ });
53
+ (0, globals_1.describe)('Const Field Validation', () => {
54
+ (0, globals_1.test)('should reject when const field has wrong value', () => {
55
+ const schema = {
56
+ type: 'object',
57
+ properties: {
58
+ tokenUrl: {
59
+ type: 'string',
60
+ const: 'https://api.box.com/oauth2/token'
61
+ }
62
+ }
63
+ };
64
+ const validator = ajv.compile(schema);
65
+ const result = validator({ tokenUrl: 'https://wrong.url.com' });
66
+ (0, globals_1.expect)(result).toBe(false);
67
+ (0, globals_1.expect)(validator.errors?.[0].keyword).toBe('const');
68
+ (0, globals_1.expect)(validator.errors?.[0].params.allowedValue).toBe('https://api.box.com/oauth2/token');
69
+ });
70
+ (0, globals_1.test)('should pass when const field matches exactly', () => {
71
+ const schema = {
72
+ type: 'object',
73
+ properties: {
74
+ tokenUrl: {
75
+ type: 'string',
76
+ const: 'https://api.box.com/oauth2/token'
77
+ }
78
+ }
79
+ };
80
+ const validator = ajv.compile(schema);
81
+ const result = validator({ tokenUrl: 'https://api.box.com/oauth2/token' });
82
+ (0, globals_1.expect)(result).toBe(true);
83
+ });
84
+ });
85
+ (0, globals_1.describe)('Enum Field Validation', () => {
86
+ (0, globals_1.test)('should reject when value is not in enum', () => {
87
+ const schema = {
88
+ type: 'object',
89
+ properties: {
90
+ boxSubjectType: {
91
+ type: 'string',
92
+ enum: ['enterprise', 'user']
93
+ }
94
+ }
95
+ };
96
+ const validator = ajv.compile(schema);
97
+ const result = validator({ boxSubjectType: 'invalid' });
98
+ (0, globals_1.expect)(result).toBe(false);
99
+ (0, globals_1.expect)(validator.errors?.[0].keyword).toBe('enum');
100
+ (0, globals_1.expect)(validator.errors?.[0].params.allowedValues).toEqual(['enterprise', 'user']);
101
+ });
102
+ (0, globals_1.test)('should pass when value is in enum', () => {
103
+ const schema = {
104
+ type: 'object',
105
+ properties: {
106
+ boxSubjectType: {
107
+ type: 'string',
108
+ enum: ['enterprise', 'user']
109
+ }
110
+ }
111
+ };
112
+ const validator = ajv.compile(schema);
113
+ const result = validator({ boxSubjectType: 'enterprise' });
114
+ (0, globals_1.expect)(result).toBe(true);
115
+ });
116
+ });
117
+ (0, globals_1.describe)('Format Validation', () => {
118
+ (0, globals_1.test)('should reject invalid URI format', () => {
119
+ const schema = {
120
+ type: 'object',
121
+ properties: {
122
+ endpoint: {
123
+ type: 'string',
124
+ format: 'uri'
125
+ }
126
+ }
127
+ };
128
+ const validator = ajv.compile(schema);
129
+ const result = validator({ endpoint: 'not-a-valid-url' });
130
+ (0, globals_1.expect)(result).toBe(false);
131
+ (0, globals_1.expect)(validator.errors?.[0].keyword).toBe('format');
132
+ (0, globals_1.expect)(validator.errors?.[0].params.format).toBe('uri');
133
+ });
134
+ (0, globals_1.test)('should pass valid URI format', () => {
135
+ const schema = {
136
+ type: 'object',
137
+ properties: {
138
+ endpoint: {
139
+ type: 'string',
140
+ format: 'uri'
141
+ }
142
+ }
143
+ };
144
+ const validator = ajv.compile(schema);
145
+ const result = validator({ endpoint: 'https://api.example.com/v1' });
146
+ (0, globals_1.expect)(result).toBe(true);
147
+ });
148
+ (0, globals_1.test)('should reject invalid email format', () => {
149
+ const schema = {
150
+ type: 'object',
151
+ properties: {
152
+ email: {
153
+ type: 'string',
154
+ format: 'email'
155
+ }
156
+ }
157
+ };
158
+ const validator = ajv.compile(schema);
159
+ const result = validator({ email: 'not-an-email' });
160
+ (0, globals_1.expect)(result).toBe(false);
161
+ (0, globals_1.expect)(validator.errors?.[0].params.format).toBe('email');
162
+ });
163
+ (0, globals_1.test)('should pass valid email format', () => {
164
+ const schema = {
165
+ type: 'object',
166
+ properties: {
167
+ email: {
168
+ type: 'string',
169
+ format: 'email'
170
+ }
171
+ }
172
+ };
173
+ const validator = ajv.compile(schema);
174
+ const result = validator({ email: 'test@example.com' });
175
+ (0, globals_1.expect)(result).toBe(true);
176
+ });
177
+ (0, globals_1.test)('should reject invalid uuid format', () => {
178
+ const schema = {
179
+ type: 'object',
180
+ properties: {
181
+ id: {
182
+ type: 'string',
183
+ format: 'uuid'
184
+ }
185
+ }
186
+ };
187
+ const validator = ajv.compile(schema);
188
+ const result = validator({ id: 'not-a-uuid' });
189
+ (0, globals_1.expect)(result).toBe(false);
190
+ });
191
+ (0, globals_1.test)('should pass valid uuid format', () => {
192
+ const schema = {
193
+ type: 'object',
194
+ properties: {
195
+ id: {
196
+ type: 'string',
197
+ format: 'uuid'
198
+ }
199
+ }
200
+ };
201
+ const validator = ajv.compile(schema);
202
+ const result = validator({ id: '550e8400-e29b-41d4-a716-446655440000' });
203
+ (0, globals_1.expect)(result).toBe(true);
204
+ });
205
+ });
206
+ (0, globals_1.describe)('Pattern Validation', () => {
207
+ (0, globals_1.test)('should reject value not matching pattern', () => {
208
+ const schema = {
209
+ type: 'object',
210
+ properties: {
211
+ apiKey: {
212
+ type: 'string',
213
+ pattern: '^sk-[a-zA-Z0-9]{32}$'
214
+ }
215
+ }
216
+ };
217
+ const validator = ajv.compile(schema);
218
+ const result = validator({ apiKey: 'invalid-key' });
219
+ (0, globals_1.expect)(result).toBe(false);
220
+ (0, globals_1.expect)(validator.errors?.[0].keyword).toBe('pattern');
221
+ });
222
+ (0, globals_1.test)('should pass value matching pattern', () => {
223
+ const schema = {
224
+ type: 'object',
225
+ properties: {
226
+ apiKey: {
227
+ type: 'string',
228
+ pattern: '^sk-[a-zA-Z0-9]{32}$'
229
+ }
230
+ }
231
+ };
232
+ const validator = ajv.compile(schema);
233
+ const result = validator({ apiKey: 'sk-abcdefghijklmnopqrstuvwxyz123456' });
234
+ (0, globals_1.expect)(result).toBe(true);
235
+ });
236
+ });
237
+ (0, globals_1.describe)('Length Validation', () => {
238
+ (0, globals_1.test)('should reject value shorter than minLength', () => {
239
+ const schema = {
240
+ type: 'object',
241
+ properties: {
242
+ password: {
243
+ type: 'string',
244
+ minLength: 8
245
+ }
246
+ }
247
+ };
248
+ const validator = ajv.compile(schema);
249
+ const result = validator({ password: 'short' });
250
+ (0, globals_1.expect)(result).toBe(false);
251
+ (0, globals_1.expect)(validator.errors?.[0].keyword).toBe('minLength');
252
+ (0, globals_1.expect)(validator.errors?.[0].params.limit).toBe(8);
253
+ });
254
+ (0, globals_1.test)('should reject value longer than maxLength', () => {
255
+ const schema = {
256
+ type: 'object',
257
+ properties: {
258
+ name: {
259
+ type: 'string',
260
+ maxLength: 10
261
+ }
262
+ }
263
+ };
264
+ const validator = ajv.compile(schema);
265
+ const result = validator({ name: 'this-is-too-long' });
266
+ (0, globals_1.expect)(result).toBe(false);
267
+ (0, globals_1.expect)(validator.errors?.[0].keyword).toBe('maxLength');
268
+ (0, globals_1.expect)(validator.errors?.[0].params.limit).toBe(10);
269
+ });
270
+ (0, globals_1.test)('should pass value within length bounds', () => {
271
+ const schema = {
272
+ type: 'object',
273
+ properties: {
274
+ password: {
275
+ type: 'string',
276
+ minLength: 8,
277
+ maxLength: 20
278
+ }
279
+ }
280
+ };
281
+ const validator = ajv.compile(schema);
282
+ const result = validator({ password: 'goodpassword' });
283
+ (0, globals_1.expect)(result).toBe(true);
284
+ });
285
+ });
286
+ (0, globals_1.describe)('Numeric Range Validation', () => {
287
+ (0, globals_1.test)('should reject value below minimum', () => {
288
+ const schema = {
289
+ type: 'object',
290
+ properties: {
291
+ port: {
292
+ type: 'number',
293
+ minimum: 1024
294
+ }
295
+ }
296
+ };
297
+ const validator = ajv.compile(schema);
298
+ const result = validator({ port: 80 });
299
+ (0, globals_1.expect)(result).toBe(false);
300
+ (0, globals_1.expect)(validator.errors?.[0].keyword).toBe('minimum');
301
+ });
302
+ (0, globals_1.test)('should reject value above maximum', () => {
303
+ const schema = {
304
+ type: 'object',
305
+ properties: {
306
+ port: {
307
+ type: 'number',
308
+ maximum: 65535
309
+ }
310
+ }
311
+ };
312
+ const validator = ajv.compile(schema);
313
+ const result = validator({ port: 70000 });
314
+ (0, globals_1.expect)(result).toBe(false);
315
+ (0, globals_1.expect)(validator.errors?.[0].keyword).toBe('maximum');
316
+ });
317
+ (0, globals_1.test)('should pass value within numeric bounds', () => {
318
+ const schema = {
319
+ type: 'object',
320
+ properties: {
321
+ port: {
322
+ type: 'number',
323
+ minimum: 1024,
324
+ maximum: 65535
325
+ }
326
+ }
327
+ };
328
+ const validator = ajv.compile(schema);
329
+ const result = validator({ port: 8080 });
330
+ (0, globals_1.expect)(result).toBe(true);
331
+ });
332
+ });
333
+ (0, globals_1.describe)('Combined Constraints', () => {
334
+ (0, globals_1.test)('should validate Box.com OAuth schema', () => {
335
+ const schema = {
336
+ type: 'object',
337
+ properties: {
338
+ clientId: { type: 'string' },
339
+ clientSecret: { type: 'string' },
340
+ tokenUrl: {
341
+ type: 'string',
342
+ const: 'https://api.box.com/oauth2/token'
343
+ },
344
+ boxSubjectType: {
345
+ type: 'string',
346
+ enum: ['enterprise', 'user']
347
+ }
348
+ },
349
+ required: ['clientId', 'clientSecret', 'tokenUrl', 'boxSubjectType']
350
+ };
351
+ const validator = ajv.compile(schema);
352
+ (0, globals_1.expect)(validator({
353
+ clientId: 'test-client',
354
+ clientSecret: 'test-secret',
355
+ tokenUrl: 'https://api.box.com/oauth2/token',
356
+ boxSubjectType: 'enterprise'
357
+ })).toBe(true);
358
+ (0, globals_1.expect)(validator({
359
+ clientId: 'test-client',
360
+ clientSecret: 'test-secret',
361
+ tokenUrl: 'https://wrong.url.com',
362
+ boxSubjectType: 'enterprise'
363
+ })).toBe(false);
364
+ (0, globals_1.expect)(validator({
365
+ clientId: 'test-client',
366
+ clientSecret: 'test-secret',
367
+ tokenUrl: 'https://api.box.com/oauth2/token',
368
+ boxSubjectType: 'invalid'
369
+ })).toBe(false);
370
+ });
371
+ (0, globals_1.test)('should validate GCP credential schema with defaults', () => {
372
+ const schema = {
373
+ type: 'object',
374
+ properties: {
375
+ projectId: { type: 'string' },
376
+ location: {
377
+ type: 'string',
378
+ default: 'us-central1'
379
+ },
380
+ endpoint: {
381
+ type: 'string',
382
+ format: 'uri'
383
+ }
384
+ },
385
+ required: ['projectId']
386
+ };
387
+ const validator = ajv.compile(schema);
388
+ (0, globals_1.expect)(validator({
389
+ projectId: 'my-project',
390
+ endpoint: 'https://api.example.com'
391
+ })).toBe(true);
392
+ (0, globals_1.expect)(validator({
393
+ projectId: 'my-project',
394
+ endpoint: 'not-a-uri'
395
+ })).toBe(false);
396
+ });
397
+ });
398
+ (0, globals_1.describe)('Error Message Formatting', () => {
399
+ (0, globals_1.test)('should format required error message', () => {
400
+ const schema = {
401
+ type: 'object',
402
+ properties: {
403
+ apiKey: { type: 'string' }
404
+ },
405
+ required: ['apiKey']
406
+ };
407
+ const validator = ajv.compile(schema);
408
+ validator({});
409
+ const error = validator.errors?.[0];
410
+ (0, globals_1.expect)(error?.keyword).toBe('required');
411
+ (0, globals_1.expect)(error?.params.missingProperty).toBe('apiKey');
412
+ const message = `Missing required field: ${error?.params.missingProperty}`;
413
+ (0, globals_1.expect)(message).toBe('Missing required field: apiKey');
414
+ });
415
+ (0, globals_1.test)('should format const error message', () => {
416
+ const schema = {
417
+ type: 'object',
418
+ properties: {
419
+ tokenUrl: { const: 'https://api.box.com/oauth2/token' }
420
+ }
421
+ };
422
+ const validator = ajv.compile(schema);
423
+ validator({ tokenUrl: 'wrong' });
424
+ const error = validator.errors?.[0];
425
+ const field = error?.instancePath.replace(/^\//, '') || 'credential';
426
+ const message = `Field "${field}" must be "${error?.params.allowedValue}"`;
427
+ (0, globals_1.expect)(message).toContain('must be "https://api.box.com/oauth2/token"');
428
+ });
429
+ (0, globals_1.test)('should format enum error message', () => {
430
+ const schema = {
431
+ type: 'object',
432
+ properties: {
433
+ type: { enum: ['enterprise', 'user'] }
434
+ }
435
+ };
436
+ const validator = ajv.compile(schema);
437
+ validator({ type: 'invalid' });
438
+ const error = validator.errors?.[0];
439
+ const allowed = error?.params.allowedValues.join(', ');
440
+ const message = `Field "type" must be one of: ${allowed}`;
441
+ (0, globals_1.expect)(message).toBe('Field "type" must be one of: enterprise, user');
442
+ });
443
+ });
444
+ });
445
+ //# 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/credentials",
3
- "version": "3.3.0",
3
+ "version": "3.4.0",
4
4
  "description": "MemberJunction: Credential Engine - secure credential management with caching, encryption, and audit logging.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,18 +10,23 @@
10
10
  "scripts": {
11
11
  "start": "ts-node-dev src/index.ts",
12
12
  "build": "tsc",
13
- "test": "echo \"Error: no test specified\" && exit 1"
13
+ "test": "jest"
14
14
  },
15
15
  "author": "MemberJunction.com",
16
16
  "license": "ISC",
17
17
  "dependencies": {
18
- "@memberjunction/core": "3.3.0",
19
- "@memberjunction/global": "3.3.0",
20
- "@memberjunction/core-entities": "3.3.0",
18
+ "@memberjunction/core": "3.4.0",
19
+ "@memberjunction/global": "3.4.0",
20
+ "@memberjunction/core-entities": "3.4.0",
21
+ "ajv": "^8.17.1",
22
+ "ajv-formats": "^2.1.1",
21
23
  "rxjs": "^7.8.1"
22
24
  },
23
25
  "devDependencies": {
26
+ "@types/jest": "^29.5.0",
24
27
  "@types/node": "20.14.2",
28
+ "jest": "^29.7.0",
29
+ "ts-jest": "^29.1.0",
25
30
  "ts-node-dev": "^2.0.0",
26
31
  "typescript": "^5.4.5"
27
32
  },