create-qpq-app 0.1.26 → 0.1.27
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/package.json +2 -2
- package/template/apps/qpqjs/services/test/models/src/SmokeProbeRecord.ts +3 -0
- package/template/apps/qpqjs/services/test/service/src/infrastructure.ts +0 -6
- package/template/apps/qpqjs/services/test/service/src/smoke/config/defineSmoke.ts +8 -264
- package/template/apps/qpqjs/services/test/service/src/smoke/harness/assert/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/harness/config/defineSmokeHarness.ts +115 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/harness/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{constants → harness/constants}/index.ts +0 -2
- package/template/apps/qpqjs/services/test/service/src/smoke/harness/index.ts +10 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{logic → harness/logic}/smokeRun/askExecuteSmokeTest.ts +3 -3
- package/template/apps/qpqjs/services/test/service/src/smoke/{logic → harness/logic}/smokeRun/askStartSmokeRun.ts +5 -4
- package/template/apps/qpqjs/services/test/service/src/smoke/{logic → harness/logic}/smokeRun/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/harness/logic/smokeRun/listSmokeTests.ts +6 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{models → harness/models}/SmokeTestRequestedQueueEvent.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/harness/models/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/harness/queue/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/harness/types/SmokeSuite.ts +13 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/harness/types/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/index.ts +2 -12
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/emailReceive/config/defineEmailReceiveSmoke.ts +20 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/emailReceive/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/emailReceive/constants/SMOKE_EMAIL_RECEIVER.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/emailReceive/constants/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/emailReceive/emailReceiveSmokeSuite.ts +15 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{email → suites/emailReceive/entry/email}/index.ts +0 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/{email → suites/emailReceive/entry/email}/onSmokeEmailReceived.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/emailReceive/entry/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/emailReceive/index.ts +5 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/emailReceive → suites/emailReceive/logic}/askRunEmailReceiveTest.ts +3 -3
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/emailReceive → suites/emailReceive/logic}/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/encryptedResources/config/defineEncryptedResourcesSmoke.ts +29 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/encryptedResources/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/encryptedResources/constants/SMOKE_CRYPTO_KEY.ts +5 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/encryptedResources/constants/SMOKE_ENCRYPTED_PROBE_DRIVE.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/encryptedResources/constants/SMOKE_ENCRYPTED_PROBE_STORE.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/encryptedResources/constants/index.ts +3 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/encryptedResources/encryptedResourcesSmokeSuite.ts +9 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/encryptedResources/index.ts +4 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/encryptedResources → suites/encryptedResources/logic}/askRunEncryptedResourcesTest.ts +3 -5
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/config/defineEventBusSmoke.ts +21 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/constants/SMOKE_PROBE_EVENT_BUS.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/constants/SMOKE_PROBE_EVENT_QUEUE.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/constants/SMOKE_PROBE_EVENT_TYPE.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/constants/index.ts +3 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/entry/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/entry/queue/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{queue → suites/eventBus/entry/queue}/onSmokeProbeEvent.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/eventBusSmokeSuite.ts +9 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/index.ts +6 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/eventBus → suites/eventBus/logic}/askRunEventBusTest.ts +4 -6
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/models/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/config/defineEventDocSmoke.ts +44 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/constants/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{constants → suites/eventDoc/constants}/smokeEventDoc.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/entry/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/entry/queue/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{queue → suites/eventDoc/entry/queue}/onSmokeEventDocAppend.ts +3 -3
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/eventDocSmokeSuite.ts +19 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/index.ts +7 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/eventDoc → suites/eventDoc/logic}/askAssertContiguousEventIds.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/eventDoc → suites/eventDoc/logic}/askAssertSmokeProbeDocState.ts +2 -2
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/eventDoc → suites/eventDoc/logic}/askAwaitSmokeEventDocLog.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/eventDoc → suites/eventDoc/logic}/askRunEventDocConcurrentAppendTest.ts +5 -5
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/eventDoc → suites/eventDoc/logic}/askRunEventDocInterleavedBatchAppendTest.ts +4 -4
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/models/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests → suites}/index.ts +4 -5
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/keyValueStore/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/keyValueStore/keyValueStoreSmokeSuite.ts +14 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/crossService → suites/keyValueStore/logic}/askRunCrossServiceKeyValueStoreTest.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/keyValueStore → suites/keyValueStore/logic}/askRunKeyValueStoreTest.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/keyValueStore/logic/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/keyValueStoreStream/config/defineKeyValueStoreStreamSmoke.ts +30 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/keyValueStoreStream/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/keyValueStoreStream/constants/SMOKE_STREAM_PROBE_STORE.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/keyValueStoreStream/constants/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/keyValueStoreStream/entry/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{kvsStream → suites/keyValueStoreStream/entry/kvsStream}/index.ts +0 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/{kvsStream → suites/keyValueStoreStream/entry/kvsStream}/onSmokeStreamRecord.ts +6 -4
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/keyValueStoreStream/index.ts +5 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/keyValueStoreStream/keyValueStoreStreamSmokeSuite.ts +11 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/keyValueStoreStream → suites/keyValueStoreStream/logic}/askRunKeyValueStoreStreamTest.ts +15 -6
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/keyValueStoreStream → suites/keyValueStoreStream/logic}/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/noop/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/noop/noopSmokeSuite.ts +7 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/openApi/config/defineOpenApiSmoke.ts +13 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/openApi/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/openApi/index.ts +4 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/openApi → suites/openApi/logic}/askRunEchoRoundTripTest.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/openApi → suites/openApi/logic}/askRunOpenApiDocumentTest.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/openApi/openApiSmokeSuite.ts +13 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/parameter/config/defineParameterSmoke.ts +11 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/parameter/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/parameter/constants/SMOKE_PROBE_PARAMETER.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/parameter/constants/SMOKE_PROBE_PARAMETER_VALUE.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/parameter/constants/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/parameter/index.ts +4 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/parameter → suites/parameter/logic}/askRunParameterTest.ts +3 -5
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/parameter/parameterSmokeSuite.ts +9 -0
- package/template/apps/qpqjs/services/test/service/src/{tick/config/defineTick.ts → smoke/suites/schedule/config/defineScheduleSmoke.ts} +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/schedule/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/schedule/entry/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/schedule/index.ts +6 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/schedule → suites/schedule/logic}/askRunScheduleTest.ts +4 -4
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/schedule/scheduleSmokeSuite.ts +9 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedKeyValueStore/config/defineScopedKeyValueStoreSmoke.ts +19 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedKeyValueStore/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedKeyValueStore/constants/SMOKE_SCOPED_PROBE_STORE.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedKeyValueStore/constants/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedKeyValueStore/index.ts +4 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedKeyValueStore/logic/askRunScopedKeyValueStoreTest.ts +256 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedKeyValueStore/scopedKeyValueStoreSmokeSuite.ts +11 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedStorageDrive/config/defineScopedStorageDriveSmoke.ts +12 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedStorageDrive/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedStorageDrive/constants/SMOKE_SCOPED_PROBE_DRIVE.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedStorageDrive/constants/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedStorageDrive/index.ts +4 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/scopedStorageDrive → suites/scopedStorageDrive/logic}/askRunScopedStorageDriveTest.ts +2 -2
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/scopedStorageDrive/scopedStorageDriveSmokeSuite.ts +9 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/secret/config/defineSecretSmoke.ts +8 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/secret/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/secret/constants/SMOKE_PROBE_SECRET.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/secret/constants/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/secret/index.ts +4 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/secret → suites/secret/logic}/askRunSecretTest.ts +2 -2
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/secret/secretSmokeSuite.ts +9 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/signingKey/config/defineSigningKeySmoke.ts +12 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/signingKey/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/signingKey/index.ts +3 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/crossService → suites/signingKey/logic}/askRunCrossServiceSigningKeyTest.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/signingKey → suites/signingKey/logic}/askRunSigningKeyTest.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/signingKey/logic/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/signingKey/signingKeySmokeSuite.ts +16 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/smokeSuites.ts +46 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDrive/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/crossService → suites/storageDrive/logic}/askRunCrossServiceStorageDriveTest.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/storageDrive → suites/storageDrive/logic}/askRunStorageDriveTest.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDrive/logic/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDrive/storageDriveSmokeSuite.ts +14 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDriveEvent/config/defineStorageDriveEventSmoke.ts +27 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDriveEvent/config/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDriveEvent/constants/SMOKE_FILE_EVENT_DRIVE.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDriveEvent/constants/SMOKE_SCOPED_FILE_EVENT_DRIVE.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDriveEvent/constants/index.ts +2 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDriveEvent/entry/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDriveEvent/entry/storageDrive/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{storageDrive → suites/storageDriveEvent/entry/storageDrive}/onSmokeFileEvent.ts +1 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDriveEvent/index.ts +5 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/storageDriveEvent → suites/storageDriveEvent/logic}/askRunStorageDriveEventTest.ts +7 -9
- package/template/apps/qpqjs/services/test/service/src/smoke/{tests/storageDriveEvent → suites/storageDriveEvent/logic}/index.ts +1 -0
- package/template/apps/qpqjs/services/test/service/src/smoke/suites/storageDriveEvent/storageDriveEventSmokeSuite.ts +9 -0
- package/template/apps/qpqjs/services/testa/models/src/CrossServiceProbePayload.ts +1 -1
- package/template/apps/qpqjs/services/testa/service/src/infrastructure.ts +2 -2
- package/template/apps/qpqjs/services/testa/service/src/smoke/config/defineSmokeProbes.ts +16 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/config/index.ts +1 -0
- package/template/apps/qpqjs/services/{test/service/src/tick → testa/service/src/smoke}/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/index.ts +3 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/keyValueStore/config/defineKeyValueStoreSmokeProbe.ts +33 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/keyValueStore/config/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/keyValueStore/entry/serviceFunction/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/keyValueStore/logic/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/signingKey/config/defineSigningKeySmokeProbe.ts +28 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/signingKey/config/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/signingKey/entry/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/signingKey/entry/serviceFunction/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/signingKey/index.ts +3 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/signingKey/logic/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/storageDrive/config/defineStorageDriveSmokeProbe.ts +31 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/storageDrive/config/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/storageDrive/entry/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/storageDrive/entry/serviceFunction/index.ts +1 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/storageDrive/index.ts +3 -0
- package/template/apps/qpqjs/services/testa/service/src/smoke/suites/storageDrive/logic/index.ts +1 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-delete.md +1 -1
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-get-all.md +1 -1
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-get.md +1 -1
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-query.md +3 -1
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-scan.md +1 -1
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-update.md +1 -1
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-upsert.md +1 -1
- package/template/docusaurus/docs/config/core/key-value-store.md +12 -2
- package/template/docusaurus/docs/config/features/event-doc.md +22 -1
- package/template/apps/qpqjs/services/test/service/src/echo/config/defineEcho.ts +0 -9
- package/template/apps/qpqjs/services/test/service/src/smoke/constants/smokeProbe.ts +0 -39
- package/template/apps/qpqjs/services/test/service/src/smoke/models/index.ts +0 -5
- package/template/apps/qpqjs/services/test/service/src/smoke/queue/index.ts +0 -3
- package/template/apps/qpqjs/services/test/service/src/smoke/storageDrive/index.ts +0 -4
- package/template/apps/qpqjs/services/test/service/src/smoke/tests/crossService/index.ts +0 -3
- package/template/apps/qpqjs/services/test/service/src/smoke/tests/keyValueStore/index.ts +0 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/tests/scopedKeyValueStore/askRunScopedKeyValueStoreTest.ts +0 -102
- package/template/apps/qpqjs/services/test/service/src/smoke/tests/signingKey/index.ts +0 -1
- package/template/apps/qpqjs/services/test/service/src/smoke/tests/smokeTestRegistry.ts +0 -66
- package/template/apps/qpqjs/services/test/service/src/smoke/tests/storageDrive/index.ts +0 -1
- package/template/apps/qpqjs/services/test/service/src/tick/config/index.ts +0 -1
- package/template/apps/qpqjs/services/testa/service/src/crossServiceProbe/config/defineCrossServiceProbe.ts +0 -68
- package/template/apps/qpqjs/services/testa/service/src/crossServiceProbe/config/index.ts +0 -1
- package/template/apps/qpqjs/services/testa/service/src/crossServiceProbe/entry/serviceFunction/index.ts +0 -3
- package/template/apps/qpqjs/services/testa/service/src/crossServiceProbe/logic/index.ts +0 -3
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests → harness/assert}/askSmokeAssert.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests → harness/assert}/askSmokePollForMarker.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{constants → harness/constants}/SMOKE_RUNS_STORE.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{constants → harness/constants}/githubOidc.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{constants → harness/constants}/smokeRunQueue.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{controller → harness/controller}/askGetSmokeRun.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{controller → harness/controller}/askRunSmokeTests.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{controller → harness/controller}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{data → harness/data}/askGetSmokeRunById.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{data → harness/data}/askRecordSmokeTestResult.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{data → harness/data}/askSaveSmokeRun.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{data → harness/data}/askSetSmokeRunOutcome.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{data → harness/data}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{logic → harness/logic}/github/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{logic → harness/logic}/github/verifyGithubOidcToken.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{logic → harness/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{logic → harness/logic}/smokeRun/askFindSmokeRun.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{logic → harness/logic}/smokeRun/summarizeSmokeRun.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{models → harness/models}/GithubOidcClaims.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{processors → harness/processors}/github/getGithubOidcAuthProcessors.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{processors → harness/processors}/github/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{processors → harness/processors}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{queue → harness/queue}/onSmokeTestRequested.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests → harness/types}/SmokeTestDefinition.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{email → suites/emailReceive/logic}/smokeEmailMarkerId.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/encryptedResources → suites/encryptedResources/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/eventBus → suites/eventBus/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{models → suites/eventBus/models}/SmokeProbeEventQueueEvent.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{eventDoc → suites/eventDoc/definition}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{eventDoc → suites/eventDoc/definition}/smokeProbeDocDefinition.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/eventDoc → suites/eventDoc/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{models → suites/eventDoc/models}/SmokeEventDocAppendQueueEvent.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{models → suites/eventDoc/models}/SmokeEventDocMark.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{kvsStream → suites/keyValueStoreStream/logic}/smokeStreamMarkerId.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/noop → suites/noop/logic}/askRunNoopTest.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/noop → suites/noop/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{echo → smoke/suites/openApi}/controller/echo.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{echo → smoke/suites/openApi}/controller/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/openApi → suites/openApi/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/parameter → suites/parameter/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{tick → smoke/suites/schedule}/constants/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{tick → smoke/suites/schedule}/constants/scheduleTickName.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{tick → smoke/suites/schedule}/constants/scheduleTickStore.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{tick → smoke/suites/schedule}/entry/kvsStream/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{tick → smoke/suites/schedule}/entry/kvsStream/onScheduleTickStream.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{tick → smoke/suites/schedule}/entry/schedule/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{tick → smoke/suites/schedule}/entry/schedule/onTick.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/schedule → suites/schedule/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{tick → smoke/suites/schedule}/models/ScheduleTickRecord.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/{tick → smoke/suites/schedule}/models/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/scopedKeyValueStore → suites/scopedKeyValueStore/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/scopedStorageDrive → suites/scopedStorageDrive/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{tests/secret → suites/secret/logic}/index.ts +0 -0
- /package/template/apps/qpqjs/services/test/service/src/smoke/{storageDrive → suites/storageDriveEvent/logic}/smokeFileEventMarkerId.ts +0 -0
- /package/template/apps/qpqjs/services/testa/service/src/{crossServiceProbe → smoke/suites/keyValueStore}/entry/index.ts +0 -0
- /package/template/apps/qpqjs/services/testa/service/src/{crossServiceProbe → smoke/suites/keyValueStore}/entry/serviceFunction/smokeCrossServiceKeyValueStoreProbe.ts +0 -0
- /package/template/apps/qpqjs/services/testa/service/src/{crossServiceProbe → smoke/suites/keyValueStore}/index.ts +0 -0
- /package/template/apps/qpqjs/services/testa/service/src/{crossServiceProbe → smoke/suites/keyValueStore}/logic/askProbeForeignKeyValueStore.ts +0 -0
- /package/template/apps/qpqjs/services/testa/service/src/{crossServiceProbe → smoke/suites/signingKey}/entry/serviceFunction/smokeCrossServiceSigningKeyProbe.ts +0 -0
- /package/template/apps/qpqjs/services/testa/service/src/{crossServiceProbe → smoke/suites/signingKey}/logic/askProbeForeignSigningKey.ts +0 -0
- /package/template/apps/qpqjs/services/testa/service/src/{crossServiceProbe → smoke/suites/storageDrive}/entry/serviceFunction/smokeCrossServiceStorageDriveProbe.ts +0 -0
- /package/template/apps/qpqjs/services/testa/service/src/{crossServiceProbe → smoke/suites/storageDrive}/logic/askProbeForeignStorageDrive.ts +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { askDnsResolveHosts, askEmailSendEmail, AskResponse } from 'quidproquo';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { askSmokeAssert } from '../../../harness/assert/askSmokeAssert';
|
|
4
|
+
import { askSmokePollForMarker } from '../../../harness/assert/askSmokePollForMarker';
|
|
5
|
+
import { smokeEmailMarkerId } from './smokeEmailMarkerId';
|
|
6
6
|
|
|
7
7
|
// The inbound email path end to end: send to this app's own receiving domain
|
|
8
8
|
// with its own sender, SES receives it through the account rule set and the
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import {
|
|
2
|
+
defineCryptoKey,
|
|
3
|
+
defineKeyValueStore,
|
|
4
|
+
defineStorageDrive,
|
|
5
|
+
QPQConfig,
|
|
6
|
+
} from 'quidproquo';
|
|
7
|
+
|
|
8
|
+
import { SmokeProbeRecord } from '@qpqjs/test-models';
|
|
9
|
+
|
|
10
|
+
import { SMOKE_CRYPTO_KEY } from '../constants/SMOKE_CRYPTO_KEY';
|
|
11
|
+
import { SMOKE_ENCRYPTED_PROBE_DRIVE } from '../constants/SMOKE_ENCRYPTED_PROBE_DRIVE';
|
|
12
|
+
import { SMOKE_ENCRYPTED_PROBE_STORE } from '../constants/SMOKE_ENCRYPTED_PROBE_STORE';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* A drive and a store encrypted with an owned crypto key, so the test proves
|
|
16
|
+
* the role's KMS grant covers data at rest.
|
|
17
|
+
*/
|
|
18
|
+
export const defineEncryptedResourcesSmoke = (): QPQConfig => [
|
|
19
|
+
defineCryptoKey(SMOKE_CRYPTO_KEY),
|
|
20
|
+
defineKeyValueStore<SmokeProbeRecord>(
|
|
21
|
+
SMOKE_ENCRYPTED_PROBE_STORE,
|
|
22
|
+
'probeId',
|
|
23
|
+
[],
|
|
24
|
+
{ cryptoKeyName: SMOKE_CRYPTO_KEY }
|
|
25
|
+
),
|
|
26
|
+
defineStorageDrive(SMOKE_ENCRYPTED_PROBE_DRIVE, {
|
|
27
|
+
cryptoKeyName: SMOKE_CRYPTO_KEY,
|
|
28
|
+
}),
|
|
29
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './defineEncryptedResourcesSmoke';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SmokeSuite } from '../../harness/types/SmokeSuite';
|
|
2
|
+
import { defineEncryptedResourcesSmoke } from './config/defineEncryptedResourcesSmoke';
|
|
3
|
+
import { askRunEncryptedResourcesTest } from './logic/askRunEncryptedResourcesTest';
|
|
4
|
+
|
|
5
|
+
/** Round trips through a drive and a store encrypted with an owned crypto key. */
|
|
6
|
+
export const encryptedResourcesSmokeSuite: SmokeSuite = {
|
|
7
|
+
defineConfig: defineEncryptedResourcesSmoke,
|
|
8
|
+
tests: [{ name: 'encryptedResources', askRun: askRunEncryptedResourcesTest }],
|
|
9
|
+
};
|
|
@@ -11,11 +11,9 @@ import {
|
|
|
11
11
|
|
|
12
12
|
import { SmokeProbeRecord } from '@qpqjs/test-models';
|
|
13
13
|
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} from '../../constants/smokeProbe';
|
|
18
|
-
import { askSmokeAssert } from '../askSmokeAssert';
|
|
14
|
+
import { askSmokeAssert } from '../../../harness/assert/askSmokeAssert';
|
|
15
|
+
import { SMOKE_ENCRYPTED_PROBE_DRIVE } from '../constants/SMOKE_ENCRYPTED_PROBE_DRIVE';
|
|
16
|
+
import { SMOKE_ENCRYPTED_PROBE_STORE } from '../constants/SMOKE_ENCRYPTED_PROBE_STORE';
|
|
19
17
|
|
|
20
18
|
// A drive and a store encrypted with a defineCryptoKey. Deployed, every write
|
|
21
19
|
// needs kms:GenerateDataKey and every read kms:Decrypt on that key through
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineEventBus, defineQueue, QPQConfig } from 'quidproquo';
|
|
2
|
+
|
|
3
|
+
import { SMOKE_PROBE_EVENT_BUS } from '../constants/SMOKE_PROBE_EVENT_BUS';
|
|
4
|
+
import { SMOKE_PROBE_EVENT_QUEUE } from '../constants/SMOKE_PROBE_EVENT_QUEUE';
|
|
5
|
+
import { SMOKE_PROBE_EVENT_TYPE } from '../constants/SMOKE_PROBE_EVENT_TYPE';
|
|
6
|
+
|
|
7
|
+
/** Publish to the bus, the subscribed queue's entry writes a marker into the probe store, the test polls for it. */
|
|
8
|
+
export const defineEventBusSmoke = (): QPQConfig => [
|
|
9
|
+
defineEventBus(SMOKE_PROBE_EVENT_BUS),
|
|
10
|
+
defineQueue(
|
|
11
|
+
SMOKE_PROBE_EVENT_QUEUE,
|
|
12
|
+
{
|
|
13
|
+
[SMOKE_PROBE_EVENT_TYPE]: {
|
|
14
|
+
basePath: __dirname,
|
|
15
|
+
relativePath: '../entry/queue/onSmokeProbeEvent',
|
|
16
|
+
functionName: 'onSmokeProbeEvent',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
{ eventBusSubscriptions: [SMOKE_PROBE_EVENT_BUS] }
|
|
20
|
+
),
|
|
21
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './defineEventBusSmoke';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './queue';
|
package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/entry/queue/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './onSmokeProbeEvent';
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import { SMOKE_PROBE_STORE } from '@qpqjs/constants';
|
|
8
8
|
import { SmokeProbeRecord } from '@qpqjs/test-models';
|
|
9
9
|
|
|
10
|
-
import { SmokeProbeEventQueueEvent } from '
|
|
10
|
+
import { SmokeProbeEventQueueEvent } from '../../models/SmokeProbeEventQueueEvent';
|
|
11
11
|
|
|
12
12
|
// Fan-in for the event bus test: the message published to the probe bus
|
|
13
13
|
// lands here via the subscribed queue, and the marker row it writes is what
|
package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventBus/eventBusSmokeSuite.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SmokeSuite } from '../../harness/types/SmokeSuite';
|
|
2
|
+
import { defineEventBusSmoke } from './config/defineEventBusSmoke';
|
|
3
|
+
import { askRunEventBusTest } from './logic/askRunEventBusTest';
|
|
4
|
+
|
|
5
|
+
/** Publish to an owned event bus and wait for the subscribed queue's marker. */
|
|
6
|
+
export const eventBusSmokeSuite: SmokeSuite = {
|
|
7
|
+
defineConfig: defineEventBusSmoke,
|
|
8
|
+
tests: [{ name: 'eventBus', askRun: askRunEventBusTest }],
|
|
9
|
+
};
|
|
@@ -5,12 +5,10 @@ import {
|
|
|
5
5
|
EventBusMessage,
|
|
6
6
|
} from 'quidproquo';
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} from '
|
|
12
|
-
import { SmokeProbeEventPayload } from '../../models/SmokeProbeEventQueueEvent';
|
|
13
|
-
import { askSmokePollForMarker } from '../askSmokePollForMarker';
|
|
8
|
+
import { askSmokePollForMarker } from '../../../harness/assert/askSmokePollForMarker';
|
|
9
|
+
import { SMOKE_PROBE_EVENT_BUS } from '../constants/SMOKE_PROBE_EVENT_BUS';
|
|
10
|
+
import { SMOKE_PROBE_EVENT_TYPE } from '../constants/SMOKE_PROBE_EVENT_TYPE';
|
|
11
|
+
import { SmokeProbeEventPayload } from '../models/SmokeProbeEventQueueEvent';
|
|
14
12
|
|
|
15
13
|
// The full async fan-out / fan-in path: publish to the owned event bus, the
|
|
16
14
|
// subscribed queue's entry (onSmokeProbeEvent) writes a marker row, and this
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SmokeProbeEventQueueEvent';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { defineQueue, QPQConfig } from 'quidproquo';
|
|
2
|
+
import { defineEventDoc } from 'quidproquo-features';
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
SMOKE_EVENT_DOC_APPEND_MESSAGE_TYPE,
|
|
6
|
+
SMOKE_EVENT_DOC_APPEND_QUEUE,
|
|
7
|
+
SMOKE_EVENT_DOC_BASE_PATH,
|
|
8
|
+
} from '../constants/smokeEventDoc';
|
|
9
|
+
import { smokeProbeDocDefinition } from '../definition/smokeProbeDocDefinition';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* A full registered event-doc collection (stores, stream projector, dynamic
|
|
13
|
+
* functions, routes) so the tests exercise event docs the way a real service
|
|
14
|
+
* does, plus the queue that fans a test's writers out one invocation each so
|
|
15
|
+
* their appends race across lambdas.
|
|
16
|
+
*/
|
|
17
|
+
export const defineEventDocSmoke = (): QPQConfig => [
|
|
18
|
+
// NOTE the routes mount with no auth (the test service has no user
|
|
19
|
+
// directory), so the collection is world-writable; it holds nothing but
|
|
20
|
+
// throwaway probe docs.
|
|
21
|
+
defineEventDoc(
|
|
22
|
+
smokeProbeDocDefinition,
|
|
23
|
+
{
|
|
24
|
+
basePath: __dirname,
|
|
25
|
+
relativePath: '../definition/smokeProbeDocDefinition',
|
|
26
|
+
functionName: 'smokeProbeDocDefinition',
|
|
27
|
+
},
|
|
28
|
+
{ basePath: SMOKE_EVENT_DOC_BASE_PATH }
|
|
29
|
+
),
|
|
30
|
+
// A writer that loses the slot race past the append retry cap fails its
|
|
31
|
+
// message; a quick redelivery lets it land instead of vanishing, as a
|
|
32
|
+
// production queue should.
|
|
33
|
+
defineQueue(
|
|
34
|
+
SMOKE_EVENT_DOC_APPEND_QUEUE,
|
|
35
|
+
{
|
|
36
|
+
[SMOKE_EVENT_DOC_APPEND_MESSAGE_TYPE]: {
|
|
37
|
+
basePath: __dirname,
|
|
38
|
+
relativePath: '../entry/queue/onSmokeEventDocAppend',
|
|
39
|
+
functionName: 'onSmokeEventDocAppend',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
{ maxTries: 3, ttRetryInSeconds: 10 }
|
|
43
|
+
),
|
|
44
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './defineEventDocSmoke';
|
package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/constants/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './smokeEventDoc';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EventDocEventActor, EventDocStoreOptions } from 'quidproquo-features';
|
|
2
2
|
|
|
3
3
|
// The throwaway event-doc collection the smoke tests write to, registered in full via
|
|
4
|
-
// defineEventDoc (see ../
|
|
4
|
+
// defineEventDoc (see ../definition/smokeProbeDocDefinition): stores, stream projector,
|
|
5
5
|
// dynamic functions and routes, exactly as a real service's collection.
|
|
6
6
|
export const SMOKE_EVENT_DOC_STORE = 'smokeEventDocs';
|
|
7
7
|
export const SMOKE_EVENT_DOC_TYPE = 'smokeProbeDoc';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './queue';
|
package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/entry/queue/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './onSmokeEventDocAppend';
|
|
@@ -11,9 +11,9 @@ import {
|
|
|
11
11
|
SMOKE_EVENT_DOC_MARK_EVENT,
|
|
12
12
|
SMOKE_EVENT_DOC_SCHEMA_VERSION,
|
|
13
13
|
SMOKE_EVENT_DOC_STORE_OPTIONS,
|
|
14
|
-
} from '
|
|
15
|
-
import { SmokeEventDocAppendQueueEvent } from '
|
|
16
|
-
import { SmokeEventDocMark } from '
|
|
14
|
+
} from '../../constants/smokeEventDoc';
|
|
15
|
+
import { SmokeEventDocAppendQueueEvent } from '../../models/SmokeEventDocAppendQueueEvent';
|
|
16
|
+
import { SmokeEventDocMark } from '../../models/SmokeEventDocMark';
|
|
17
17
|
|
|
18
18
|
// One writer in the event-doc concurrency tests. Every message is its own invocation,
|
|
19
19
|
// so the writers of a test race each other for the log's next slots for real - the
|
package/template/apps/qpqjs/services/test/service/src/smoke/suites/eventDoc/eventDocSmokeSuite.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SmokeSuite } from '../../harness/types/SmokeSuite';
|
|
2
|
+
import { defineEventDocSmoke } from './config/defineEventDocSmoke';
|
|
3
|
+
import { askRunEventDocConcurrentAppendTest } from './logic/askRunEventDocConcurrentAppendTest';
|
|
4
|
+
import { askRunEventDocInterleavedBatchAppendTest } from './logic/askRunEventDocInterleavedBatchAppendTest';
|
|
5
|
+
|
|
6
|
+
/** Racing appends onto one event doc across lambdas must stay contiguous. */
|
|
7
|
+
export const eventDocSmokeSuite: SmokeSuite = {
|
|
8
|
+
defineConfig: defineEventDocSmoke,
|
|
9
|
+
tests: [
|
|
10
|
+
{
|
|
11
|
+
name: 'eventDocConcurrentAppend',
|
|
12
|
+
askRun: askRunEventDocConcurrentAppendTest,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'eventDocInterleavedBatchAppend',
|
|
16
|
+
askRun: askRunEventDocInterleavedBatchAppendTest,
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AskResponse } from 'quidproquo';
|
|
2
2
|
import { EventDocEvent } from 'quidproquo-features';
|
|
3
3
|
|
|
4
|
-
import { askSmokeAssert } from '
|
|
4
|
+
import { askSmokeAssert } from '../../../harness/assert/askSmokeAssert';
|
|
5
5
|
|
|
6
6
|
// The whole point of numeric event ids: an ascending list read of the log is exactly
|
|
7
7
|
// 0, 1, 2, ... with no hole and no repeat, whatever order the writers raced in.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AskResponse } from 'quidproquo';
|
|
2
2
|
import { askEventDocDocumentStateLatest } from 'quidproquo-features';
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { askSmokeAssert } from '../../../harness/assert/askSmokeAssert';
|
|
5
|
+
import { SmokeProbeDocState } from '../definition/smokeProbeDocDefinition';
|
|
6
6
|
|
|
7
7
|
// The folded document, read the way the render/references routes read it: snapshot
|
|
8
8
|
// seeded (whatever the stream projector has stored so far) plus the gap, through the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { askDelay, AskResponse } from 'quidproquo';
|
|
2
2
|
import { askEventDocEventListAll, EventDocEvent } from 'quidproquo-features';
|
|
3
3
|
|
|
4
|
-
import { askSmokeAssert } from '
|
|
4
|
+
import { askSmokeAssert } from '../../../harness/assert/askSmokeAssert';
|
|
5
5
|
|
|
6
6
|
// Long enough to cover a writer's retry laps plus one queue redelivery.
|
|
7
7
|
const POLL_ATTEMPTS = 45;
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
askEventDocSoftDelete,
|
|
6
6
|
} from 'quidproquo-features';
|
|
7
7
|
|
|
8
|
+
import { askSmokeAssert } from '../../../harness/assert/askSmokeAssert';
|
|
8
9
|
import {
|
|
9
10
|
SMOKE_EVENT_DOC_ACTOR,
|
|
10
11
|
SMOKE_EVENT_DOC_APPEND_MESSAGE_TYPE,
|
|
@@ -12,11 +13,10 @@ import {
|
|
|
12
13
|
SMOKE_EVENT_DOC_MARK_EVENT,
|
|
13
14
|
SMOKE_EVENT_DOC_SCHEMA_VERSION,
|
|
14
15
|
SMOKE_EVENT_DOC_STORE_OPTIONS,
|
|
15
|
-
} from '
|
|
16
|
-
import { SMOKE_PROBE_DOC_WINDOW } from '
|
|
17
|
-
import { SmokeEventDocAppendPayload } from '
|
|
18
|
-
import { SmokeEventDocMark } from '
|
|
19
|
-
import { askSmokeAssert } from '../askSmokeAssert';
|
|
16
|
+
} from '../constants/smokeEventDoc';
|
|
17
|
+
import { SMOKE_PROBE_DOC_WINDOW } from '../definition/smokeProbeDocDefinition';
|
|
18
|
+
import { SmokeEventDocAppendPayload } from '../models/SmokeEventDocAppendQueueEvent';
|
|
19
|
+
import { SmokeEventDocMark } from '../models/SmokeEventDocMark';
|
|
20
20
|
import { askAssertContiguousEventIds } from './askAssertContiguousEventIds';
|
|
21
21
|
import { askAssertSmokeProbeDocState } from './askAssertSmokeProbeDocState';
|
|
22
22
|
import { askAwaitSmokeEventDocLog } from './askAwaitSmokeEventDocLog';
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
askEventDocSoftDelete,
|
|
6
6
|
} from 'quidproquo-features';
|
|
7
7
|
|
|
8
|
+
import { askSmokeAssert } from '../../../harness/assert/askSmokeAssert';
|
|
8
9
|
import {
|
|
9
10
|
SMOKE_EVENT_DOC_ACTOR,
|
|
10
11
|
SMOKE_EVENT_DOC_APPEND_MESSAGE_TYPE,
|
|
@@ -12,10 +13,9 @@ import {
|
|
|
12
13
|
SMOKE_EVENT_DOC_MARK_EVENT,
|
|
13
14
|
SMOKE_EVENT_DOC_SCHEMA_VERSION,
|
|
14
15
|
SMOKE_EVENT_DOC_STORE_OPTIONS,
|
|
15
|
-
} from '
|
|
16
|
-
import { SmokeEventDocAppendPayload } from '
|
|
17
|
-
import { SmokeEventDocMark } from '
|
|
18
|
-
import { askSmokeAssert } from '../askSmokeAssert';
|
|
16
|
+
} from '../constants/smokeEventDoc';
|
|
17
|
+
import { SmokeEventDocAppendPayload } from '../models/SmokeEventDocAppendQueueEvent';
|
|
18
|
+
import { SmokeEventDocMark } from '../models/SmokeEventDocMark';
|
|
19
19
|
import { askAssertContiguousEventIds } from './askAssertContiguousEventIds';
|
|
20
20
|
import { askAssertSmokeProbeDocState } from './askAssertSmokeProbeDocState';
|
|
21
21
|
import { askAwaitSmokeEventDocLog } from './askAwaitSmokeEventDocLog';
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
export * from './askSmokeAssert';
|
|
2
|
-
export * from './askSmokePollForMarker';
|
|
3
|
-
export * from './crossService';
|
|
4
1
|
export * from './emailReceive';
|
|
5
2
|
export * from './encryptedResources';
|
|
6
3
|
export * from './eventBus';
|
|
@@ -10,9 +7,11 @@ export * from './keyValueStoreStream';
|
|
|
10
7
|
export * from './noop';
|
|
11
8
|
export * from './openApi';
|
|
12
9
|
export * from './parameter';
|
|
10
|
+
export * from './schedule';
|
|
11
|
+
export * from './scopedKeyValueStore';
|
|
12
|
+
export * from './scopedStorageDrive';
|
|
13
13
|
export * from './secret';
|
|
14
14
|
export * from './signingKey';
|
|
15
|
-
export * from './
|
|
16
|
-
export * from './smokeTestRegistry';
|
|
15
|
+
export * from './smokeSuites';
|
|
17
16
|
export * from './storageDrive';
|
|
18
17
|
export * from './storageDriveEvent';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SmokeSuite } from '../../harness/types/SmokeSuite';
|
|
2
|
+
import { askRunCrossServiceKeyValueStoreTest } from './logic/askRunCrossServiceKeyValueStoreTest';
|
|
3
|
+
import { askRunKeyValueStoreTest } from './logic/askRunKeyValueStoreTest';
|
|
4
|
+
|
|
5
|
+
/** Every DynamoDB action on the probe store, from this service and from testa. No config: the store belongs to the harness. */
|
|
6
|
+
export const keyValueStoreSmokeSuite: SmokeSuite = {
|
|
7
|
+
tests: [
|
|
8
|
+
{ name: 'keyValueStore', askRun: askRunKeyValueStoreTest },
|
|
9
|
+
{
|
|
10
|
+
name: 'crossServiceKeyValueStore',
|
|
11
|
+
askRun: askRunCrossServiceKeyValueStoreTest,
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
};
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
CrossServiceProbePayload,
|
|
18
18
|
} from '@qpqjs/testa-models';
|
|
19
19
|
|
|
20
|
-
import { askSmokeAssert } from '
|
|
20
|
+
import { askSmokeAssert } from '../../../harness/assert/askSmokeAssert';
|
|
21
21
|
|
|
22
22
|
// testa writes a row into the store THIS service owns, through its foreign
|
|
23
23
|
// (exact-ARN) DynamoDB grant. An error from inside testa is that grant; the
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import { SMOKE_PROBE_STORE } from '@qpqjs/constants';
|
|
15
15
|
import { SmokeProbeRecord } from '@qpqjs/test-models';
|
|
16
16
|
|
|
17
|
-
import { askSmokeAssert } from '
|
|
17
|
+
import { askSmokeAssert } from '../../../harness/assert/askSmokeAssert';
|
|
18
18
|
|
|
19
19
|
// Every DynamoDB action the owned-table grant covers (PutItem, GetItem,
|
|
20
20
|
// UpdateItem, Query, DeleteItem), including a query that must be served by
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { defineKeyValueStore, QPQConfig } from 'quidproquo';
|
|
2
|
+
|
|
3
|
+
import { SmokeProbeRecord } from '@qpqjs/test-models';
|
|
4
|
+
|
|
5
|
+
import { SMOKE_STREAM_PROBE_STORE } from '../constants/SMOKE_STREAM_PROBE_STORE';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A change on this scoped store streams to the handler, which writes a marker
|
|
9
|
+
* into the probe store for the test to poll. The record must carry the scope
|
|
10
|
+
* as its own field with a raw key, and the category index's hidden copy must
|
|
11
|
+
* not reach the handler.
|
|
12
|
+
*/
|
|
13
|
+
export const defineKeyValueStoreStreamSmoke = (): QPQConfig => [
|
|
14
|
+
defineKeyValueStore<SmokeProbeRecord>(
|
|
15
|
+
SMOKE_STREAM_PROBE_STORE,
|
|
16
|
+
'probeId',
|
|
17
|
+
[],
|
|
18
|
+
{
|
|
19
|
+
indexes: ['category'],
|
|
20
|
+
scoped: true,
|
|
21
|
+
onStream: {
|
|
22
|
+
runtime: {
|
|
23
|
+
basePath: __dirname,
|
|
24
|
+
relativePath: '../entry/kvsStream/onSmokeStreamRecord',
|
|
25
|
+
functionName: 'onSmokeStreamRecord',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
}
|
|
29
|
+
),
|
|
30
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './defineKeyValueStoreStreamSmoke';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SMOKE_STREAM_PROBE_STORE';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './kvsStream';
|
|
@@ -8,12 +8,13 @@ import {
|
|
|
8
8
|
import { SMOKE_PROBE_STORE } from '@qpqjs/constants';
|
|
9
9
|
import { SmokeProbeRecord } from '@qpqjs/test-models';
|
|
10
10
|
|
|
11
|
-
import { smokeStreamMarkerId } from '
|
|
11
|
+
import { smokeStreamMarkerId } from '../../logic/smokeStreamMarkerId';
|
|
12
12
|
|
|
13
13
|
// Fan-in for the kvs stream test: the scoped stream store's changes land
|
|
14
|
-
// here. The marker records the scope the record carried
|
|
15
|
-
// the test can check the stream hands back the
|
|
16
|
-
// the key stripped of it
|
|
14
|
+
// here. The marker records the scope the record carried, the raw key and the
|
|
15
|
+
// image's attribute names, so the test can check the stream hands back the
|
|
16
|
+
// scope as its own field, the key stripped of it, and none of the store's
|
|
17
|
+
// hidden index attributes.
|
|
17
18
|
export function* onSmokeStreamRecord(
|
|
18
19
|
record: KvsStreamRecord<SmokeProbeRecord>
|
|
19
20
|
): AskResponse<KvsStreamEventResponse> {
|
|
@@ -25,6 +26,7 @@ export function* onSmokeStreamRecord(
|
|
|
25
26
|
value: 1,
|
|
26
27
|
scope: record.scope,
|
|
27
28
|
path: key,
|
|
29
|
+
imageAttributes: Object.keys(record.newImage ?? record.oldImage ?? {}),
|
|
28
30
|
};
|
|
29
31
|
|
|
30
32
|
yield* askKeyValueStoreUpsert<SmokeProbeRecord>(SMOKE_PROBE_STORE, marker);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SmokeSuite } from '../../harness/types/SmokeSuite';
|
|
2
|
+
import { defineKeyValueStoreStreamSmoke } from './config/defineKeyValueStoreStreamSmoke';
|
|
3
|
+
import { askRunKeyValueStoreStreamTest } from './logic/askRunKeyValueStoreStreamTest';
|
|
4
|
+
|
|
5
|
+
/** A scoped store's change stream, as its handler sees it. */
|
|
6
|
+
export const keyValueStoreStreamSmokeSuite: SmokeSuite = {
|
|
7
|
+
defineConfig: defineKeyValueStoreStreamSmoke,
|
|
8
|
+
tests: [
|
|
9
|
+
{ name: 'keyValueStoreStream', askRun: askRunKeyValueStoreStreamTest },
|
|
10
|
+
],
|
|
11
|
+
};
|
|
@@ -8,15 +8,17 @@ import {
|
|
|
8
8
|
|
|
9
9
|
import { SmokeProbeRecord } from '@qpqjs/test-models';
|
|
10
10
|
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
11
|
+
import { askSmokeAssert } from '../../../harness/assert/askSmokeAssert';
|
|
12
|
+
import { askSmokePollForMarker } from '../../../harness/assert/askSmokePollForMarker';
|
|
13
|
+
import { SMOKE_STREAM_PROBE_STORE } from '../constants/SMOKE_STREAM_PROBE_STORE';
|
|
14
|
+
import { smokeStreamMarkerId } from './smokeStreamMarkerId';
|
|
15
15
|
|
|
16
16
|
// The kvs stream path end to end on a scoped store: an upsert streams an
|
|
17
17
|
// Insert and a delete streams a Remove to the handler. On dynamo the scope is
|
|
18
|
-
// composed into the stored partition key
|
|
19
|
-
//
|
|
18
|
+
// composed into the stored partition key and into a hidden copy of the
|
|
19
|
+
// category GSI key, so the record must hand the scope back as its own field
|
|
20
|
+
// with the key stripped and the hidden copy dropped, the same as the dev
|
|
21
|
+
// server does.
|
|
20
22
|
export function* askRunKeyValueStoreStreamTest(): AskResponse<void> {
|
|
21
23
|
const probeId = yield* askNewGuid();
|
|
22
24
|
const scope = `smoke-st-${probeId}`;
|
|
@@ -44,6 +46,13 @@ export function* askRunKeyValueStoreStreamTest(): AskResponse<void> {
|
|
|
44
46
|
inserted.path === probeId,
|
|
45
47
|
`stream insert key [${inserted.path}] was not the raw key`
|
|
46
48
|
);
|
|
49
|
+
yield* askSmokeAssert(
|
|
50
|
+
!!inserted.imageAttributes?.includes('category') &&
|
|
51
|
+
inserted.imageAttributes.every(
|
|
52
|
+
(attribute) => !attribute.includes('@@QPQ')
|
|
53
|
+
),
|
|
54
|
+
`stream insert image attributes [${inserted.imageAttributes}] missed category or leaked a reserved @@QPQ attribute`
|
|
55
|
+
);
|
|
47
56
|
|
|
48
57
|
yield* askKeyValueStoreDelete(SMOKE_STREAM_PROBE_STORE, probeId, undefined, {
|
|
49
58
|
scope,
|