@api-client/core 0.19.11 → 0.19.13
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/build/src/browser.d.ts +3 -1
- package/build/src/browser.d.ts.map +1 -1
- package/build/src/browser.js +2 -0
- package/build/src/browser.js.map +1 -1
- package/build/src/index.d.ts +3 -1
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +2 -0
- package/build/src/index.js.map +1 -1
- package/build/src/modeling/ApiValidation.d.ts +26 -0
- package/build/src/modeling/ApiValidation.d.ts.map +1 -0
- package/build/src/modeling/ApiValidation.js +73 -0
- package/build/src/modeling/ApiValidation.js.map +1 -0
- package/build/src/modeling/DomainValidation.d.ts +10 -4
- package/build/src/modeling/DomainValidation.d.ts.map +1 -1
- package/build/src/modeling/DomainValidation.js +55 -72
- package/build/src/modeling/DomainValidation.js.map +1 -1
- package/build/src/modeling/ExposedEntity.js +4 -4
- package/build/src/modeling/ExposedEntity.js.map +1 -1
- package/build/src/modeling/validation/api_model_rules.d.ts +1 -2
- package/build/src/modeling/validation/api_model_rules.d.ts.map +1 -1
- package/build/src/modeling/validation/api_model_rules.js +3 -29
- package/build/src/modeling/validation/api_model_rules.js.map +1 -1
- package/build/src/modeling/validation/association_validation.d.ts +4 -4
- package/build/src/modeling/validation/association_validation.d.ts.map +1 -1
- package/build/src/modeling/validation/association_validation.js.map +1 -1
- package/build/src/modeling/validation/entity_validation.d.ts +6 -6
- package/build/src/modeling/validation/entity_validation.d.ts.map +1 -1
- package/build/src/modeling/validation/entity_validation.js.map +1 -1
- package/build/src/modeling/validation/property_validation.d.ts +3 -3
- package/build/src/modeling/validation/property_validation.d.ts.map +1 -1
- package/build/src/modeling/validation/property_validation.js.map +1 -1
- package/build/src/modeling/validation/rules.d.ts +2 -2
- package/build/src/modeling/validation/rules.d.ts.map +1 -1
- package/build/src/modeling/validation/rules.js.map +1 -1
- package/build/src/modeling/validation/semantic_validation.d.ts +2 -2
- package/build/src/modeling/validation/semantic_validation.d.ts.map +1 -1
- package/build/src/modeling/validation/semantic_validation.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/modeling/ApiValidation.ts +86 -0
- package/src/modeling/DomainValidation.ts +57 -74
- package/src/modeling/ExposedEntity.ts +4 -4
- package/src/modeling/validation/api_model_rules.ts +4 -34
- package/src/modeling/validation/association_validation.ts +6 -6
- package/src/modeling/validation/entity_validation.ts +11 -11
- package/src/modeling/validation/property_validation.ts +4 -4
- package/src/modeling/validation/rules.ts +6 -3
- package/src/modeling/validation/semantic_validation.ts +11 -11
- package/tests/unit/modeling/domain_validation.spec.ts +7 -13
- package/tests/unit/modeling/exposed_entity.spec.ts +5 -5
- package/tests/unit/modeling/exposed_entity_setter_validation.spec.ts +5 -5
- package/tests/unit/modeling/validation/api_model_rules.spec.ts +24 -9
|
@@ -43,12 +43,12 @@ test.group('ExposedEntity Path Setter Validation', () => {
|
|
|
43
43
|
|
|
44
44
|
// Set exp1 resource path to something specific
|
|
45
45
|
exp1.hasCollection = false
|
|
46
|
-
exp1.setResourcePath('/shared
|
|
46
|
+
exp1.setResourcePath('/shared')
|
|
47
47
|
|
|
48
48
|
// Try to set exp2 resource path to same
|
|
49
49
|
assert.throws(
|
|
50
|
-
() => exp2.setResourcePath('/shared
|
|
51
|
-
'Resource path "/shared
|
|
50
|
+
() => exp2.setResourcePath('/shared'),
|
|
51
|
+
'Resource path "/shared" is already in use by another root entity.'
|
|
52
52
|
)
|
|
53
53
|
})
|
|
54
54
|
|
|
@@ -67,8 +67,8 @@ test.group('ExposedEntity Path Setter Validation', () => {
|
|
|
67
67
|
assert.equal(exp1.collectionPath, '/new-path')
|
|
68
68
|
|
|
69
69
|
exp1.hasCollection = false // allow arbitrary resource path
|
|
70
|
-
exp1.setResourcePath('/custom
|
|
71
|
-
assert.equal(exp1.resourcePath, '/custom
|
|
70
|
+
exp1.setResourcePath('/custom')
|
|
71
|
+
assert.equal(exp1.resourcePath, '/custom')
|
|
72
72
|
})
|
|
73
73
|
|
|
74
74
|
test('does not validate collision for non-root entities', ({ assert }) => {
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
validateApiModelMetadata,
|
|
10
10
|
validateExposedEntity,
|
|
11
11
|
validateAction,
|
|
12
|
-
validateApiModel,
|
|
13
12
|
} from '../../../../src/modeling/validation/api_model_rules.js'
|
|
13
|
+
import { ApiValidation } from '../../../../src/modeling/ApiValidation.js'
|
|
14
14
|
import { ExposedEntity } from '../../../../src/modeling/ExposedEntity.js'
|
|
15
15
|
import { ListAction } from '../../../../src/modeling/actions/ListAction.js'
|
|
16
16
|
import { DeleteAction } from '../../../../src/modeling/actions/DeleteAction.js'
|
|
@@ -235,6 +235,19 @@ test.group('ApiModel Validation', () => {
|
|
|
235
235
|
assert.isTrue(issues.some((i) => i.code === 'EXPOSURE_INVALID_RESOURCE_PATH_FORMAT'))
|
|
236
236
|
})
|
|
237
237
|
|
|
238
|
+
test('validateExposedEntity - path integrity (no collection)', ({ assert }) => {
|
|
239
|
+
const domain = new DataDomain({ info: { version: '1.0.0' } })
|
|
240
|
+
const model = new ApiModel({}, domain)
|
|
241
|
+
const exposure = new ExposedEntity(model, {
|
|
242
|
+
entity: { key: 'fake' },
|
|
243
|
+
hasCollection: false,
|
|
244
|
+
})
|
|
245
|
+
exposure.resourcePath = '/invalid/two_segments'
|
|
246
|
+
exposure.actions = [new ReadAction(exposure)]
|
|
247
|
+
const issues = validateExposedEntity(exposure, model)
|
|
248
|
+
assert.isTrue(issues.some((i) => i.code === 'EXPOSURE_INVALID_RESOURCE_PATH_FORMAT'))
|
|
249
|
+
})
|
|
250
|
+
|
|
238
251
|
test('validateAction - List needs pagination', ({ assert }) => {
|
|
239
252
|
const model = new ApiModel()
|
|
240
253
|
const exposure = new ExposedEntity(model, { entity: { key: '1' } })
|
|
@@ -305,9 +318,10 @@ test.group('ApiModel Validation', () => {
|
|
|
305
318
|
},
|
|
306
319
|
domain
|
|
307
320
|
)
|
|
308
|
-
const
|
|
309
|
-
|
|
310
|
-
assert.
|
|
321
|
+
const validator = new ApiValidation(model)
|
|
322
|
+
const report = validator.validate()
|
|
323
|
+
assert.equal(validator.errorCount, 0)
|
|
324
|
+
assert.isEmpty(report.filter((i) => i.severity === 'error'))
|
|
311
325
|
})
|
|
312
326
|
|
|
313
327
|
test('validateApiModel - fails on multiple errors', ({ assert }) => {
|
|
@@ -315,10 +329,11 @@ test.group('ApiModel Validation', () => {
|
|
|
315
329
|
info: { name: '' },
|
|
316
330
|
})
|
|
317
331
|
// Now it's missing name, missing domain, missing security context, missing contact.
|
|
318
|
-
const
|
|
319
|
-
|
|
320
|
-
assert.
|
|
321
|
-
assert.isTrue(
|
|
322
|
-
assert.isTrue(
|
|
332
|
+
const validator = new ApiValidation(model)
|
|
333
|
+
const report = validator.validate()
|
|
334
|
+
assert.isAbove(validator.errorCount, 0)
|
|
335
|
+
assert.isTrue(report.some((i) => i.code === 'API_MISSING_NAME'))
|
|
336
|
+
assert.isTrue(report.some((i) => i.code === 'API_MISSING_DOMAIN'))
|
|
337
|
+
assert.isTrue(report.some((i) => i.code === 'API_MISSING_AUTHENTICATION'))
|
|
323
338
|
})
|
|
324
339
|
})
|