@api-client/core 0.19.9 → 0.19.11
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/LICENSE.md +9 -63
- package/Testing.md +1 -1
- package/bin/test.ts +1 -12
- package/build/src/browser.d.ts +0 -15
- package/build/src/browser.d.ts.map +1 -1
- package/build/src/browser.js +0 -17
- package/build/src/browser.js.map +1 -1
- package/build/src/decorators/observed.d.ts.map +1 -1
- package/build/src/decorators/observed.js +91 -0
- package/build/src/decorators/observed.js.map +1 -1
- package/build/src/events/EventTypes.d.ts +0 -6
- package/build/src/events/EventTypes.d.ts.map +1 -1
- package/build/src/events/EventTypes.js +0 -2
- package/build/src/events/EventTypes.js.map +1 -1
- package/build/src/events/Events.d.ts +0 -2
- package/build/src/events/Events.d.ts.map +1 -1
- package/build/src/events/Events.js +0 -2
- package/build/src/events/Events.js.map +1 -1
- package/build/src/index.d.ts +0 -15
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +0 -17
- package/build/src/index.js.map +1 -1
- package/build/src/modeling/ApiModel.d.ts +21 -7
- package/build/src/modeling/ApiModel.d.ts.map +1 -1
- package/build/src/modeling/ApiModel.js +70 -29
- package/build/src/modeling/ApiModel.js.map +1 -1
- package/build/src/modeling/Bindings.d.ts +3 -3
- package/build/src/modeling/Bindings.d.ts.map +1 -1
- package/build/src/modeling/Bindings.js.map +1 -1
- package/build/src/modeling/DomainAssociation.d.ts +5 -5
- package/build/src/modeling/DomainAssociation.d.ts.map +1 -1
- package/build/src/modeling/DomainAssociation.js.map +1 -1
- package/build/src/modeling/DomainEntity.d.ts +2 -3
- package/build/src/modeling/DomainEntity.d.ts.map +1 -1
- package/build/src/modeling/DomainEntity.js +1 -1
- package/build/src/modeling/DomainEntity.js.map +1 -1
- package/build/src/modeling/DomainProperty.d.ts +2 -3
- package/build/src/modeling/DomainProperty.d.ts.map +1 -1
- package/build/src/modeling/DomainProperty.js +1 -1
- package/build/src/modeling/DomainProperty.js.map +1 -1
- package/build/src/modeling/DomainValidation.d.ts +1 -1
- package/build/src/modeling/DomainValidation.d.ts.map +1 -1
- package/build/src/modeling/DomainValidation.js.map +1 -1
- package/build/src/modeling/ExposedEntity.d.ts +14 -0
- package/build/src/modeling/ExposedEntity.d.ts.map +1 -1
- package/build/src/modeling/ExposedEntity.js +59 -6
- package/build/src/modeling/ExposedEntity.js.map +1 -1
- package/build/src/modeling/actions/Action.d.ts +11 -1
- package/build/src/modeling/actions/Action.d.ts.map +1 -1
- package/build/src/modeling/actions/Action.js +21 -3
- package/build/src/modeling/actions/Action.js.map +1 -1
- package/build/src/modeling/actions/CreateAction.d.ts +2 -1
- package/build/src/modeling/actions/CreateAction.d.ts.map +1 -1
- package/build/src/modeling/actions/CreateAction.js +2 -2
- package/build/src/modeling/actions/CreateAction.js.map +1 -1
- package/build/src/modeling/actions/DeleteAction.d.ts +2 -1
- package/build/src/modeling/actions/DeleteAction.d.ts.map +1 -1
- package/build/src/modeling/actions/DeleteAction.js +2 -2
- package/build/src/modeling/actions/DeleteAction.js.map +1 -1
- package/build/src/modeling/actions/ListAction.d.ts +2 -1
- package/build/src/modeling/actions/ListAction.d.ts.map +1 -1
- package/build/src/modeling/actions/ListAction.js +2 -2
- package/build/src/modeling/actions/ListAction.js.map +1 -1
- package/build/src/modeling/actions/ReadAction.d.ts +2 -1
- package/build/src/modeling/actions/ReadAction.d.ts.map +1 -1
- package/build/src/modeling/actions/ReadAction.js +2 -2
- package/build/src/modeling/actions/ReadAction.js.map +1 -1
- package/build/src/modeling/actions/SearchAction.d.ts +2 -1
- package/build/src/modeling/actions/SearchAction.d.ts.map +1 -1
- package/build/src/modeling/actions/SearchAction.js +2 -2
- package/build/src/modeling/actions/SearchAction.js.map +1 -1
- package/build/src/modeling/actions/UpdateAction.d.ts +2 -1
- package/build/src/modeling/actions/UpdateAction.d.ts.map +1 -1
- package/build/src/modeling/actions/UpdateAction.js +2 -2
- package/build/src/modeling/actions/UpdateAction.js.map +1 -1
- package/build/src/modeling/actions/index.d.ts +2 -1
- package/build/src/modeling/actions/index.d.ts.map +1 -1
- package/build/src/modeling/actions/index.js +7 -7
- package/build/src/modeling/actions/index.js.map +1 -1
- package/build/src/modeling/ai/types.d.ts +2 -2
- package/build/src/modeling/ai/types.d.ts.map +1 -1
- package/build/src/modeling/ai/types.js.map +1 -1
- package/build/src/{amf → modeling/amf}/DataValueGenerator.d.ts +1 -1
- package/build/src/modeling/amf/DataValueGenerator.d.ts.map +1 -0
- package/build/src/{amf → modeling/amf}/DataValueGenerator.js +2 -3
- package/build/src/modeling/amf/DataValueGenerator.js.map +1 -0
- package/build/src/modeling/amf/ShapeGenerator.d.ts +20 -20
- package/build/src/modeling/amf/ShapeGenerator.d.ts.map +1 -1
- package/build/src/modeling/amf/ShapeGenerator.js +16 -18
- package/build/src/modeling/amf/ShapeGenerator.js.map +1 -1
- package/build/src/modeling/amf/core_types.d.ts +9 -0
- package/build/src/modeling/amf/core_types.d.ts.map +1 -0
- package/build/src/modeling/amf/core_types.js +45 -0
- package/build/src/modeling/amf/core_types.js.map +1 -0
- package/build/src/modeling/index.d.ts +1 -0
- package/build/src/modeling/index.d.ts.map +1 -1
- package/build/src/modeling/index.js +1 -0
- package/build/src/modeling/index.js.map +1 -1
- package/build/src/modeling/types.d.ts +67 -0
- package/build/src/modeling/types.d.ts.map +1 -1
- package/build/src/modeling/types.js.map +1 -1
- package/build/src/modeling/validation/api_model_rules.d.ts +15 -0
- package/build/src/modeling/validation/api_model_rules.d.ts.map +1 -0
- package/build/src/modeling/validation/api_model_rules.js +599 -0
- package/build/src/modeling/validation/api_model_rules.js.map +1 -0
- package/build/src/modeling/validation/association_validation.d.ts.map +1 -1
- package/build/src/modeling/validation/association_validation.js +1 -3
- package/build/src/modeling/validation/association_validation.js.map +1 -1
- package/build/src/models/http-flows/LegacyTranslator.js +1 -1
- package/build/src/models/http-flows/LegacyTranslator.js.map +1 -1
- package/build/src/runtime/http-runner/HttpFlows.js +1 -1
- package/build/src/runtime/http-runner/HttpFlows.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/eslint.config.js +0 -2
- package/package.json +27 -135
- package/src/decorators/observed.ts +91 -0
- package/src/events/EventTypes.ts +0 -2
- package/src/events/Events.ts +0 -2
- package/src/modeling/ApiModel.ts +73 -33
- package/src/modeling/Bindings.ts +3 -3
- package/src/modeling/DomainAssociation.ts +5 -5
- package/src/modeling/DomainEntity.ts +3 -4
- package/src/modeling/DomainProperty.ts +3 -4
- package/src/modeling/DomainValidation.ts +1 -1
- package/src/modeling/ExposedEntity.ts +63 -9
- package/src/modeling/actions/Action.ts +25 -2
- package/src/modeling/actions/CreateAction.ts +3 -2
- package/src/modeling/actions/DeleteAction.ts +3 -2
- package/src/modeling/actions/ListAction.ts +3 -2
- package/src/modeling/actions/ReadAction.ts +3 -2
- package/src/modeling/actions/SearchAction.ts +3 -2
- package/src/modeling/actions/UpdateAction.ts +3 -2
- package/src/modeling/ai/types.ts +2 -2
- package/src/{amf → modeling/amf}/DataValueGenerator.ts +3 -4
- package/src/modeling/amf/ShapeGenerator.ts +45 -61
- package/src/modeling/amf/core_types.ts +47 -0
- package/src/modeling/types.ts +70 -0
- package/src/modeling/validation/api_model_rules.ts +640 -0
- package/src/modeling/validation/api_model_validation_rules.md +58 -0
- package/src/modeling/validation/association_validation.ts +1 -3
- package/src/models/http-flows/LegacyTranslator.ts +1 -1
- package/src/runtime/http-runner/HttpFlows.ts +1 -1
- package/tests/unit/modeling/actions/Action.spec.ts +40 -8
- package/tests/unit/modeling/actions/CreateAction.spec.ts +5 -5
- package/tests/unit/modeling/actions/DeleteAction.spec.ts +6 -6
- package/tests/unit/modeling/actions/ListAction.spec.ts +7 -7
- package/tests/unit/modeling/actions/ReadAction.spec.ts +6 -6
- package/tests/unit/modeling/actions/SearchAction.spec.ts +6 -6
- package/tests/unit/modeling/actions/UpdateAction.spec.ts +6 -6
- package/tests/unit/{amf → modeling/amf}/data_value_generator.spec.ts +2 -2
- package/tests/unit/modeling/amf/shape_generator.spec.ts +146 -167
- package/tests/unit/modeling/api_model.spec.ts +190 -13
- package/tests/unit/modeling/api_model_expose_entity.spec.ts +43 -19
- package/tests/unit/modeling/api_model_remove_entity.spec.ts +6 -6
- package/tests/unit/modeling/domain_asociation.spec.ts +13 -13
- package/tests/unit/modeling/exposed_entity.spec.ts +123 -3
- package/tests/unit/modeling/exposed_entity_actions.spec.ts +41 -18
- package/tests/unit/modeling/exposed_entity_setter_validation.spec.ts +1 -1
- package/tests/unit/modeling/rules/restoring_rules.spec.ts +9 -5
- package/tests/unit/modeling/validation/api_model_rules.spec.ts +324 -0
- package/tests/unit/runtime/runners/http_assertion_runner.spec.ts +1 -1
- package/tests/unit/runtime/runners/http_flow_runner.spec.ts +1 -1
- package/tests/unit/runtime/runners/project_runner.spec.ts +1 -1
- package/tests/unit/runtime/runners/request_runner.spec.ts +1 -1
- package/tests/unit/runtime/runners/serial_runner.spec.ts +1 -1
- package/tsconfig.browser.json +1 -1
- package/tsconfig.node.json +1 -1
- package/bin/test-web.ts +0 -6
- package/build/src/amf/AmfMixin.d.ts +0 -396
- package/build/src/amf/AmfMixin.d.ts.map +0 -1
- package/build/src/amf/AmfMixin.js +0 -1138
- package/build/src/amf/AmfMixin.js.map +0 -1
- package/build/src/amf/AmfSerializer.d.ts +0 -137
- package/build/src/amf/AmfSerializer.d.ts.map +0 -1
- package/build/src/amf/AmfSerializer.js +0 -1947
- package/build/src/amf/AmfSerializer.js.map +0 -1
- package/build/src/amf/AmfTypes.d.ts +0 -25
- package/build/src/amf/AmfTypes.d.ts.map +0 -1
- package/build/src/amf/AmfTypes.js +0 -143
- package/build/src/amf/AmfTypes.js.map +0 -1
- package/build/src/amf/ApiExampleGenerator.d.ts +0 -40
- package/build/src/amf/ApiExampleGenerator.d.ts.map +0 -1
- package/build/src/amf/ApiExampleGenerator.js +0 -112
- package/build/src/amf/ApiExampleGenerator.js.map +0 -1
- package/build/src/amf/ApiMonacoSchemaGenerator.d.ts +0 -68
- package/build/src/amf/ApiMonacoSchemaGenerator.d.ts.map +0 -1
- package/build/src/amf/ApiMonacoSchemaGenerator.js +0 -248
- package/build/src/amf/ApiMonacoSchemaGenerator.js.map +0 -1
- package/build/src/amf/ApiSchemaGenerator.d.ts +0 -56
- package/build/src/amf/ApiSchemaGenerator.d.ts.map +0 -1
- package/build/src/amf/ApiSchemaGenerator.js +0 -94
- package/build/src/amf/ApiSchemaGenerator.js.map +0 -1
- package/build/src/amf/ApiSchemaValues.d.ts +0 -111
- package/build/src/amf/ApiSchemaValues.d.ts.map +0 -1
- package/build/src/amf/ApiSchemaValues.js +0 -463
- package/build/src/amf/ApiSchemaValues.js.map +0 -1
- package/build/src/amf/DataValueGenerator.d.ts.map +0 -1
- package/build/src/amf/DataValueGenerator.js.map +0 -1
- package/build/src/amf/Parsing.d.ts +0 -48
- package/build/src/amf/Parsing.d.ts.map +0 -1
- package/build/src/amf/Parsing.js +0 -2
- package/build/src/amf/Parsing.js.map +0 -1
- package/build/src/amf/Utils.d.ts +0 -37
- package/build/src/amf/Utils.d.ts.map +0 -1
- package/build/src/amf/Utils.js +0 -169
- package/build/src/amf/Utils.js.map +0 -1
- package/build/src/amf/data-node/DataNodeBase.d.ts +0 -34
- package/build/src/amf/data-node/DataNodeBase.d.ts.map +0 -1
- package/build/src/amf/data-node/DataNodeBase.js +0 -77
- package/build/src/amf/data-node/DataNodeBase.js.map +0 -1
- package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts +0 -15
- package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts.map +0 -1
- package/build/src/amf/data-node/JsonDataNodeGenerator.js +0 -23
- package/build/src/amf/data-node/JsonDataNodeGenerator.js.map +0 -1
- package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts +0 -14
- package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts.map +0 -1
- package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js +0 -48
- package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js.map +0 -1
- package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts +0 -22
- package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts.map +0 -1
- package/build/src/amf/data-node/XmlDataNodeGenerator.js +0 -34
- package/build/src/amf/data-node/XmlDataNodeGenerator.js.map +0 -1
- package/build/src/amf/definitions/Amf.d.ts +0 -363
- package/build/src/amf/definitions/Amf.d.ts.map +0 -1
- package/build/src/amf/definitions/Amf.js +0 -3
- package/build/src/amf/definitions/Amf.js.map +0 -1
- package/build/src/amf/definitions/Api.d.ts +0 -383
- package/build/src/amf/definitions/Api.d.ts.map +0 -1
- package/build/src/amf/definitions/Api.js +0 -2
- package/build/src/amf/definitions/Api.js.map +0 -1
- package/build/src/amf/definitions/Base.d.ts +0 -12
- package/build/src/amf/definitions/Base.d.ts.map +0 -1
- package/build/src/amf/definitions/Base.js +0 -2
- package/build/src/amf/definitions/Base.js.map +0 -1
- package/build/src/amf/definitions/Namespace.d.ts +0 -327
- package/build/src/amf/definitions/Namespace.d.ts.map +0 -1
- package/build/src/amf/definitions/Namespace.js +0 -346
- package/build/src/amf/definitions/Namespace.js.map +0 -1
- package/build/src/amf/definitions/Shapes.d.ts +0 -312
- package/build/src/amf/definitions/Shapes.d.ts.map +0 -1
- package/build/src/amf/definitions/Shapes.js +0 -87
- package/build/src/amf/definitions/Shapes.js.map +0 -1
- package/build/src/amf/models/AmfDataNode.d.ts +0 -67
- package/build/src/amf/models/AmfDataNode.d.ts.map +0 -1
- package/build/src/amf/models/AmfDataNode.js +0 -192
- package/build/src/amf/models/AmfDataNode.js.map +0 -1
- package/build/src/amf/shape/ShapeBase.d.ts +0 -74
- package/build/src/amf/shape/ShapeBase.d.ts.map +0 -1
- package/build/src/amf/shape/ShapeBase.js +0 -93
- package/build/src/amf/shape/ShapeBase.js.map +0 -1
- package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts +0 -47
- package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts.map +0 -1
- package/build/src/amf/shape/ShapeJsonSchemaGenerator.js +0 -420
- package/build/src/amf/shape/ShapeJsonSchemaGenerator.js.map +0 -1
- package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts +0 -85
- package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts.map +0 -1
- package/build/src/amf/shape/ShapeXmlSchemaGenerator.js +0 -852
- package/build/src/amf/shape/ShapeXmlSchemaGenerator.js.map +0 -1
- package/build/src/events/amf/AmfEventTypes.d.ts +0 -7
- package/build/src/events/amf/AmfEventTypes.d.ts.map +0 -1
- package/build/src/events/amf/AmfEventTypes.js +0 -7
- package/build/src/events/amf/AmfEventTypes.js.map +0 -1
- package/build/src/events/amf/AmfEvents.d.ts +0 -34
- package/build/src/events/amf/AmfEvents.d.ts.map +0 -1
- package/build/src/events/amf/AmfEvents.js +0 -63
- package/build/src/events/amf/AmfEvents.js.map +0 -1
- package/build/src/mocking/RandExp.d.ts +0 -55
- package/build/src/mocking/RandExp.d.ts.map +0 -1
- package/build/src/mocking/RandExp.js +0 -302
- package/build/src/mocking/RandExp.js.map +0 -1
- package/build/src/mocking/lib/ret.d.ts +0 -16
- package/build/src/mocking/lib/ret.d.ts.map +0 -1
- package/build/src/mocking/lib/ret.js +0 -284
- package/build/src/mocking/lib/ret.js.map +0 -1
- package/data/apis/APIC-187/APIC-187.raml +0 -21
- package/data/apis/APIC-187/dataType.raml +0 -132
- package/data/apis/APIC-187/example.raml +0 -84
- package/data/apis/APIC-188/APIC-188.raml +0 -21
- package/data/apis/APIC-188/dataType.raml +0 -132
- package/data/apis/APIC-188/example.raml +0 -84
- package/data/apis/APIC-233/APIC-233.raml +0 -15
- package/data/apis/APIC-391/APIC-391.raml +0 -44
- package/data/apis/APIC-391/examples/post-body-request-example.raml +0 -7
- package/data/apis/APIC-483/APIC-483.raml +0 -16
- package/data/apis/APIC-483/example/list-of-bank-succ.json +0 -32
- package/data/apis/APIC-483/schema/response-retrieve-list-bank.json +0 -68
- package/data/apis/APIC-487/APIC-487.raml +0 -36
- package/data/apis/APIC-655/APIC-655.raml +0 -44
- package/data/apis/APIC-655/delivery.json +0 -12
- package/data/apis/APIC-689/APIC-689.raml +0 -20
- package/data/apis/APIC-690/APIC-690.raml +0 -17
- package/data/apis/APIC-690/datatypes/Address.raml +0 -10
- package/data/apis/APIC-690/datatypes/Customer.raml +0 -17
- package/data/apis/APIC-690/examples/CustomerExample2.raml +0 -17
- package/data/apis/APIC-690/examples/CustomersExample.raml +0 -34
- package/data/apis/SE-10469/Purchase-Order-oagis-id-dd32f9c6c01048a19e15c423c9c741ae.json +0 -1383
- package/data/apis/SE-10469/SE-10469.raml +0 -11
- package/data/apis/SE-13092/Examples/PersonExample.raml +0 -7
- package/data/apis/SE-13092/SE-13092.raml +0 -37
- package/data/apis/SE-13092/datatypes/Address.raml +0 -5
- package/data/apis/SE-13092/datatypes/InlineType.raml +0 -5
- package/data/apis/SE-13092/datatypes/Person.raml +0 -15
- package/data/apis/SE-22063/SE-22063.raml +0 -14
- package/data/apis/SE-22063/stock.raml +0 -41
- package/data/apis/amf-helper-api/amf-helper-api.raml +0 -1024
- package/data/apis/amf-helper-api/examples/comment-example.json +0 -42
- package/data/apis/amf-helper-api/examples/commentCreateRequest-example.json +0 -7
- package/data/apis/amf-helper-api/examples/commentList-example.json +0 -48
- package/data/apis/amf-helper-api/examples/person.json +0 -14
- package/data/apis/amf-helper-api/examples/person.raml +0 -13
- package/data/apis/amf-helper-api/examples/person.xml +0 -14
- package/data/apis/amf-helper-api/libraries/comment-lib.raml +0 -143
- package/data/apis/amf-helper-api/library.raml +0 -7
- package/data/apis/amf-helper-api/schemas/person.json +0 -104
- package/data/apis/amf-helper-api/schemas/person.xsd +0 -26
- package/data/apis/amf-helper-api/traits/file.raml +0 -33
- package/data/apis/amf-helper-api/traits/pagination.raml +0 -80
- package/data/apis/amf-helper-api/traits/results.raml +0 -19
- package/data/apis/amf-helper-api/traits/visibility.raml +0 -14
- package/data/apis/amf-helper-api/types/app-person.raml +0 -101
- package/data/apis/amf-helper-api/types/dimensions.raml +0 -24
- package/data/apis/amf-helper-api/types/external-type.raml +0 -7
- package/data/apis/amf-helper-api/types/image.raml +0 -23
- package/data/apis/amf-helper-api/types/product.raml +0 -52
- package/data/apis/amf-helper-api/types/resource.raml +0 -11
- package/data/apis/amf-helper-api/types/standard-request.raml +0 -50
- package/data/apis/amf-helper-api/types/user.raml +0 -37
- package/data/apis/arc-demo-api/arc-demo-api.raml +0 -468
- package/data/apis/arc-demo-api/examples/e400.xml +0 -4
- package/data/apis/arc-demo-api/examples/e401.xml +0 -4
- package/data/apis/arc-demo-api/examples/e404.xml +0 -4
- package/data/apis/arc-demo-api/examples/image.xml +0 -5
- package/data/apis/arc-demo-api/examples/messages-example.json +0 -22
- package/data/apis/arc-demo-api/examples/messages-sent-example.json +0 -15
- package/data/apis/arc-demo-api/examples/person.json +0 -14
- package/data/apis/arc-demo-api/examples/person.url.encoded +0 -1
- package/data/apis/arc-demo-api/examples/person.xml +0 -14
- package/data/apis/arc-demo-api/examples/product.xml +0 -9
- package/data/apis/arc-demo-api/library.raml +0 -36
- package/data/apis/arc-demo-api/resourceTypes/app-person.raml +0 -49
- package/data/apis/arc-demo-api/resourceTypes/example-types.raml +0 -45
- package/data/apis/arc-demo-api/resourceTypes/image.raml +0 -23
- package/data/apis/arc-demo-api/resourceTypes/message-sent-type.raml +0 -23
- package/data/apis/arc-demo-api/resourceTypes/message-type.raml +0 -33
- package/data/apis/arc-demo-api/resourceTypes/product.raml +0 -52
- package/data/apis/arc-demo-api/resourceTypes/resource.raml +0 -11
- package/data/apis/arc-demo-api/schemas/error-response.xsd +0 -11
- package/data/apis/arc-demo-api/schemas/image.xsd +0 -11
- package/data/apis/arc-demo-api/schemas/person.json +0 -104
- package/data/apis/arc-demo-api/schemas/person.xsd +0 -26
- package/data/apis/arc-demo-api/schemas/product.xsd +0 -17
- package/data/apis/arc-demo-api/securitySchemes/basic.raml +0 -5
- package/data/apis/arc-demo-api/securitySchemes/oauth_2_0.raml +0 -29
- package/data/apis/arc-demo-api/securitySchemes/x-custom.raml +0 -26
- package/data/apis/arc-demo-api/traits/adminable.raml +0 -23
- package/data/apis/arc-demo-api/traits/pagination.raml +0 -83
- package/data/apis/arc-demo-api/traits/rate-limited.raml +0 -9
- package/data/apis/async-api/async-api.yaml +0 -96
- package/data/apis/example-generator-api/contact-email-example.raml +0 -6
- package/data/apis/example-generator-api/contact-example.raml +0 -5
- package/data/apis/example-generator-api/contact-fax-example.raml +0 -5
- package/data/apis/example-generator-api/contact-website-example.raml +0 -2
- package/data/apis/example-generator-api/example-1.raml +0 -6
- package/data/apis/example-generator-api/example-2.raml +0 -9
- package/data/apis/example-generator-api/example-3.raml +0 -4
- package/data/apis/example-generator-api/example-4.raml +0 -2
- package/data/apis/example-generator-api/example-5.raml +0 -4
- package/data/apis/example-generator-api/example-6.raml +0 -2
- package/data/apis/example-generator-api/example-7.raml +0 -5
- package/data/apis/example-generator-api/example-generator-api.raml +0 -423
- package/data/apis/example-generator-api/example.json +0 -14
- package/data/apis/example-generator-api/example.xml +0 -15
- package/data/apis/example-generator-api/example.xsd +0 -26
- package/data/apis/example-generator-api/examples/employee.raml +0 -7
- package/data/apis/example-generator-api/examples/employees.raml +0 -7
- package/data/apis/example-generator-api/linked-named-example.raml +0 -21
- package/data/apis/example-generator-api/named-example-with-link.raml +0 -5
- package/data/apis/example-generator-api/named-example.raml +0 -9
- package/data/apis/example-generator-api/user-json-example.raml +0 -17
- package/data/apis/example-generator-api/user-raml-example.raml +0 -37
- package/data/apis/example-generator-api/user.json +0 -8
- package/data/apis/example-generator-api/user.raml +0 -18
- package/data/apis/example-generator-api/users-json-example.raml +0 -17
- package/data/apis/example-generator-api/users-raml-example.raml +0 -32
- package/data/apis/example-generator-api/users.json +0 -8
- package/data/apis/expanded-api/expanded-api.raml +0 -8
- package/data/apis/flattened-api/flattened-api.raml +0 -8
- package/data/apis/multiple-servers/multiple-servers.yaml +0 -112
- package/data/apis/oas-3-api/oas-3-api.yaml +0 -356
- package/data/apis/oas-date/oas-date.yaml +0 -28
- package/data/apis/oas-types/oas-types.yaml +0 -159
- package/data/apis/oas-unions/oas-unions.yaml +0 -75
- package/data/apis/petstore/petstore.yaml +0 -954
- package/data/apis/raml-date/raml-date.raml +0 -28
- package/data/apis/recursive/recursive.raml +0 -14
- package/data/apis/schema-api/examples/person.json +0 -14
- package/data/apis/schema-api/examples/person.raml +0 -14
- package/data/apis/schema-api/examples/person.url.encoded +0 -1
- package/data/apis/schema-api/examples/person.xml +0 -14
- package/data/apis/schema-api/library/demo-types.raml +0 -43
- package/data/apis/schema-api/schema-api.raml +0 -656
- package/data/apis/schema-api/schemas/person.json +0 -104
- package/data/apis/schema-api/schemas/person.xsd +0 -26
- package/data/apis/schema-api/types/DemoPerson.raml +0 -67
- package/data/apis/secured-api/oauth-2-custom-settings.raml +0 -143
- package/data/apis/secured-api/oauth2-header-delivery.raml +0 -13
- package/data/apis/secured-api/oauth2-no-delivery.raml +0 -8
- package/data/apis/secured-api/oauth2-no-grants.raml +0 -12
- package/data/apis/secured-api/oauth2-pkce.raml +0 -13
- package/data/apis/secured-api/oauth2-query-delivery.raml +0 -13
- package/data/apis/secured-api/oauth_1_0.raml +0 -8
- package/data/apis/secured-api/oauth_1_0_no-settings.raml +0 -3
- package/data/apis/secured-api/oauth_1_0_no-signature.raml +0 -7
- package/data/apis/secured-api/oauth_1_0_signature.raml +0 -8
- package/data/apis/secured-api/passthrough-querystring.raml +0 -16
- package/data/apis/secured-api/passthrough.raml +0 -24
- package/data/apis/secured-api/secured-api.raml +0 -231
- package/data/apis/secured-api/x-custom.raml +0 -33
- package/data/apis/secured-api/x-other.raml +0 -29
- package/data/apis/secured-api/x-query-string.raml +0 -16
- package/data/apis/tracked-examples/datatypes/employee.raml +0 -5
- package/data/apis/tracked-examples/examples/employee.raml +0 -4
- package/data/apis/tracked-examples/examples/employees.raml +0 -8
- package/data/apis/tracked-examples/tracked-to-linked.raml +0 -28
- package/data/model.js +0 -129
- package/data/models/APIC-187.json +0 -11416
- package/data/models/APIC-188.json +0 -11416
- package/data/models/APIC-233.json +0 -539
- package/data/models/APIC-391.json +0 -1903
- package/data/models/APIC-483.json +0 -3110
- package/data/models/APIC-487.json +0 -1225
- package/data/models/APIC-655.json +0 -3145
- package/data/models/APIC-689.json +0 -797
- package/data/models/APIC-690.json +0 -5992
- package/data/models/SE-10469.json +0 -22898
- package/data/models/SE-13092.json +0 -2769
- package/data/models/SE-22063.json +0 -2314
- package/data/models/amf-helper-api.json +0 -84457
- package/data/models/arc-demo-api.json +0 -52041
- package/data/models/async-api.json +0 -3227
- package/data/models/example-generator-api.json +0 -45209
- package/data/models/expanded-api.json +0 -251
- package/data/models/flattened-api.json +0 -251
- package/data/models/multiple-servers.json +0 -2769
- package/data/models/oas-3-api.json +0 -10590
- package/data/models/oas-date.json +0 -637
- package/data/models/oas-types.json +0 -5352
- package/data/models/oas-unions.json +0 -1935
- package/data/models/petstore.json +0 -27712
- package/data/models/raml-date.json +0 -1114
- package/data/models/recursive.json +0 -610
- package/data/models/schema-api.json +0 -35527
- package/data/models/secured-api.json +0 -21071
- package/data/models/tracked-to-linked.json +0 -1914
- package/src/amf/AmfMixin.ts +0 -1726
- package/src/amf/AmfSerializer.ts +0 -2358
- package/src/amf/AmfTypes.ts +0 -147
- package/src/amf/ApiExampleGenerator.ts +0 -122
- package/src/amf/ApiMonacoSchemaGenerator.ts +0 -332
- package/src/amf/ApiSchemaGenerator.ts +0 -115
- package/src/amf/ApiSchemaValues.ts +0 -509
- package/src/amf/Parsing.ts +0 -50
- package/src/amf/Utils.ts +0 -172
- package/src/amf/data-node/DataNodeBase.ts +0 -83
- package/src/amf/data-node/JsonDataNodeGenerator.ts +0 -24
- package/src/amf/data-node/README.md +0 -3
- package/src/amf/data-node/UrlEncodedDataNodeGenerator.ts +0 -49
- package/src/amf/data-node/XmlDataNodeGenerator.ts +0 -46
- package/src/amf/definitions/Amf.ts +0 -440
- package/src/amf/definitions/Api.ts +0 -445
- package/src/amf/definitions/Base.ts +0 -13
- package/src/amf/definitions/Namespace.ts +0 -357
- package/src/amf/definitions/Shapes.ts +0 -438
- package/src/amf/models/AmfDataNode.ts +0 -210
- package/src/amf/shape/README.md +0 -4
- package/src/amf/shape/ShapeBase.ts +0 -174
- package/src/amf/shape/ShapeJsonSchemaGenerator.ts +0 -457
- package/src/amf/shape/ShapeXmlSchemaGenerator.ts +0 -933
- package/src/events/amf/AmfEventTypes.ts +0 -6
- package/src/events/amf/AmfEvents.ts +0 -78
- package/src/mocking/RandExp.ts +0 -335
- package/src/mocking/lib/ret.ts +0 -279
- package/tests/unit/amf/APIC-187.spec.ts +0 -41
- package/tests/unit/amf/APIC-188.spec.ts +0 -30
- package/tests/unit/amf/APIC-233.spec.ts +0 -32
- package/tests/unit/amf/APIC-391.spec.ts +0 -39
- package/tests/unit/amf/APIC-487.spec.ts +0 -44
- package/tests/unit/amf/APIC-655.spec.ts +0 -41
- package/tests/unit/amf/APIC-689.spec.ts +0 -28
- package/tests/unit/amf/APIC-690.spec.ts +0 -93
- package/tests/unit/amf/AmfLoader.ts +0 -538
- package/tests/unit/amf/AmfMixin.spec.ts +0 -1707
- package/tests/unit/amf/ApiExampleGenerator.spec.ts +0 -250
- package/tests/unit/amf/ApiMonacoSchemaGenerator.spec.ts +0 -183
- package/tests/unit/amf/ApiSchemaValues.spec.ts +0 -602
- package/tests/unit/amf/Namepsace.spec.ts +0 -494
- package/tests/unit/amf/SE-10469.spec.ts +0 -35
- package/tests/unit/amf/SE-13092.spec.ts +0 -64
- package/tests/unit/amf/SE-22063.spec.ts +0 -45
- package/tests/unit/amf/raml-examples.spec.ts +0 -43
- package/tests/unit/amf/schema_gen_array.spec.ts +0 -199
- package/tests/unit/amf/schema_gen_oas.spec.ts +0 -140
- package/tests/unit/amf/schema_gen_object.spec.ts +0 -279
- package/tests/unit/amf/schema_gen_scalar.spec.ts +0 -143
- package/tests/unit/amf/schema_gen_union.spec.ts +0 -401
- package/tests/unit/amf/schema_gen_unknown.spec.ts +0 -42
- package/tests/unit/amf/schema_gen_xml.spec.ts +0 -726
- package/tests/unit/amf/serializer/APIC-483.spec.ts +0 -36
- package/tests/unit/amf/serializer/Anotations.spec.ts +0 -50
- package/tests/unit/amf/serializer/Api.spec.ts +0 -210
- package/tests/unit/amf/serializer/Documentation.spec.ts +0 -52
- package/tests/unit/amf/serializer/Endpoints.spec.ts +0 -172
- package/tests/unit/amf/serializer/Operations.spec.ts +0 -330
- package/tests/unit/amf/serializer/Parameters.spec.ts +0 -149
- package/tests/unit/amf/serializer/PayloadExamples.spec.ts +0 -152
- package/tests/unit/amf/serializer/Security.spec.ts +0 -626
- package/tests/unit/amf/serializer/Server.spec.ts +0 -78
- package/tests/unit/amf/serializer/Shapes.spec.ts +0 -304
- package/tests/unit/amf/serializer/SourceMaps.spec.ts +0 -52
- package/tests/unit/amf/shapes/ShapeXmlSchemaGenerator.spec.ts +0 -28
- package/tests/unit/amf/tracked-to-linked.spec.ts +0 -90
- package/tests/unit/amf/xml-data-processing.spec.ts +0 -217
- package/tests/unit/events/amf.spec.ts +0 -151
|
@@ -1,330 +0,0 @@
|
|
|
1
|
-
import { test } from '@japa/runner'
|
|
2
|
-
import { AmfLoader } from '../AmfLoader.js'
|
|
3
|
-
import { AmfSerializer } from '../../../../src/amf/AmfSerializer.js'
|
|
4
|
-
import type { IAmfDocument } from '../../../../src/amf/definitions/Amf.js'
|
|
5
|
-
import type { IApiScalarNode } from '../../../../src/amf/definitions/Shapes.js'
|
|
6
|
-
import { AmfNamespace } from '../../../../src/amf/definitions/Namespace.js'
|
|
7
|
-
|
|
8
|
-
const loader = new AmfLoader()
|
|
9
|
-
|
|
10
|
-
test.group('OAS operations', (group) => {
|
|
11
|
-
let api: IAmfDocument
|
|
12
|
-
let serializer: AmfSerializer
|
|
13
|
-
group.setup(async () => {
|
|
14
|
-
api = await loader.getGraph('petstore')
|
|
15
|
-
serializer = new AmfSerializer()
|
|
16
|
-
serializer.amf = api
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
test('returns an operation', ({ assert }) => {
|
|
20
|
-
const shape = loader.lookupOperation(api, '/pet', 'post')
|
|
21
|
-
const result = serializer.operation(shape)
|
|
22
|
-
assert.typeOf(result, 'object', 'has the result')
|
|
23
|
-
assert.equal(result.id, shape['@id'], 'has the id')
|
|
24
|
-
assert.include(result.types, AmfNamespace.aml.vocabularies.apiContract.Operation, 'has the type')
|
|
25
|
-
assert.equal(result.method, 'post', 'has the method')
|
|
26
|
-
assert.equal(result.name, 'addPet', 'has the name')
|
|
27
|
-
assert.equal(result.description, 'Add a new pet to the store', 'has the description')
|
|
28
|
-
assert.equal(result.summary, 'Add a new pet to the store', 'has the summary')
|
|
29
|
-
assert.equal(result.operationId, 'addPet', 'has the operationId')
|
|
30
|
-
assert.isTrue(result.deprecated, 'is deprecated')
|
|
31
|
-
assert.deepEqual(result.customDomainProperties, [], 'has no customDomainProperties')
|
|
32
|
-
assert.deepEqual(result.callbacks, [], 'has no callbacks')
|
|
33
|
-
assert.deepEqual(result.accepts, [], 'has no accepts')
|
|
34
|
-
assert.deepEqual(result.schemes, [], 'has no schemes')
|
|
35
|
-
assert.deepEqual(result.contentType, [], 'has no contentType')
|
|
36
|
-
assert.typeOf(result.sourceMaps, 'object', 'has source maps')
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
test('adds the responses', ({ assert }) => {
|
|
40
|
-
const shape = loader.lookupOperation(api, '/pet', 'post')
|
|
41
|
-
const result = serializer.operation(shape)
|
|
42
|
-
const { responses } = result
|
|
43
|
-
assert.typeOf(responses, 'array', 'has the responses')
|
|
44
|
-
assert.lengthOf(responses, 2, 'has all responses')
|
|
45
|
-
const [success] = responses
|
|
46
|
-
assert.equal(success.statusCode, '200', 'has response definition')
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
test('adds the request', ({ assert }) => {
|
|
50
|
-
const shape = loader.lookupOperation(api, '/pet', 'post')
|
|
51
|
-
const result = serializer.operation(shape)
|
|
52
|
-
const { request } = result
|
|
53
|
-
assert.typeOf(request, 'object', 'has the request')
|
|
54
|
-
assert.include(request!.types, AmfNamespace.aml.vocabularies.apiContract.Request, 'has the type')
|
|
55
|
-
assert.typeOf(request!.payloads, 'array', 'has the payloads')
|
|
56
|
-
assert.isNotEmpty(request!.payloads, 'the payloads is set')
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
test('adds the response', ({ assert }) => {
|
|
60
|
-
const shape = loader.lookupOperation(api, '/pet', 'post')
|
|
61
|
-
const result = serializer.operation(shape)
|
|
62
|
-
const { responses } = result
|
|
63
|
-
assert.typeOf(responses, 'array', 'has the responses')
|
|
64
|
-
assert.lengthOf(responses, 2, 'has all responses')
|
|
65
|
-
const [r] = responses
|
|
66
|
-
assert.typeOf(r, 'object', 'response is an object')
|
|
67
|
-
assert.include(r.types, AmfNamespace.aml.vocabularies.apiContract.Response, 'response has the type')
|
|
68
|
-
assert.typeOf(r.payloads, 'array', 'has the payloads')
|
|
69
|
-
assert.isNotEmpty(r.payloads, 'the payloads is set')
|
|
70
|
-
assert.equal(r.name, '200', 'response has the name')
|
|
71
|
-
assert.equal(r.statusCode, '200', 'response has the statusCode')
|
|
72
|
-
assert.equal(r.description, 'Successful operation', 'response has the description')
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
test('adds the cookie parameters', ({ assert }) => {
|
|
76
|
-
const shape = loader.lookupOperation(api, '/pet/{petId}', 'post')
|
|
77
|
-
const result = serializer.operation(shape)
|
|
78
|
-
const { request } = result
|
|
79
|
-
assert.typeOf(request!.cookieParameters, 'array', 'has the payloads')
|
|
80
|
-
assert.isNotEmpty(request!.cookieParameters, 'the payloads is set')
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
test('adds the query parameters', ({ assert }) => {
|
|
84
|
-
const shape = loader.lookupOperation(api, '/pet/{petId}', 'post')
|
|
85
|
-
const result = serializer.operation(shape)
|
|
86
|
-
const { request } = result
|
|
87
|
-
assert.typeOf(request!.queryParameters, 'array', 'has the payloads')
|
|
88
|
-
assert.isNotEmpty(request!.queryParameters, 'the payloads is set')
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
test('adds the URI parameters', ({ assert }) => {
|
|
92
|
-
const shape = loader.lookupOperation(api, '/pet/{petId}', 'post')
|
|
93
|
-
const result = serializer.operation(shape)
|
|
94
|
-
const { request } = result
|
|
95
|
-
assert.typeOf(request!.uriParameters, 'array', 'has the payloads')
|
|
96
|
-
assert.isNotEmpty(request!.uriParameters, 'the payloads is set')
|
|
97
|
-
})
|
|
98
|
-
|
|
99
|
-
test('adds the tags', ({ assert }) => {
|
|
100
|
-
const shape = loader.lookupOperation(api, '/pet', 'post')
|
|
101
|
-
const result = serializer.operation(shape)
|
|
102
|
-
const { tags } = result
|
|
103
|
-
assert.typeOf(tags, 'array', 'has the tags')
|
|
104
|
-
assert.lengthOf(tags, 1, 'has a single tag')
|
|
105
|
-
const [tag] = tags
|
|
106
|
-
assert.typeOf(tag, 'object', 'has a tag')
|
|
107
|
-
assert.equal(tag.name, 'pet', 'tag has name')
|
|
108
|
-
assert.include(tag.types, AmfNamespace.aml.vocabularies.apiContract.Tag, 'tag has Tag type')
|
|
109
|
-
})
|
|
110
|
-
|
|
111
|
-
test('adds the links info', ({ assert }) => {
|
|
112
|
-
const shape = loader.lookupOperation(api, '/user', 'post')
|
|
113
|
-
const result = serializer.operation(shape)
|
|
114
|
-
const { responses } = result
|
|
115
|
-
const [response] = responses
|
|
116
|
-
const { links } = response
|
|
117
|
-
assert.typeOf(links, 'array', 'has the links')
|
|
118
|
-
assert.isNotEmpty(links, 'the links is set')
|
|
119
|
-
const [l1, l2] = links
|
|
120
|
-
assert.include(l1.types, AmfNamespace.aml.vocabularies.apiContract.TemplatedLink, 'l1 has the type')
|
|
121
|
-
assert.include(l2.types, AmfNamespace.aml.vocabularies.apiContract.TemplatedLink, 'l2 has the type')
|
|
122
|
-
assert.equal(l1.name, 'GetUserByUserName', 'l1 has the name')
|
|
123
|
-
assert.equal(l2.name, 'GetUserByRef', 'l2 has the name')
|
|
124
|
-
assert.equal(l1.operationId, 'getUserByName', 'l1 has the name')
|
|
125
|
-
assert.typeOf(l1.description, 'string', 'l1 has the description')
|
|
126
|
-
assert.typeOf(l2.description, 'string', 'l2 has the description')
|
|
127
|
-
assert.typeOf(l1.mapping, 'array', 'l1 has the mapping')
|
|
128
|
-
assert.typeOf(l2.mapping, 'array', 'l2 has the mapping')
|
|
129
|
-
const { mapping } = l1
|
|
130
|
-
const [mappingItem] = mapping
|
|
131
|
-
assert.include(
|
|
132
|
-
mappingItem.types,
|
|
133
|
-
AmfNamespace.aml.vocabularies.apiContract.IriTemplateMapping,
|
|
134
|
-
'mapping has the type'
|
|
135
|
-
)
|
|
136
|
-
assert.equal(mappingItem.templateVariable, 'username', 'mapping has the templateVariable')
|
|
137
|
-
assert.equal(mappingItem.linkExpression, '$request.body#/username', 'mapping has the linkExpression')
|
|
138
|
-
})
|
|
139
|
-
})
|
|
140
|
-
|
|
141
|
-
test.group('OAS properties', (group) => {
|
|
142
|
-
let api: IAmfDocument
|
|
143
|
-
let serializer: AmfSerializer
|
|
144
|
-
group.setup(async () => {
|
|
145
|
-
api = await loader.getGraph('oas-3-api')
|
|
146
|
-
serializer = new AmfSerializer()
|
|
147
|
-
serializer.amf = api
|
|
148
|
-
})
|
|
149
|
-
|
|
150
|
-
test('processes callbacks', ({ assert }) => {
|
|
151
|
-
const shape = loader.lookupOperation(api, '/subscribe', 'post')
|
|
152
|
-
const result = serializer.operation(shape)
|
|
153
|
-
const { callbacks } = result
|
|
154
|
-
assert.typeOf(callbacks, 'array', 'has callbacks')
|
|
155
|
-
assert.lengthOf(callbacks, 1, 'has single callback')
|
|
156
|
-
const [callback] = callbacks
|
|
157
|
-
assert.include(callback.types, AmfNamespace.aml.vocabularies.apiContract.Callback, 'has the type')
|
|
158
|
-
assert.deepEqual(callback.customDomainProperties, [], 'has the customDomainProperties')
|
|
159
|
-
assert.typeOf(callback.sourceMaps, 'object', 'has the sourceMaps')
|
|
160
|
-
assert.equal(callback.name, 'myEvent', 'has the name')
|
|
161
|
-
assert.equal(callback.expression, '{$request.body#/callbackUrl}', 'has the expression')
|
|
162
|
-
assert.typeOf(callback.endpoint, 'object', 'has the endpoint')
|
|
163
|
-
const { endpoint } = callback
|
|
164
|
-
assert.equal(endpoint!.path, '/{$request.body#/callbackUrl}', 'endpoint has path')
|
|
165
|
-
assert.typeOf(endpoint!.operations, 'array', 'endpoint has operations')
|
|
166
|
-
assert.lengthOf(endpoint!.operations, 1, 'endpoint has single operation')
|
|
167
|
-
})
|
|
168
|
-
|
|
169
|
-
test('processes OAS properties', ({ assert }) => {
|
|
170
|
-
const shape = loader.lookupOperation(api, '/oas-properties', 'post')
|
|
171
|
-
const result = serializer.operation(shape)
|
|
172
|
-
|
|
173
|
-
assert.isTrue(result.deprecated, 'has deprecated')
|
|
174
|
-
assert.lengthOf(result.servers, 4, 'has servers')
|
|
175
|
-
assert.equal(result.operationId, 'myId', 'has operationId')
|
|
176
|
-
assert.typeOf(result.documentation, 'object', 'has documentation')
|
|
177
|
-
const { documentation } = result
|
|
178
|
-
assert.equal(documentation!.url, 'https://docs.com', 'has documentation.url')
|
|
179
|
-
assert.equal(documentation!.description, 'A doc', 'has documentation.description')
|
|
180
|
-
const { request } = result
|
|
181
|
-
assert.typeOf(request, 'object', 'has request')
|
|
182
|
-
assert.isFalse(request!.required, 'has request.required')
|
|
183
|
-
const { tags } = result
|
|
184
|
-
assert.lengthOf(tags, 2, 'has tags')
|
|
185
|
-
const [tag] = tags
|
|
186
|
-
assert.typeOf(tag, 'object', 'has a tag')
|
|
187
|
-
assert.include(tag.types, AmfNamespace.aml.vocabularies.apiContract.Tag, 'tag has the type')
|
|
188
|
-
assert.equal(tag.name, 'pets', 'tag has the name')
|
|
189
|
-
})
|
|
190
|
-
})
|
|
191
|
-
|
|
192
|
-
test.group('RAML operations / base tests', (group) => {
|
|
193
|
-
let api: IAmfDocument
|
|
194
|
-
let serializer: AmfSerializer
|
|
195
|
-
group.setup(async () => {
|
|
196
|
-
api = await loader.getGraph('amf-helper-api')
|
|
197
|
-
serializer = new AmfSerializer()
|
|
198
|
-
serializer.amf = api
|
|
199
|
-
})
|
|
200
|
-
|
|
201
|
-
test('returns an operation', ({ assert }) => {
|
|
202
|
-
const shape = loader.lookupOperation(api, '/files', 'get')
|
|
203
|
-
const result = serializer.operation(shape)
|
|
204
|
-
assert.typeOf(result, 'object', 'has the result')
|
|
205
|
-
assert.equal(result.id, shape['@id'], 'has the id')
|
|
206
|
-
assert.include(result.types, AmfNamespace.aml.vocabularies.apiContract.Operation, 'has the type')
|
|
207
|
-
assert.equal(result.method, 'get', 'has the method')
|
|
208
|
-
assert.equal(result.name, 'list', 'has the name')
|
|
209
|
-
assert.typeOf(result.description, 'string', 'has the description')
|
|
210
|
-
assert.isFalse(result.deprecated, 'is not deprecated')
|
|
211
|
-
assert.deepEqual(result.customDomainProperties, [], 'has no customDomainProperties')
|
|
212
|
-
assert.deepEqual(result.callbacks, [], 'has no callbacks')
|
|
213
|
-
assert.deepEqual(result.responses, [], 'has no responses')
|
|
214
|
-
assert.deepEqual(result.servers, [], 'has no servers')
|
|
215
|
-
assert.deepEqual(result.accepts, [], 'has no accepts')
|
|
216
|
-
assert.deepEqual(result.schemes, [], 'has no schemes')
|
|
217
|
-
assert.deepEqual(result.contentType, [], 'has no contentType')
|
|
218
|
-
assert.typeOf(result.sourceMaps, 'object', 'has source maps')
|
|
219
|
-
})
|
|
220
|
-
|
|
221
|
-
test('adds the security info', ({ assert }) => {
|
|
222
|
-
const shape = loader.lookupOperation(api, '/files', 'get')
|
|
223
|
-
const result = serializer.operation(shape)
|
|
224
|
-
const { security } = result
|
|
225
|
-
assert.typeOf(security, 'array', 'has the security')
|
|
226
|
-
assert.lengthOf(security, 1, 'has the defined security')
|
|
227
|
-
assert.include(security[0].types, AmfNamespace.aml.vocabularies.security.SecurityRequirement, 'has the type')
|
|
228
|
-
assert.typeOf(security[0].schemes, 'array', 'has the schemes')
|
|
229
|
-
assert.typeOf(security[0].schemes[0], 'object', 'has the security scheme')
|
|
230
|
-
assert.deepEqual(security[0].customDomainProperties, [], 'has no customDomainProperties')
|
|
231
|
-
})
|
|
232
|
-
|
|
233
|
-
test('adds the annotations info', ({ assert }) => {
|
|
234
|
-
const shape = loader.lookupOperation(api, '/files', 'post')
|
|
235
|
-
const result = serializer.operation(shape)
|
|
236
|
-
const { customDomainProperties } = result
|
|
237
|
-
assert.typeOf(customDomainProperties, 'array', 'has the security')
|
|
238
|
-
assert.lengthOf(customDomainProperties, 1, 'has the defined security')
|
|
239
|
-
const [cdp] = customDomainProperties
|
|
240
|
-
assert.equal(cdp.name, 'deprecated', 'has the name')
|
|
241
|
-
const typed = cdp.extension as IApiScalarNode
|
|
242
|
-
assert.include(typed.types, AmfNamespace.aml.vocabularies.data.Scalar, 'has the type')
|
|
243
|
-
assert.equal(typed.value, 'This operation is deprecated and will be removed.', 'has the value')
|
|
244
|
-
assert.equal(typed.dataType, AmfNamespace.w3.xmlSchema.string, 'has the dataType')
|
|
245
|
-
})
|
|
246
|
-
|
|
247
|
-
test('adds the request with payloads', ({ assert }) => {
|
|
248
|
-
const shape = loader.lookupOperation(api, '/files/{fileId}/comments', 'post')
|
|
249
|
-
const result = serializer.operation(shape)
|
|
250
|
-
const { request } = result
|
|
251
|
-
assert.typeOf(request, 'object', 'has the request')
|
|
252
|
-
assert.include(request!.types, AmfNamespace.aml.vocabularies.apiContract.Request, 'has the type')
|
|
253
|
-
assert.typeOf(request!.payloads, 'array', 'has the payloads')
|
|
254
|
-
assert.isNotEmpty(request!.payloads, 'the payloads is set')
|
|
255
|
-
})
|
|
256
|
-
|
|
257
|
-
test('adds the request with query parameters', ({ assert }) => {
|
|
258
|
-
const shape = loader.lookupOperation(api, '/files/{fileId}/comments', 'get')
|
|
259
|
-
const result = serializer.operation(shape)
|
|
260
|
-
const { request } = result
|
|
261
|
-
assert.typeOf(request, 'object', 'has the request')
|
|
262
|
-
assert.include(request!.types, AmfNamespace.aml.vocabularies.apiContract.Request, 'has the type')
|
|
263
|
-
assert.typeOf(request!.queryParameters, 'array', 'has the queryParameters')
|
|
264
|
-
assert.isNotEmpty(request!.queryParameters, 'the queryParameters is set')
|
|
265
|
-
})
|
|
266
|
-
|
|
267
|
-
test('adds the annotations', ({ assert }) => {
|
|
268
|
-
const shape = loader.lookupOperation(api, '/files', 'post')
|
|
269
|
-
const result = serializer.operation(shape)
|
|
270
|
-
const { customDomainProperties } = result
|
|
271
|
-
assert.typeOf(customDomainProperties, 'array', 'has the customDomainProperties')
|
|
272
|
-
const [cdp] = customDomainProperties
|
|
273
|
-
assert.typeOf(cdp, 'object', 'has the property')
|
|
274
|
-
assert.include(cdp.extension.types, AmfNamespace.aml.vocabularies.data.Scalar, 'has the type')
|
|
275
|
-
assert.equal(cdp.name, 'deprecated', 'has the extensionName')
|
|
276
|
-
})
|
|
277
|
-
|
|
278
|
-
test('adds query parameters from a trait', ({ assert }) => {
|
|
279
|
-
const shape = loader.lookupOperation(api, '/files/{fileId}/comments', 'get')
|
|
280
|
-
const result = serializer.operation(shape)
|
|
281
|
-
const { request } = result
|
|
282
|
-
const mr = request!.queryParameters.find((p) => p.name === 'maxResults')
|
|
283
|
-
assert.typeOf(mr, 'object', 'has a queryParameters')
|
|
284
|
-
})
|
|
285
|
-
})
|
|
286
|
-
|
|
287
|
-
test.group('Traits', (group) => {
|
|
288
|
-
let api: IAmfDocument
|
|
289
|
-
let serializer: AmfSerializer
|
|
290
|
-
group.setup(async () => {
|
|
291
|
-
api = await loader.getGraph('arc-demo-api')
|
|
292
|
-
serializer = new AmfSerializer()
|
|
293
|
-
serializer.amf = api
|
|
294
|
-
})
|
|
295
|
-
|
|
296
|
-
test('adds the traits into the operation', ({ assert }) => {
|
|
297
|
-
const shape = loader.lookupOperation(api, '/people', 'get')
|
|
298
|
-
const result = serializer.operation(shape)
|
|
299
|
-
assert.typeOf(result, 'object', 'has the result')
|
|
300
|
-
const { extends: extensions } = result
|
|
301
|
-
assert.typeOf(extensions, 'array', 'has traits array')
|
|
302
|
-
assert.lengthOf(extensions, 1, 'has the defined trait')
|
|
303
|
-
const [trait] = extensions
|
|
304
|
-
assert.equal(trait.name, 'Paginated', 'has the trait name')
|
|
305
|
-
})
|
|
306
|
-
|
|
307
|
-
test('serializes the variables in a trait', ({ assert }) => {
|
|
308
|
-
const shape = loader.lookupOperation(api, '/people', 'get')
|
|
309
|
-
const result = serializer.operation(shape)
|
|
310
|
-
const { extends: extensions } = result
|
|
311
|
-
const [trait] = extensions
|
|
312
|
-
const { variables } = trait
|
|
313
|
-
assert.typeOf(variables, 'array', 'has traits array')
|
|
314
|
-
assert.lengthOf(variables, 1, 'has all variables')
|
|
315
|
-
})
|
|
316
|
-
|
|
317
|
-
test('serializes the target', ({ assert }) => {
|
|
318
|
-
const shape = loader.lookupOperation(api, '/people', 'get')
|
|
319
|
-
const result = serializer.operation(shape)
|
|
320
|
-
const { extends: extensions } = result
|
|
321
|
-
const [trait] = extensions
|
|
322
|
-
const { target } = trait
|
|
323
|
-
assert.typeOf(target, 'object', 'has the target')
|
|
324
|
-
const { name, variables, dataNode } = target!
|
|
325
|
-
assert.equal(name, 'Paginated', 'has the trait name')
|
|
326
|
-
assert.typeOf(variables, 'array', 'has traits array')
|
|
327
|
-
assert.lengthOf(variables, 2, 'has all variables')
|
|
328
|
-
assert.typeOf(dataNode, 'object', 'has the dataNode')
|
|
329
|
-
})
|
|
330
|
-
})
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { test } from '@japa/runner'
|
|
2
|
-
import { AmfLoader } from '../AmfLoader.js'
|
|
3
|
-
import { AmfSerializer } from '../../../../src/amf/AmfSerializer.js'
|
|
4
|
-
import type { IAmfDocument, IAmfScalarShape } from '../../../../src/amf/definitions/Amf.js'
|
|
5
|
-
import type { IApiScalarNode } from '../../../../src/amf/definitions/Shapes.js'
|
|
6
|
-
import { AmfNamespace } from '../../../../src/amf/definitions/Namespace.js'
|
|
7
|
-
|
|
8
|
-
const loader = new AmfLoader()
|
|
9
|
-
test.group('RAML parameters', (group) => {
|
|
10
|
-
let api: IAmfDocument
|
|
11
|
-
let serializer: AmfSerializer
|
|
12
|
-
group.setup(async () => {
|
|
13
|
-
api = await loader.getGraph('amf-helper-api')
|
|
14
|
-
serializer = new AmfSerializer()
|
|
15
|
-
serializer.amf = api
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
test('has the name and the paramName', ({ assert }) => {
|
|
19
|
-
const op = loader.lookupOperation(api, '/parameters', 'get')
|
|
20
|
-
const ex = serializer._computeExpects(op)!
|
|
21
|
-
const headers = loader.readHeaders(ex)!
|
|
22
|
-
const result = serializer.parameter(headers[0]) // Accept
|
|
23
|
-
assert.equal(result.name, 'Accept', 'has the name')
|
|
24
|
-
assert.equal(result.paramName, 'Accept', 'has the paramName')
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
test('has the description', ({ assert }) => {
|
|
28
|
-
const op = loader.lookupOperation(api, '/parameters', 'get')
|
|
29
|
-
const ex = serializer._computeExpects(op)!
|
|
30
|
-
const headers = loader.readHeaders(ex)!
|
|
31
|
-
const result = serializer.parameter(headers[0]) // Accept
|
|
32
|
-
assert.equal(result.description, "Selects the response's media type, when supported.", 'has the name')
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
test('has the required', ({ assert }) => {
|
|
36
|
-
const op = loader.lookupOperation(api, '/parameters', 'get')
|
|
37
|
-
const ex = serializer._computeExpects(op)!
|
|
38
|
-
const headers = loader.readHeaders(ex)!
|
|
39
|
-
const header = headers[1] // x-required
|
|
40
|
-
const result = serializer.parameter(header)
|
|
41
|
-
assert.isTrue(result.required)
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
test('has the binding', ({ assert }) => {
|
|
45
|
-
const op = loader.lookupOperation(api, '/parameters', 'get')
|
|
46
|
-
const ex = serializer._computeExpects(op)!
|
|
47
|
-
const headers = loader.readHeaders(ex)!
|
|
48
|
-
const header = headers[1] // x-required
|
|
49
|
-
const result = serializer.parameter(header)
|
|
50
|
-
assert.equal(result.binding, 'header')
|
|
51
|
-
})
|
|
52
|
-
|
|
53
|
-
test('has the example', ({ assert }) => {
|
|
54
|
-
const op = loader.lookupOperation(api, '/parameters', 'get')
|
|
55
|
-
const ex = serializer._computeExpects(op)!
|
|
56
|
-
const headers = loader.readHeaders(ex)!
|
|
57
|
-
const header = headers[3] // If-Modified-Since
|
|
58
|
-
const result = serializer.parameter(header)
|
|
59
|
-
// the example is passed to the schema.
|
|
60
|
-
assert.deepEqual(result.examples, [])
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
test('has the examples', ({ assert }) => {
|
|
64
|
-
const op = loader.lookupOperation(api, '/parameters', 'get')
|
|
65
|
-
const ex = serializer._computeExpects(op)!
|
|
66
|
-
const qp = loader.readQueryParameters(ex)!
|
|
67
|
-
const param = qp[3] // combo
|
|
68
|
-
const result = serializer.parameter(param)
|
|
69
|
-
// the example is passed to the schema.
|
|
70
|
-
assert.deepEqual(result.examples, [])
|
|
71
|
-
})
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
test.group('OAS parameters', (group) => {
|
|
75
|
-
let api: IAmfDocument
|
|
76
|
-
let serializer: AmfSerializer
|
|
77
|
-
group.setup(async () => {
|
|
78
|
-
api = await loader.getGraph('petstore')
|
|
79
|
-
serializer = new AmfSerializer()
|
|
80
|
-
serializer.amf = api
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
test('has the OAS properties', ({ assert }) => {
|
|
84
|
-
const op = loader.lookupOperation(api, '/pet/{petId}', 'post')
|
|
85
|
-
const ex = serializer._computeExpects(op)!
|
|
86
|
-
const params = loader.readQueryParameters(ex)!
|
|
87
|
-
const param = params.find(
|
|
88
|
-
(p) => serializer._getValue(p, AmfNamespace.aml.vocabularies.apiContract.paramName) === 'name'
|
|
89
|
-
)!
|
|
90
|
-
const result = serializer.parameter(param)
|
|
91
|
-
assert.isFalse(result.required, 'is not required')
|
|
92
|
-
assert.isTrue(result.deprecated, 'is deprecated')
|
|
93
|
-
assert.isTrue(result.allowEmptyValue, 'is allowEmptyValue')
|
|
94
|
-
assert.isTrue(result.explode, 'is explode')
|
|
95
|
-
assert.isTrue(result.allowReserved, 'is allowReserved')
|
|
96
|
-
assert.equal(result.style, 'form', 'has style')
|
|
97
|
-
})
|
|
98
|
-
|
|
99
|
-
test('has the content property', ({ assert }) => {
|
|
100
|
-
const op = loader.lookupOperation(api, '/pet/{petId}', 'post')
|
|
101
|
-
const ex = serializer._computeExpects(op)!
|
|
102
|
-
const params = loader.readQueryParameters(ex)!
|
|
103
|
-
const param = params.find(
|
|
104
|
-
(p) => serializer._getValue(p, AmfNamespace.aml.vocabularies.apiContract.paramName) === 'filter'
|
|
105
|
-
)!
|
|
106
|
-
const result = serializer.parameter(param)
|
|
107
|
-
const [p] = result.payloads
|
|
108
|
-
assert.include(p.types, AmfNamespace.aml.vocabularies.apiContract.Payload, 'has the type')
|
|
109
|
-
assert.deepEqual(p.customDomainProperties, [], 'has empty customDomainProperties')
|
|
110
|
-
assert.deepEqual(p.examples, [], 'has empty examples')
|
|
111
|
-
assert.equal(p.mediaType, 'application/json', 'has mediaType')
|
|
112
|
-
assert.typeOf(p.schema, 'object', 'has schema')
|
|
113
|
-
})
|
|
114
|
-
|
|
115
|
-
test('has the examples property', ({ assert }) => {
|
|
116
|
-
// it seems that AMF moves examples from parameter into the schema.
|
|
117
|
-
// This copies examples from the schema to the top level parameter so we can test it.
|
|
118
|
-
// Possibly this happens during the resolution phase.
|
|
119
|
-
const op = loader.lookupOperation(api, '/pet/findByStatus', 'get')
|
|
120
|
-
const ex = serializer._computeExpects(op)!
|
|
121
|
-
const params = loader.readQueryParameters(ex)!
|
|
122
|
-
const param = params.find(
|
|
123
|
-
(p) => serializer._getValue(p, AmfNamespace.aml.vocabularies.apiContract.paramName) === 'status'
|
|
124
|
-
)!
|
|
125
|
-
// @ts-expect-error Used in testing
|
|
126
|
-
const schema = param[serializer._getAmfKey(AmfNamespace.aml.vocabularies.shapes.schema)][0] as IAmfScalarShape
|
|
127
|
-
const key = serializer._getAmfKey(AmfNamespace.aml.vocabularies.apiContract.examples)
|
|
128
|
-
// @ts-expect-error Used in testing
|
|
129
|
-
const info = schema[key]
|
|
130
|
-
// @ts-expect-error Used in testing
|
|
131
|
-
param[key] = info
|
|
132
|
-
const result = serializer.parameter(param)
|
|
133
|
-
const { examples } = result
|
|
134
|
-
assert.typeOf(examples, 'array', 'has examples')
|
|
135
|
-
assert.lengthOf(examples, 1, 'has a single example')
|
|
136
|
-
const [example] = examples
|
|
137
|
-
assert.equal(example.id, info[0]['@id'], 'has the id')
|
|
138
|
-
assert.include(example.types, AmfNamespace.aml.vocabularies.apiContract.Example, 'has the type')
|
|
139
|
-
assert.deepEqual(example.customDomainProperties, [], 'has empty customDomainProperties')
|
|
140
|
-
assert.isTrue(example.strict, 'has strict')
|
|
141
|
-
assert.equal(example.value, 'pending', 'has the value')
|
|
142
|
-
const { structuredValue } = example
|
|
143
|
-
assert.typeOf(structuredValue, 'object', 'has the structuredValue')
|
|
144
|
-
assert.equal(structuredValue!.name, 'scalar_1', 'has the name')
|
|
145
|
-
const typed = structuredValue as IApiScalarNode
|
|
146
|
-
assert.equal(typed.value, 'pending', 'has the value')
|
|
147
|
-
assert.equal(typed.dataType, AmfNamespace.w3.xmlSchema.string, 'has the dataType')
|
|
148
|
-
})
|
|
149
|
-
})
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
// As part of the optimisation the examples may be referenced in a link
|
|
2
|
-
// shared between different payloads. These test are looking for the
|
|
3
|
-
// right example for the right payload.
|
|
4
|
-
|
|
5
|
-
import { test } from '@japa/runner'
|
|
6
|
-
import { AmfLoader } from '../AmfLoader.js'
|
|
7
|
-
import { AmfSerializer } from '../../../../src/amf/AmfSerializer.js'
|
|
8
|
-
import type { IAmfDocument } from '../../../../src/amf/definitions/Amf.js'
|
|
9
|
-
import { IApiNodeShape } from '../../../../src/amf/definitions/Shapes.js'
|
|
10
|
-
|
|
11
|
-
test.group('Payload examples', (group) => {
|
|
12
|
-
const loader = new AmfLoader()
|
|
13
|
-
const jsonMime = 'application/json'
|
|
14
|
-
const xmlMime = 'application/xml'
|
|
15
|
-
|
|
16
|
-
let api: IAmfDocument
|
|
17
|
-
let serializer: AmfSerializer
|
|
18
|
-
group.setup(async () => {
|
|
19
|
-
api = await loader.getGraph('amf-helper-api')
|
|
20
|
-
serializer = new AmfSerializer(api)
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
test('returns a RAML example for the JSON mime', async ({ assert }) => {
|
|
24
|
-
const shape = loader.lookupRequestPayload(api, '/body-tracking', 'get', jsonMime)
|
|
25
|
-
const result = serializer.payload(shape)
|
|
26
|
-
|
|
27
|
-
const { examples } = result.schema as IApiNodeShape
|
|
28
|
-
|
|
29
|
-
assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
|
|
30
|
-
const [ex1, ex2] = examples
|
|
31
|
-
|
|
32
|
-
assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
|
|
33
|
-
assert.include(ex2.value, 'id: "R34fg663H9KW9MMSKISI"', 'example #2 is payload defined example (raml)')
|
|
34
|
-
|
|
35
|
-
assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
test('returns a RAML example for the XML mime', async ({ assert }) => {
|
|
39
|
-
const shape = loader.lookupRequestPayload(api, '/body-tracking', 'get', xmlMime)
|
|
40
|
-
const result = serializer.payload(shape)
|
|
41
|
-
|
|
42
|
-
const { examples } = result.schema as IApiNodeShape
|
|
43
|
-
|
|
44
|
-
assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
|
|
45
|
-
const [ex1, ex2] = examples
|
|
46
|
-
|
|
47
|
-
assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
|
|
48
|
-
assert.include(ex2.value, 'id: "R34fg663H9KW9MMSKISI"', 'example #2 is payload defined example (raml)')
|
|
49
|
-
|
|
50
|
-
assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
|
|
51
|
-
})
|
|
52
|
-
|
|
53
|
-
test('returns a JSON example for the JSON mime', async ({ assert }) => {
|
|
54
|
-
const shape = loader.lookupRequestPayload(api, '/body-tracking', 'put', jsonMime)
|
|
55
|
-
const result = serializer.payload(shape)
|
|
56
|
-
|
|
57
|
-
const { examples } = result.schema as IApiNodeShape
|
|
58
|
-
|
|
59
|
-
assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
|
|
60
|
-
const [ex1, ex2] = examples
|
|
61
|
-
assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
|
|
62
|
-
assert.include(ex2.value, '"id": "R34fg663H9KW9MMSKISI"', 'example #2 is payload defined example (json)')
|
|
63
|
-
|
|
64
|
-
assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
test('returns a XML example for the XML mime', async ({ assert }) => {
|
|
68
|
-
const shape = loader.lookupRequestPayload(api, '/body-tracking', 'put', xmlMime)
|
|
69
|
-
const result = serializer.payload(shape)
|
|
70
|
-
|
|
71
|
-
const { examples } = result.schema as IApiNodeShape
|
|
72
|
-
|
|
73
|
-
assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
|
|
74
|
-
const [ex1, ex2] = examples
|
|
75
|
-
assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
|
|
76
|
-
assert.include(
|
|
77
|
-
ex2.value,
|
|
78
|
-
'<id>Qawer63J73HJ6khjswuqyq62382jG21s</id>',
|
|
79
|
-
'example #2 is payload defined example (xml)'
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
test('reuses the same JSON example for the JSON mime', async ({ assert }) => {
|
|
86
|
-
const shape = loader.lookupRequestPayload(api, '/body-tracking', 'post', jsonMime)
|
|
87
|
-
const result = serializer.payload(shape)
|
|
88
|
-
|
|
89
|
-
const { examples } = result.schema as IApiNodeShape
|
|
90
|
-
|
|
91
|
-
assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
|
|
92
|
-
const [ex1, ex2] = examples
|
|
93
|
-
assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
|
|
94
|
-
assert.include(ex2.value, '"id": "R34fg663H9KW9MMSKISI"', 'example #2 is payload defined example (json)')
|
|
95
|
-
|
|
96
|
-
assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
|
|
97
|
-
})
|
|
98
|
-
|
|
99
|
-
test('reuses the same XML example for the XML mime', async ({ assert }) => {
|
|
100
|
-
const shape = loader.lookupRequestPayload(api, '/body-tracking', 'post', xmlMime)
|
|
101
|
-
const result = serializer.payload(shape)
|
|
102
|
-
|
|
103
|
-
const { examples } = result.schema as IApiNodeShape
|
|
104
|
-
|
|
105
|
-
assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
|
|
106
|
-
const [ex1, ex2] = examples
|
|
107
|
-
assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
|
|
108
|
-
assert.include(
|
|
109
|
-
ex2.value,
|
|
110
|
-
'<id>Qawer63J73HJ6khjswuqyq62382jG21s</id>',
|
|
111
|
-
'example #2 is payload defined example (xml)'
|
|
112
|
-
)
|
|
113
|
-
|
|
114
|
-
assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
test('works when a single mime is used', async ({ assert }) => {
|
|
118
|
-
const shape = loader.lookupRequestPayload(api, '/body-tracking', 'delete', jsonMime)
|
|
119
|
-
const result = serializer.payload(shape)
|
|
120
|
-
|
|
121
|
-
const { examples } = result.schema as IApiNodeShape
|
|
122
|
-
|
|
123
|
-
assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
|
|
124
|
-
const [ex1, ex2] = examples
|
|
125
|
-
assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
|
|
126
|
-
assert.include(ex2.value, '"id": "R34fg663H9KW9MMSKISI"', 'example #2 is payload defined example (json)')
|
|
127
|
-
|
|
128
|
-
assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
|
|
129
|
-
})
|
|
130
|
-
|
|
131
|
-
test('serializes type only example when no payload example', async ({ assert }) => {
|
|
132
|
-
const shape = loader.lookupRequestPayload(api, '/body-tracking', 'patch', jsonMime)
|
|
133
|
-
const result = serializer.payload(shape)
|
|
134
|
-
|
|
135
|
-
const { examples } = result.schema as IApiNodeShape
|
|
136
|
-
|
|
137
|
-
assert.lengthOf(examples, 1, 'has only the type example')
|
|
138
|
-
const [ex1] = examples
|
|
139
|
-
assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
|
|
140
|
-
})
|
|
141
|
-
|
|
142
|
-
test('adds example without tracking information', async ({ assert }) => {
|
|
143
|
-
const shape = loader.lookupRequestPayload(api, '/not-shared', 'post', jsonMime)
|
|
144
|
-
const result = serializer.payload(shape)
|
|
145
|
-
|
|
146
|
-
const { examples } = result.schema as IApiNodeShape
|
|
147
|
-
|
|
148
|
-
assert.lengthOf(examples, 1, 'has only the payload example')
|
|
149
|
-
const [ex1] = examples
|
|
150
|
-
assert.include(ex1.value, 'id: 1234567890', 'example #1 is type defined example')
|
|
151
|
-
})
|
|
152
|
-
})
|