simplelogin-client 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -24
- package/docs/development.md +14 -0
- package/docs/faq.md +17 -19
- package/package.json +11 -14
- package/tscBuild/scripts/constants.d.ts +13 -0
- package/tscBuild/scripts/constants.js +21 -0
- package/tscBuild/scripts/constants.js.map +1 -0
- package/tscBuild/scripts/index.d.ts +1 -0
- package/tscBuild/scripts/index.js +7 -0
- package/tscBuild/scripts/index.js.map +1 -0
- package/tscBuild/scripts/run.d.ts +1 -0
- package/tscBuild/scripts/run.js +64 -0
- package/tscBuild/scripts/run.js.map +1 -0
- package/tscBuild/scripts/steps/buildDocs.d.ts +1 -0
- package/tscBuild/scripts/steps/buildDocs.js +17 -0
- package/tscBuild/scripts/steps/buildDocs.js.map +1 -0
- package/tscBuild/scripts/steps/buildMockServer.d.ts +1 -0
- package/tscBuild/scripts/steps/buildMockServer.js +36 -0
- package/tscBuild/scripts/steps/buildMockServer.js.map +1 -0
- package/tscBuild/scripts/steps/buildOAS.d.ts +1 -0
- package/tscBuild/scripts/steps/buildOAS.js +20 -0
- package/tscBuild/scripts/steps/buildOAS.js.map +1 -0
- package/tscBuild/scripts/steps/buildPagesIndex.d.ts +1 -0
- package/tscBuild/scripts/steps/buildPagesIndex.js +18 -0
- package/tscBuild/scripts/steps/buildPagesIndex.js.map +1 -0
- package/tscBuild/scripts/steps/buildSdk.d.ts +1 -0
- package/tscBuild/scripts/steps/buildSdk.js +42 -0
- package/tscBuild/scripts/steps/buildSdk.js.map +1 -0
- package/tscBuild/scripts/steps/buildSrc.d.ts +1 -0
- package/tscBuild/scripts/steps/buildSrc.js +11 -0
- package/tscBuild/scripts/steps/buildSrc.js.map +1 -0
- package/tscBuild/scripts/steps/checkCodegen.d.ts +1 -0
- package/tscBuild/scripts/steps/checkCodegen.js +16 -0
- package/tscBuild/scripts/steps/checkCodegen.js.map +1 -0
- package/tscBuild/scripts/steps/clean.d.ts +2 -0
- package/tscBuild/scripts/steps/clean.js +30 -0
- package/tscBuild/scripts/steps/clean.js.map +1 -0
- package/tscBuild/scripts/steps/format.d.ts +1 -0
- package/tscBuild/scripts/steps/format.js +11 -0
- package/tscBuild/scripts/steps/format.js.map +1 -0
- package/tscBuild/scripts/steps/index.d.ts +13 -0
- package/tscBuild/scripts/steps/index.js +30 -0
- package/tscBuild/scripts/steps/index.js.map +1 -0
- package/tscBuild/scripts/steps/lint.d.ts +1 -0
- package/tscBuild/scripts/steps/lint.js +12 -0
- package/tscBuild/scripts/steps/lint.js.map +1 -0
- package/tscBuild/scripts/steps/startMockServer.d.ts +1 -0
- package/tscBuild/scripts/steps/startMockServer.js +12 -0
- package/tscBuild/scripts/steps/startMockServer.js.map +1 -0
- package/tscBuild/scripts/steps/stopMockServer.d.ts +1 -0
- package/tscBuild/scripts/steps/stopMockServer.js +12 -0
- package/tscBuild/scripts/steps/stopMockServer.js.map +1 -0
- package/tscBuild/scripts/steps/templates/pagesIndex.d.ts +1 -0
- package/tscBuild/scripts/steps/templates/pagesIndex.js +139 -0
- package/tscBuild/scripts/steps/templates/pagesIndex.js.map +1 -0
- package/tscBuild/scripts/steps/test.d.ts +1 -0
- package/tscBuild/scripts/steps/test.js +11 -0
- package/tscBuild/scripts/steps/test.js.map +1 -0
- package/tscBuild/scripts/task/build.d.ts +2 -0
- package/tscBuild/scripts/task/build.js +18 -0
- package/tscBuild/scripts/task/build.js.map +1 -0
- package/tscBuild/scripts/task/buildDocs.d.ts +2 -0
- package/tscBuild/scripts/task/buildDocs.js +15 -0
- package/tscBuild/scripts/task/buildDocs.js.map +1 -0
- package/tscBuild/scripts/task/buildMockServer.d.ts +2 -0
- package/tscBuild/scripts/task/buildMockServer.js +9 -0
- package/tscBuild/scripts/task/buildMockServer.js.map +1 -0
- package/tscBuild/scripts/task/ci.d.ts +2 -0
- package/tscBuild/scripts/task/ci.js +12 -0
- package/tscBuild/scripts/task/ci.js.map +1 -0
- package/tscBuild/scripts/task/dependencyUpdate.d.ts +2 -0
- package/tscBuild/scripts/task/dependencyUpdate.js +10 -0
- package/tscBuild/scripts/task/dependencyUpdate.js.map +1 -0
- package/tscBuild/scripts/task/index.d.ts +6 -0
- package/tscBuild/scripts/task/index.js +43 -0
- package/tscBuild/scripts/task/index.js.map +1 -0
- package/tscBuild/scripts/task/rebuild.d.ts +2 -0
- package/tscBuild/scripts/task/rebuild.js +10 -0
- package/tscBuild/scripts/task/rebuild.js.map +1 -0
- package/tscBuild/scripts/task/test.d.ts +2 -0
- package/tscBuild/scripts/task/test.js +11 -0
- package/tscBuild/scripts/task/test.js.map +1 -0
- package/tscBuild/scripts/utils.d.ts +11 -0
- package/tscBuild/scripts/utils.js +60 -0
- package/tscBuild/scripts/utils.js.map +1 -0
- package/tscBuild/{config.d.ts → src/config.d.ts} +7 -2
- package/tscBuild/{config.js → src/config.js} +3 -0
- package/tscBuild/src/config.js.map +1 -0
- package/tscBuild/{index.d.ts → src/index.d.ts} +1 -0
- package/tscBuild/{index.js → src/index.js} +1 -0
- package/tscBuild/src/index.js.map +1 -0
- package/tscBuild/{sdk → src/sdk}/apis/AccountApi.d.ts +7 -7
- package/tscBuild/{sdk → src/sdk}/apis/AccountApi.js +8 -8
- package/tscBuild/src/sdk/apis/AccountApi.js.map +1 -0
- package/tscBuild/{sdk → src/sdk}/apis/AliasApi.d.ts +28 -2
- package/tscBuild/{sdk → src/sdk}/apis/AliasApi.js +63 -1
- package/tscBuild/src/sdk/apis/AliasApi.js.map +1 -0
- package/tscBuild/src/sdk/apis/CustomDomainApi.d.ts +60 -0
- package/tscBuild/src/sdk/apis/CustomDomainApi.js +156 -0
- package/tscBuild/src/sdk/apis/CustomDomainApi.js.map +1 -0
- package/tscBuild/src/sdk/apis/ExportApi.d.ts +40 -0
- package/tscBuild/src/sdk/apis/ExportApi.js +112 -0
- package/tscBuild/src/sdk/apis/ExportApi.js.map +1 -0
- package/tscBuild/{sdk → src/sdk}/apis/MailboxApi.d.ts +1 -1
- package/tscBuild/{sdk → src/sdk}/apis/MailboxApi.js +1 -1
- package/tscBuild/src/sdk/apis/MailboxApi.js.map +1 -0
- package/tscBuild/src/sdk/apis/MiscApi.d.ts +29 -0
- package/tscBuild/{sdk/apis/CustomDomainApi.js → src/sdk/apis/MiscApi.js} +19 -22
- package/tscBuild/src/sdk/apis/MiscApi.js.map +1 -0
- package/tscBuild/src/sdk/apis/SettingsApi.d.ts +53 -0
- package/tscBuild/src/sdk/apis/SettingsApi.js +144 -0
- package/tscBuild/src/sdk/apis/SettingsApi.js.map +1 -0
- package/tscBuild/{sdk → src/sdk}/apis/index.d.ts +3 -0
- package/tscBuild/{sdk → src/sdk}/apis/index.js +3 -0
- package/tscBuild/src/sdk/apis/index.js.map +1 -0
- package/tscBuild/src/sdk/index.js.map +1 -0
- package/tscBuild/src/sdk/models/Alias.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasAliasIdActivities.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasAliasIdActivitiesModelArray.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasAliasIdContacts.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasAliasIdContactsModelArray.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasAliasIdContactsPost.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasAliasIdDelete.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasAliasIdPatch.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasAliasIdTogglePost.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasCustomNewPost.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasExport.d.ts +27 -0
- package/tscBuild/src/sdk/models/AliasExport.js +42 -0
- package/tscBuild/src/sdk/models/AliasExport.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasLatestActivity.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasLatestActivityContact.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasModelArray.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasOptions.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasOptionsRecommendation.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasOptionsSuffixesInner.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasRandomNewPost.js.map +1 -0
- package/tscBuild/src/sdk/models/AliasSearchPost.js.map +1 -0
- package/tscBuild/src/sdk/models/ApiKey.d.ts +21 -0
- package/tscBuild/src/sdk/models/ApiKey.js +38 -0
- package/tscBuild/src/sdk/models/ApiKey.js.map +1 -0
- package/tscBuild/src/sdk/models/ApiKeyPost.d.ts +21 -0
- package/tscBuild/src/sdk/models/ApiKeyPost.js +38 -0
- package/tscBuild/src/sdk/models/ApiKeyPost.js.map +1 -0
- package/tscBuild/src/sdk/models/AuthActivatePost.js.map +1 -0
- package/tscBuild/src/sdk/models/AuthForgotPasswordPost.js.map +1 -0
- package/tscBuild/src/sdk/models/AuthLogin.js.map +1 -0
- package/tscBuild/src/sdk/models/AuthLoginPost.js.map +1 -0
- package/tscBuild/src/sdk/models/AuthMfa.js.map +1 -0
- package/tscBuild/src/sdk/models/AuthMfaPost.js.map +1 -0
- package/tscBuild/src/sdk/models/AuthReactivatePost.js.map +1 -0
- package/tscBuild/src/sdk/models/AuthRegisterPost.js.map +1 -0
- package/tscBuild/src/sdk/models/ContactsContactIdDelete.d.ts +21 -0
- package/tscBuild/src/sdk/models/ContactsContactIdDelete.js +38 -0
- package/tscBuild/src/sdk/models/ContactsContactIdDelete.js.map +1 -0
- package/tscBuild/src/sdk/models/ContactsContactIdToggle.d.ts +21 -0
- package/tscBuild/src/sdk/models/ContactsContactIdToggle.js +38 -0
- package/tscBuild/src/sdk/models/ContactsContactIdToggle.js.map +1 -0
- package/tscBuild/src/sdk/models/CustomDomain.js.map +1 -0
- package/tscBuild/src/sdk/models/CustomDomainCustomDomainIdPatch.d.ts +39 -0
- package/tscBuild/src/sdk/models/CustomDomainCustomDomainIdPatch.js +42 -0
- package/tscBuild/src/sdk/models/CustomDomainCustomDomainIdPatch.js.map +1 -0
- package/tscBuild/src/sdk/models/CustomDomainCustomDomainIdTrash.d.ts +22 -0
- package/tscBuild/src/sdk/models/CustomDomainCustomDomainIdTrash.js +39 -0
- package/tscBuild/src/sdk/models/CustomDomainCustomDomainIdTrash.js.map +1 -0
- package/tscBuild/src/sdk/models/CustomDomainCustomDomainIdTrashAliasesInner.d.ts +27 -0
- package/tscBuild/src/sdk/models/CustomDomainCustomDomainIdTrashAliasesInner.js +42 -0
- package/tscBuild/src/sdk/models/CustomDomainCustomDomainIdTrashAliasesInner.js.map +1 -0
- package/tscBuild/src/sdk/models/ExportData.d.ts +36 -0
- package/tscBuild/src/sdk/models/ExportData.js +49 -0
- package/tscBuild/src/sdk/models/ExportData.js.map +1 -0
- package/tscBuild/src/sdk/models/ExportDataAppInfo.d.ts +51 -0
- package/tscBuild/src/sdk/models/ExportDataAppInfo.js +54 -0
- package/tscBuild/src/sdk/models/ExportDataAppInfo.js.map +1 -0
- package/tscBuild/src/sdk/models/Mailbox.js.map +1 -0
- package/tscBuild/src/sdk/models/MailboxMailboxIdPut.js.map +1 -0
- package/tscBuild/src/sdk/models/MailboxModelArray.js.map +1 -0
- package/tscBuild/src/sdk/models/MailboxModelRef.js.map +1 -0
- package/tscBuild/src/sdk/models/MailboxPost.js.map +1 -0
- package/tscBuild/src/sdk/models/ModelError.js.map +1 -0
- package/tscBuild/src/sdk/models/Setting.d.ts +72 -0
- package/tscBuild/src/sdk/models/Setting.js +79 -0
- package/tscBuild/src/sdk/models/Setting.js.map +1 -0
- package/tscBuild/src/sdk/models/SettingDomain.d.ts +27 -0
- package/tscBuild/src/sdk/models/SettingDomain.js +42 -0
- package/tscBuild/src/sdk/models/SettingDomain.js.map +1 -0
- package/tscBuild/src/sdk/models/SettingPatch.d.ts +72 -0
- package/tscBuild/src/sdk/models/SettingPatch.js +69 -0
- package/tscBuild/src/sdk/models/SettingPatch.js.map +1 -0
- package/tscBuild/src/sdk/models/Success.js.map +1 -0
- package/tscBuild/src/sdk/models/SudoPatch.js.map +1 -0
- package/tscBuild/src/sdk/models/UserCookieToken.js.map +1 -0
- package/tscBuild/src/sdk/models/UserInfo.js.map +1 -0
- package/tscBuild/src/sdk/models/UserInfoPatch.js.map +1 -0
- package/tscBuild/src/sdk/models/UserStats.js.map +1 -0
- package/tscBuild/{sdk → src/sdk}/models/index.d.ts +13 -2
- package/tscBuild/{sdk → src/sdk}/models/index.js +13 -2
- package/tscBuild/src/sdk/models/index.js.map +1 -0
- package/tscBuild/{sdk → src/sdk}/runtime.d.ts +1 -1
- package/tscBuild/{sdk → src/sdk}/runtime.js +1 -1
- package/tscBuild/src/sdk/runtime.js.map +1 -0
- package/tscBuild/src/simpleLoginClient.d.ts +26 -0
- package/tscBuild/src/simpleLoginClient.js +48 -0
- package/tscBuild/src/simpleLoginClient.js.map +1 -0
- package/tscBuild/test/integration/accountApi.test.d.ts +1 -0
- package/tscBuild/test/integration/accountApi.test.js +383 -0
- package/tscBuild/test/integration/accountApi.test.js.map +1 -0
- package/tscBuild/test/integration/exportApi.test.d.ts +1 -0
- package/tscBuild/test/integration/exportApi.test.js +55 -0
- package/tscBuild/test/integration/exportApi.test.js.map +1 -0
- package/tscBuild/test/integration/miscApi.test.d.ts +1 -0
- package/tscBuild/test/integration/miscApi.test.js +15 -0
- package/tscBuild/test/integration/miscApi.test.js.map +1 -0
- package/tscBuild/test/setup.d.ts +21 -0
- package/tscBuild/test/setup.js +111 -0
- package/tscBuild/test/setup.js.map +1 -0
- package/tscBuild/test/utils/apiClient.d.ts +11 -0
- package/tscBuild/test/utils/apiClient.js +25 -0
- package/tscBuild/test/utils/apiClient.js.map +1 -0
- package/tscBuild/test/utils/createAccount.d.ts +5 -0
- package/tscBuild/test/utils/createAccount.js +53 -0
- package/tscBuild/test/utils/createAccount.js.map +1 -0
- package/tscBuild/test/utils/index.d.ts +6 -0
- package/tscBuild/test/utils/index.js +26 -0
- package/tscBuild/test/utils/index.js.map +1 -0
- package/tscBuild/test/utils/mailHog.d.ts +4 -0
- package/tscBuild/test/utils/mailHog.js +37 -0
- package/tscBuild/test/utils/mailHog.js.map +1 -0
- package/tscBuild/test/utils/matchers.d.ts +101 -0
- package/tscBuild/test/utils/matchers.js +129 -0
- package/tscBuild/test/utils/matchers.js.map +1 -0
- package/tscBuild/tsconfig.tsbuildinfo +1 -0
- package/tscBuild/config.js.map +0 -1
- package/tscBuild/index.js.map +0 -1
- package/tscBuild/sdk/apis/AccountApi.js.map +0 -1
- package/tscBuild/sdk/apis/AliasApi.js.map +0 -1
- package/tscBuild/sdk/apis/CustomDomainApi.d.ts +0 -33
- package/tscBuild/sdk/apis/CustomDomainApi.js.map +0 -1
- package/tscBuild/sdk/apis/MailboxApi.js.map +0 -1
- package/tscBuild/sdk/apis/index.js.map +0 -1
- package/tscBuild/sdk/index.js.map +0 -1
- package/tscBuild/sdk/models/Alias.js.map +0 -1
- package/tscBuild/sdk/models/AliasAliasIdActivities.js.map +0 -1
- package/tscBuild/sdk/models/AliasAliasIdActivitiesModelArray.js.map +0 -1
- package/tscBuild/sdk/models/AliasAliasIdContacts.js.map +0 -1
- package/tscBuild/sdk/models/AliasAliasIdContactsModelArray.js.map +0 -1
- package/tscBuild/sdk/models/AliasAliasIdContactsPost.js.map +0 -1
- package/tscBuild/sdk/models/AliasAliasIdDelete.js.map +0 -1
- package/tscBuild/sdk/models/AliasAliasIdPatch.js.map +0 -1
- package/tscBuild/sdk/models/AliasAliasIdTogglePost.js.map +0 -1
- package/tscBuild/sdk/models/AliasCustomNewPost.js.map +0 -1
- package/tscBuild/sdk/models/AliasLatestActivity.js.map +0 -1
- package/tscBuild/sdk/models/AliasLatestActivityContact.js.map +0 -1
- package/tscBuild/sdk/models/AliasModelArray.js.map +0 -1
- package/tscBuild/sdk/models/AliasOptions.js.map +0 -1
- package/tscBuild/sdk/models/AliasOptionsRecommendation.js.map +0 -1
- package/tscBuild/sdk/models/AliasOptionsSuffixesInner.js.map +0 -1
- package/tscBuild/sdk/models/AliasRandomNewPost.js.map +0 -1
- package/tscBuild/sdk/models/AliasSearchPost.js.map +0 -1
- package/tscBuild/sdk/models/AuthActivatePost.js.map +0 -1
- package/tscBuild/sdk/models/AuthForgotPasswordPost.js.map +0 -1
- package/tscBuild/sdk/models/AuthLogin.js.map +0 -1
- package/tscBuild/sdk/models/AuthLoginPost.js.map +0 -1
- package/tscBuild/sdk/models/AuthMfa.js.map +0 -1
- package/tscBuild/sdk/models/AuthMfaPost.js.map +0 -1
- package/tscBuild/sdk/models/AuthReactivatePost.js.map +0 -1
- package/tscBuild/sdk/models/AuthRegisterPost.js.map +0 -1
- package/tscBuild/sdk/models/CustomDomain.js.map +0 -1
- package/tscBuild/sdk/models/Mailbox.js.map +0 -1
- package/tscBuild/sdk/models/MailboxMailboxIdPut.js.map +0 -1
- package/tscBuild/sdk/models/MailboxModelArray.js.map +0 -1
- package/tscBuild/sdk/models/MailboxModelRef.js.map +0 -1
- package/tscBuild/sdk/models/MailboxPost.js.map +0 -1
- package/tscBuild/sdk/models/ModelError.js.map +0 -1
- package/tscBuild/sdk/models/Success.js.map +0 -1
- package/tscBuild/sdk/models/SudoPatch.js.map +0 -1
- package/tscBuild/sdk/models/UserApiKey.d.ts +0 -21
- package/tscBuild/sdk/models/UserApiKey.js +0 -38
- package/tscBuild/sdk/models/UserApiKey.js.map +0 -1
- package/tscBuild/sdk/models/UserApiKeyPost.d.ts +0 -21
- package/tscBuild/sdk/models/UserApiKeyPost.js +0 -38
- package/tscBuild/sdk/models/UserApiKeyPost.js.map +0 -1
- package/tscBuild/sdk/models/UserCookieToken.js.map +0 -1
- package/tscBuild/sdk/models/UserInfo.js.map +0 -1
- package/tscBuild/sdk/models/UserInfoPatch.js.map +0 -1
- package/tscBuild/sdk/models/UserStats.js.map +0 -1
- package/tscBuild/sdk/models/index.js.map +0 -1
- package/tscBuild/sdk/runtime.js.map +0 -1
- package/tscBuild/tsconfig.build.tsbuildinfo +0 -1
- /package/tscBuild/{sdk → src/sdk}/index.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/index.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/Alias.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/Alias.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdActivities.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdActivities.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdActivitiesModelArray.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdActivitiesModelArray.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdContacts.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdContacts.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdContactsModelArray.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdContactsModelArray.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdContactsPost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdContactsPost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdDelete.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdDelete.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdPatch.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdPatch.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdTogglePost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasAliasIdTogglePost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasCustomNewPost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasCustomNewPost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasLatestActivity.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasLatestActivity.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasLatestActivityContact.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasLatestActivityContact.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasModelArray.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasModelArray.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasOptions.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasOptions.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasOptionsRecommendation.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasOptionsRecommendation.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasOptionsSuffixesInner.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasOptionsSuffixesInner.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasRandomNewPost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasRandomNewPost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasSearchPost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AliasSearchPost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthActivatePost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthActivatePost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthForgotPasswordPost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthForgotPasswordPost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthLogin.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthLogin.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthLoginPost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthLoginPost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthMfa.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthMfa.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthMfaPost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthMfaPost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthReactivatePost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthReactivatePost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthRegisterPost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/AuthRegisterPost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/CustomDomain.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/CustomDomain.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/Mailbox.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/Mailbox.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/MailboxMailboxIdPut.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/MailboxMailboxIdPut.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/MailboxModelArray.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/MailboxModelArray.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/MailboxModelRef.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/MailboxModelRef.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/MailboxPost.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/MailboxPost.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/ModelError.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/ModelError.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/Success.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/Success.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/SudoPatch.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/SudoPatch.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/UserCookieToken.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/UserCookieToken.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/UserInfo.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/UserInfo.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/UserInfoPatch.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/UserInfoPatch.js +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/UserStats.d.ts +0 -0
- /package/tscBuild/{sdk → src/sdk}/models/UserStats.js +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const matchers_1 = require("../utils/matchers");
|
|
5
|
+
(0, vitest_1.describe)('ExportApi', () => {
|
|
6
|
+
(0, vitest_1.describe)('Export User Data', () => {
|
|
7
|
+
api('exports complete user data structure', async ({ client }) => {
|
|
8
|
+
const response = await client.export.exportUserDataRaw();
|
|
9
|
+
const exportData = await (0, matchers_1.expectSuccess)(response);
|
|
10
|
+
(0, vitest_1.expect)(exportData.aliases).toBeDefined();
|
|
11
|
+
(0, vitest_1.expect)(Array.isArray(exportData.aliases)).toBe(true);
|
|
12
|
+
(0, vitest_1.expect)(exportData.customDomains).toBeDefined();
|
|
13
|
+
(0, vitest_1.expect)(Array.isArray(exportData.customDomains)).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
api('aliases match AliasExport schema', async ({ client }) => {
|
|
16
|
+
const createdAlias = await client.alias.createRandomAlias({
|
|
17
|
+
aliasRandomNewPost: { note: 'Schema test' },
|
|
18
|
+
});
|
|
19
|
+
const exportData = await client.export.exportUserData();
|
|
20
|
+
(0, vitest_1.expect)(exportData.aliases.length).toBeGreaterThan(0);
|
|
21
|
+
for (const alias of exportData.aliases) {
|
|
22
|
+
(0, vitest_1.expect)(alias.email).toBeDefined();
|
|
23
|
+
(0, vitest_1.expect)(typeof alias.email).toBe('string');
|
|
24
|
+
(0, vitest_1.expect)(alias.enabled).toBeDefined();
|
|
25
|
+
(0, vitest_1.expect)(typeof alias.enabled).toBe('boolean');
|
|
26
|
+
}
|
|
27
|
+
const aliasEmails = exportData.aliases.map((a) => a.email);
|
|
28
|
+
(0, vitest_1.expect)(aliasEmails).toContain(createdAlias.email);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
(0, vitest_1.describe)('Export Aliases as CSV', () => {
|
|
32
|
+
api('exports valid CSV with alias data', async ({ client }) => {
|
|
33
|
+
const alias1 = await client.alias.createRandomAlias({
|
|
34
|
+
aliasRandomNewPost: { note: 'CSV test 1' },
|
|
35
|
+
});
|
|
36
|
+
const alias2 = await client.alias.createRandomAlias({
|
|
37
|
+
aliasRandomNewPost: { note: 'CSV test 2' },
|
|
38
|
+
});
|
|
39
|
+
const response = await client.export.exportAliasesAsCsvRaw();
|
|
40
|
+
const csvBlob = await (0, matchers_1.expectSuccess)(response);
|
|
41
|
+
(0, vitest_1.expect)(csvBlob).toBeInstanceOf(Blob);
|
|
42
|
+
(0, vitest_1.expect)(csvBlob.size).toBeGreaterThan(0);
|
|
43
|
+
(0, vitest_1.expect)(csvBlob.type).toBeTruthy();
|
|
44
|
+
const csvText = await csvBlob.text();
|
|
45
|
+
const lines = csvText.trim().split('\n');
|
|
46
|
+
(0, vitest_1.expect)(lines[0]).toMatchInlineSnapshot(`
|
|
47
|
+
"alias,note,enabled,mailboxes
|
|
48
|
+
"
|
|
49
|
+
`);
|
|
50
|
+
(0, vitest_1.expect)(csvText).toContain(alias1.email);
|
|
51
|
+
(0, vitest_1.expect)(csvText).toContain(alias2.email);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=exportApi.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exportApi.test.js","sourceRoot":"","sources":["../../../test/integration/exportApi.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const src_1 = require("../../src");
|
|
5
|
+
const setup_1 = require("../setup");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
(0, vitest_1.describe)('MiscApi', () => {
|
|
8
|
+
(0, vitest_1.test)('server is online', async () => {
|
|
9
|
+
const client = new src_1.SimpleLoginClient(setup_1.DEFAULT_API_CLIENT_CONFIG);
|
|
10
|
+
const response = await client.misc.healthRaw();
|
|
11
|
+
const healthStatus = await (0, utils_1.expectSuccess)(response);
|
|
12
|
+
(0, vitest_1.expect)(healthStatus).toBe('success');
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=miscApi.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miscApi.test.js","sourceRoot":"","sources":["../../../test/integration/miscApi.test.ts"],"names":[],"mappings":";;AAAA,mCAAgD;AAChD,mCAA8C;AAC9C,oCAAqD;AACrD,oCAAyC;AAEzC,IAAA,iBAAQ,EAAC,SAAS,EAAE,GAAG,EAAE;IACvB,IAAA,aAAI,EAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,MAAM,GAAG,IAAI,uBAAiB,CAAC,iCAAyB,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,MAAM,IAAA,qBAAa,EAAC,QAAQ,CAAC,CAAC;QAEnD,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { UserInfo } from '../src/sdk/models/UserInfo';
|
|
2
|
+
import { SimpleLoginClient, type SimpleLoginClientOptions } from '../src/simpleLoginClient';
|
|
3
|
+
export declare const DEFAULT_API_CLIENT_CONFIG: SimpleLoginClientOptions;
|
|
4
|
+
type AccountData = {
|
|
5
|
+
loginResponse: {
|
|
6
|
+
apiKey: string;
|
|
7
|
+
};
|
|
8
|
+
password: string;
|
|
9
|
+
email: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Test helper that creates a fresh account for each test and cleans up afterwards
|
|
13
|
+
*/
|
|
14
|
+
export declare const api: import("vitest").TestAPI<{
|
|
15
|
+
password: string;
|
|
16
|
+
client: SimpleLoginClient;
|
|
17
|
+
user: UserInfo;
|
|
18
|
+
email: string;
|
|
19
|
+
accountData: AccountData;
|
|
20
|
+
}>;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.api = exports.DEFAULT_API_CLIENT_CONFIG = void 0;
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const simpleLoginClient_1 = require("../src/simpleLoginClient");
|
|
6
|
+
const apiClient_1 = require("./utils/apiClient");
|
|
7
|
+
exports.DEFAULT_API_CLIENT_CONFIG = {
|
|
8
|
+
url: 'http://localhost:7777',
|
|
9
|
+
};
|
|
10
|
+
const client = new simpleLoginClient_1.SimpleLoginClient(exports.DEFAULT_API_CLIENT_CONFIG);
|
|
11
|
+
const checkServerAvailability = async () => {
|
|
12
|
+
const maxRetryDuration = 30000;
|
|
13
|
+
const retryInterval = 1000;
|
|
14
|
+
const startTime = Date.now();
|
|
15
|
+
while (Date.now() - startTime < maxRetryDuration) {
|
|
16
|
+
try {
|
|
17
|
+
const controller = new AbortController();
|
|
18
|
+
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
19
|
+
const response = await client.misc.healthRaw({
|
|
20
|
+
signal: controller.signal,
|
|
21
|
+
});
|
|
22
|
+
clearTimeout(timeoutId);
|
|
23
|
+
if (!response.raw.ok) {
|
|
24
|
+
throw new Error(`Health check failed with status ${response.raw.status}`);
|
|
25
|
+
}
|
|
26
|
+
const healthStatus = await response.value();
|
|
27
|
+
if (healthStatus !== 'success') {
|
|
28
|
+
throw new Error(`Health check returned unexpected status: ${healthStatus}`);
|
|
29
|
+
}
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const elapsed = Date.now() - startTime;
|
|
34
|
+
if (elapsed >= maxRetryDuration) {
|
|
35
|
+
if (error instanceof Error) {
|
|
36
|
+
if (error.name === 'AbortError') {
|
|
37
|
+
throw new Error(`API server at ${client.config.basePath} is not responding (timeout after 30s). ` +
|
|
38
|
+
'Please ensure the SimpleLogin server is running.');
|
|
39
|
+
}
|
|
40
|
+
throw new Error(`API server at ${client.config.basePath} is not available: ${error.message}. ` +
|
|
41
|
+
'Please ensure the SimpleLogin server is running.');
|
|
42
|
+
}
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
await new Promise((resolve) => setTimeout(resolve, retryInterval));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
(0, vitest_1.beforeAll)(async () => {
|
|
50
|
+
await checkServerAvailability();
|
|
51
|
+
});
|
|
52
|
+
/**
|
|
53
|
+
* Test helper that creates a fresh account for each test and cleans up afterwards
|
|
54
|
+
*/
|
|
55
|
+
exports.api = vitest_1.test.extend({
|
|
56
|
+
// Worker fixture: creates account once per test
|
|
57
|
+
accountData: [
|
|
58
|
+
// biome-ignore lint/correctness/noEmptyPattern: vitest fixture pattern
|
|
59
|
+
async ({}, use) => {
|
|
60
|
+
// Setup: Create account and get API key
|
|
61
|
+
const { account } = await (0, apiClient_1.getAuthenticatedClient)();
|
|
62
|
+
if (!account) {
|
|
63
|
+
throw new Error('Failed to create test account');
|
|
64
|
+
}
|
|
65
|
+
const { loginResponse, password, email } = account;
|
|
66
|
+
const accountData = { loginResponse, password, email };
|
|
67
|
+
// Provide account data to test fixtures
|
|
68
|
+
await use(accountData);
|
|
69
|
+
// Teardown: Delete the account
|
|
70
|
+
try {
|
|
71
|
+
const client = new simpleLoginClient_1.SimpleLoginClient({
|
|
72
|
+
...exports.DEFAULT_API_CLIENT_CONFIG,
|
|
73
|
+
apiKey: loginResponse.apiKey,
|
|
74
|
+
});
|
|
75
|
+
// Enable sudo mode first (required for account deletion)
|
|
76
|
+
await client.account.enableSudoMode({
|
|
77
|
+
sudoPatch: {
|
|
78
|
+
password,
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
await client.account.deleteUser();
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error(`Failed to delete test account ${email}:`, error);
|
|
85
|
+
// Don't throw - we don't want cleanup failures to fail the test
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{ scope: 'test' },
|
|
89
|
+
],
|
|
90
|
+
password: async ({ accountData }, use) => {
|
|
91
|
+
await use(accountData.password);
|
|
92
|
+
},
|
|
93
|
+
email: async ({ accountData }, use) => {
|
|
94
|
+
await use(accountData.email);
|
|
95
|
+
},
|
|
96
|
+
client: async ({ accountData }, use) => {
|
|
97
|
+
const client = new simpleLoginClient_1.SimpleLoginClient({
|
|
98
|
+
...exports.DEFAULT_API_CLIENT_CONFIG,
|
|
99
|
+
apiKey: accountData.loginResponse.apiKey,
|
|
100
|
+
});
|
|
101
|
+
await use(client);
|
|
102
|
+
},
|
|
103
|
+
user: async ({ client }, use) => {
|
|
104
|
+
// Fetch current user info
|
|
105
|
+
const userInfo = await client.account.getUserInfo();
|
|
106
|
+
await use(userInfo);
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
// biome-ignore lint/suspicious/noExplicitAny: Required for global test fixture
|
|
110
|
+
globalThis.api = exports.api;
|
|
111
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../test/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type AuthLogin, SimpleLoginClient } from '../../src';
|
|
2
|
+
type AccountCache = {
|
|
3
|
+
loginResponse: AuthLogin;
|
|
4
|
+
email: string;
|
|
5
|
+
password: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const getAuthenticatedClient: () => Promise<{
|
|
8
|
+
client: SimpleLoginClient;
|
|
9
|
+
account: AccountCache;
|
|
10
|
+
}>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAuthenticatedClient = void 0;
|
|
4
|
+
const src_1 = require("../../src");
|
|
5
|
+
const setup_1 = require("../setup");
|
|
6
|
+
const createAccount_1 = require("./createAccount");
|
|
7
|
+
let account;
|
|
8
|
+
let client;
|
|
9
|
+
const getAuthenticatedClient = async () => {
|
|
10
|
+
if (client && account) {
|
|
11
|
+
return { client, account };
|
|
12
|
+
}
|
|
13
|
+
const newAccount = await (0, createAccount_1.createAccount)();
|
|
14
|
+
if (!newAccount) {
|
|
15
|
+
throw new Error('Failed to create test account');
|
|
16
|
+
}
|
|
17
|
+
account = newAccount;
|
|
18
|
+
client = new src_1.SimpleLoginClient({
|
|
19
|
+
...setup_1.DEFAULT_API_CLIENT_CONFIG,
|
|
20
|
+
apiKey: account.loginResponse.apiKey,
|
|
21
|
+
});
|
|
22
|
+
return { client, account };
|
|
23
|
+
};
|
|
24
|
+
exports.getAuthenticatedClient = getAuthenticatedClient;
|
|
25
|
+
//# sourceMappingURL=apiClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../../test/utils/apiClient.ts"],"names":[],"mappings":";;;AAAA,mCAA8D;AAC9D,oCAAqD;AACrD,mDAAgD;AAQhD,IAAI,OAAiC,CAAC;AACtC,IAAI,MAAqC,CAAC;AAEnC,MAAM,sBAAsB,GAAG,KAAK,IAAI,EAAE;IAC/C,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAa,GAAE,CAAC;IAEzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,GAAG,UAAU,CAAC;IACrB,MAAM,GAAG,IAAI,uBAAiB,CAAC;QAC7B,GAAG,iCAAyB;QAC5B,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM;KACrC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC,CAAC;AAlBW,QAAA,sBAAsB,0BAkBjC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAccount = void 0;
|
|
4
|
+
const falso_1 = require("@ngneat/falso");
|
|
5
|
+
const src_1 = require("../../src");
|
|
6
|
+
const mailHog_1 = require("./mailHog");
|
|
7
|
+
const createAccount = async () => {
|
|
8
|
+
const device = 'automated-api-tests';
|
|
9
|
+
const email = (0, falso_1.randEmail)({
|
|
10
|
+
nameSeparator: '.',
|
|
11
|
+
provider: 'home',
|
|
12
|
+
suffix: 'name',
|
|
13
|
+
});
|
|
14
|
+
const password = (0, falso_1.randPassword)({ size: 8 });
|
|
15
|
+
const api = new src_1.AccountApi(new src_1.Configuration({
|
|
16
|
+
basePath: 'http://localhost:7777/api',
|
|
17
|
+
}));
|
|
18
|
+
try {
|
|
19
|
+
await api.registerAccount({
|
|
20
|
+
authRegisterPost: {
|
|
21
|
+
email,
|
|
22
|
+
password,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
const code = await (0, mailHog_1.waitForSimpleLoginRegistrationCode)(email);
|
|
26
|
+
await api.activateAccount({
|
|
27
|
+
authActivatePost: {
|
|
28
|
+
email,
|
|
29
|
+
code,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
// Login to get API key for authentication
|
|
33
|
+
const loginResponse = await api.login({
|
|
34
|
+
authLoginPost: {
|
|
35
|
+
email,
|
|
36
|
+
password,
|
|
37
|
+
device,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
return { loginResponse, password, email };
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
if (e instanceof src_1.ResponseError) {
|
|
44
|
+
console.log(`Failed to create account ${email}`, e.response, await e.response.text());
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
throw e;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
throw new Error('Failed to register account');
|
|
51
|
+
};
|
|
52
|
+
exports.createAccount = createAccount;
|
|
53
|
+
//# sourceMappingURL=createAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAccount.js","sourceRoot":"","sources":["../../../test/utils/createAccount.ts"],"names":[],"mappings":";;;AAAA,yCAAwD;AACxD,mCAAqE;AACrE,uCAA+D;AAExD,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;IACtC,MAAM,MAAM,GAAG,qBAAqB,CAAC;IACrC,MAAM,KAAK,GAAG,IAAA,iBAAS,EAAC;QACtB,aAAa,EAAE,GAAG;QAClB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAE3C,MAAM,GAAG,GAAG,IAAI,gBAAU,CACxB,IAAI,mBAAa,CAAC;QAChB,QAAQ,EAAE,2BAA2B;KACtC,CAAC,CACH,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,eAAe,CAAC;YACxB,gBAAgB,EAAE;gBAChB,KAAK;gBACL,QAAQ;aACT;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,IAAA,4CAAkC,EAAC,KAAK,CAAC,CAAC;QAE7D,MAAM,GAAG,CAAC,eAAe,CAAC;YACxB,gBAAgB,EAAE;gBAChB,KAAK;gBACL,IAAI;aACL;SACF,CAAC,CAAC;QAEH,0CAA0C;QAC1C,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC;YACpC,aAAa,EAAE;gBACb,KAAK;gBACL,QAAQ;gBACR,MAAM;aACP;SACF,CAAC,CAAC;QACH,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,mBAAa,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAChD,CAAC,CAAC;AAjDW,QAAA,aAAa,iBAiDxB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Test utilities for SimpleLogin client SDK
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
// Account creation utilities
|
|
21
|
+
__exportStar(require("./createAccount"), exports);
|
|
22
|
+
// MailHog utilities
|
|
23
|
+
__exportStar(require("./mailHog"), exports);
|
|
24
|
+
// Generic matchers for HTTP responses
|
|
25
|
+
__exportStar(require("./matchers"), exports);
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../test/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,6BAA6B;AAC7B,kDAAgC;AAChC,oBAAoB;AACpB,4CAA0B;AAC1B,sCAAsC;AACtC,6CAA2B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.waitForSimpleLoginRegistrationCode = void 0;
|
|
4
|
+
const MAILHOG_API = 'http://localhost:8025/api/v2/messages';
|
|
5
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
6
|
+
const extractSimpleLoginCode = (body) => {
|
|
7
|
+
const anchored = body.match(/entering the following code into the application:\s*\n\s*(\d{4,10})/i);
|
|
8
|
+
if (anchored?.[1])
|
|
9
|
+
return anchored[1];
|
|
10
|
+
const fallback = body.match(/^\s*(\d{4,10})\s*$/m);
|
|
11
|
+
return fallback?.[1] ?? null;
|
|
12
|
+
};
|
|
13
|
+
const getLatestMailBodyByTo = async (toAddress) => {
|
|
14
|
+
const res = await fetch(MAILHOG_API);
|
|
15
|
+
if (!res.ok)
|
|
16
|
+
throw new Error(res.statusText);
|
|
17
|
+
const data = (await res.json());
|
|
18
|
+
const match = data.items
|
|
19
|
+
.filter((m) => m.To.some((t) => `${t.Mailbox}@${t.Domain}` === toAddress))
|
|
20
|
+
.sort((a, b) => new Date(b.Created).getTime() - new Date(a.Created).getTime())[0];
|
|
21
|
+
return match?.Content.Body ?? null;
|
|
22
|
+
};
|
|
23
|
+
const waitForSimpleLoginRegistrationCode = async (email, { timeoutMs = 30_000, pollIntervalMs = 1_000, } = {}) => {
|
|
24
|
+
const deadline = Date.now() + timeoutMs;
|
|
25
|
+
while (Date.now() < deadline) {
|
|
26
|
+
const body = await getLatestMailBodyByTo(email);
|
|
27
|
+
if (body) {
|
|
28
|
+
const code = extractSimpleLoginCode(body);
|
|
29
|
+
if (code)
|
|
30
|
+
return code;
|
|
31
|
+
}
|
|
32
|
+
await sleep(pollIntervalMs);
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`Timed out after ${timeoutMs}ms waiting for SimpleLogin code for ${email}`);
|
|
35
|
+
};
|
|
36
|
+
exports.waitForSimpleLoginRegistrationCode = waitForSimpleLoginRegistrationCode;
|
|
37
|
+
//# sourceMappingURL=mailHog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailHog.js","sourceRoot":"","sources":["../../../test/utils/mailHog.ts"],"names":[],"mappings":";;;AAUA,MAAM,WAAW,GAAG,uCAAuC,CAAC;AAE5D,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEhF,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAiB,EAAE;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,sEAAsE,CACvE,CAAC;IACF,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACnD,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,KAAK,EAAE,SAAiB,EAA0B,EAAE;IAChF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoB,CAAC;IAEnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;SACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,SAAS,CAAC,CAAC;SACzE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpF,OAAO,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;AACrC,CAAC,CAAC;AAEK,MAAM,kCAAkC,GAAG,KAAK,EACrD,KAAa,EACb,EACE,SAAS,GAAG,MAAM,EAClB,cAAc,GAAG,KAAK,MAIpB,EAAE,EACW,EAAE;IACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAExC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QACD,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,SAAS,uCAAuC,KAAK,EAAE,CAAC,CAAC;AAC9F,CAAC,CAAC;AAtBW,QAAA,kCAAkC,sCAsB7C"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom matcher to verify a response has a successful status code (200-299).
|
|
3
|
+
* Returns the unwrapped value from the response.
|
|
4
|
+
*
|
|
5
|
+
* **Important:** Use this with the `*Raw()` methods from the SDK that return the full ApiResponse.
|
|
6
|
+
* For example, use `createApiKeyRaw()` instead of `createApiKey()`.
|
|
7
|
+
*
|
|
8
|
+
* @param response - The ApiResponse object from a `*Raw()` method call
|
|
9
|
+
* @returns The unwrapped response value
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* // Basic usage
|
|
13
|
+
* const response = await client.account.createApiKeyRaw({
|
|
14
|
+
* apiKeyPost: { device: 'test-device' }
|
|
15
|
+
* });
|
|
16
|
+
* const apiKey = await expectSuccess(response);
|
|
17
|
+
* expect(apiKey.apiKey).toBeDefined();
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* // Checking specific status codes
|
|
21
|
+
* const response = await client.account.createApiKeyRaw({
|
|
22
|
+
* apiKeyPost: { device: 'test-device' }
|
|
23
|
+
* });
|
|
24
|
+
* expect(response.raw.status).toBe(201); // Check specific status if needed
|
|
25
|
+
* const apiKey = await expectSuccess(response);
|
|
26
|
+
*/
|
|
27
|
+
export declare function expectSuccess<T>(response: {
|
|
28
|
+
raw: Response;
|
|
29
|
+
value(): Promise<T>;
|
|
30
|
+
}): Promise<T>;
|
|
31
|
+
/**
|
|
32
|
+
* Custom matcher to verify an error is a ResponseError with the expected status code.
|
|
33
|
+
* Throws if the error is not a ResponseError or has a different status code.
|
|
34
|
+
*
|
|
35
|
+
* Works with both `*Raw()` and regular SDK methods since both throw ResponseError on failure.
|
|
36
|
+
*
|
|
37
|
+
* @param error - The caught error from a failed API call
|
|
38
|
+
* @param statusCode - The expected HTTP status code (e.g., 400, 401, 403, 404, 500)
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* // Testing authentication failure (401)
|
|
42
|
+
* try {
|
|
43
|
+
* const client = new SimpleLoginClient(new Configuration({
|
|
44
|
+
* basePath: 'http://localhost:7777/api',
|
|
45
|
+
* apiKey: 'invalid-key'
|
|
46
|
+
* }));
|
|
47
|
+
* await client.account.getUserInfo();
|
|
48
|
+
* throw new Error('Should have thrown');
|
|
49
|
+
* } catch (error) {
|
|
50
|
+
* expectError(error, 401);
|
|
51
|
+
* }
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* // Testing bad request (400)
|
|
55
|
+
* try {
|
|
56
|
+
* await client.account.login({
|
|
57
|
+
* authLoginPost: { email: 'invalid', password: 'invalid' }
|
|
58
|
+
* });
|
|
59
|
+
* throw new Error('Should have thrown');
|
|
60
|
+
* } catch (error) {
|
|
61
|
+
* expectError(error, 400);
|
|
62
|
+
* }
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* // Testing not found (404)
|
|
66
|
+
* try {
|
|
67
|
+
* await client.alias.getAlias({ aliasId: 99999 });
|
|
68
|
+
* throw new Error('Should have thrown');
|
|
69
|
+
* } catch (error) {
|
|
70
|
+
* expectError(error, 404);
|
|
71
|
+
* }
|
|
72
|
+
*/
|
|
73
|
+
export declare function expectError(error: unknown, statusCode: number): void;
|
|
74
|
+
/**
|
|
75
|
+
* Custom matcher to verify an error is a ResponseError with a status code in the client error range (400-499).
|
|
76
|
+
*
|
|
77
|
+
* @param error - The caught error from a failed API call
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* try {
|
|
81
|
+
* await client.alias.getAlias({ aliasId: 99999 });
|
|
82
|
+
* throw new Error('Should have thrown');
|
|
83
|
+
* } catch (error) {
|
|
84
|
+
* expectClientError(error);
|
|
85
|
+
* }
|
|
86
|
+
*/
|
|
87
|
+
export declare function expectClientError(error: unknown): void;
|
|
88
|
+
/**
|
|
89
|
+
* Custom matcher to verify an error is a ResponseError with a status code in the server error range (500-599).
|
|
90
|
+
*
|
|
91
|
+
* @param error - The caught error from a failed API call
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* try {
|
|
95
|
+
* await client.account.getSomeEndpoint();
|
|
96
|
+
* throw new Error('Should have thrown');
|
|
97
|
+
* } catch (error) {
|
|
98
|
+
* expectServerError(error);
|
|
99
|
+
* }
|
|
100
|
+
*/
|
|
101
|
+
export declare function expectServerError(error: unknown): void;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expectSuccess = expectSuccess;
|
|
4
|
+
exports.expectError = expectError;
|
|
5
|
+
exports.expectClientError = expectClientError;
|
|
6
|
+
exports.expectServerError = expectServerError;
|
|
7
|
+
const vitest_1 = require("vitest");
|
|
8
|
+
const runtime_1 = require("../../src/sdk/runtime");
|
|
9
|
+
/**
|
|
10
|
+
* Custom matcher to verify a response has a successful status code (200-299).
|
|
11
|
+
* Returns the unwrapped value from the response.
|
|
12
|
+
*
|
|
13
|
+
* **Important:** Use this with the `*Raw()` methods from the SDK that return the full ApiResponse.
|
|
14
|
+
* For example, use `createApiKeyRaw()` instead of `createApiKey()`.
|
|
15
|
+
*
|
|
16
|
+
* @param response - The ApiResponse object from a `*Raw()` method call
|
|
17
|
+
* @returns The unwrapped response value
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* // Basic usage
|
|
21
|
+
* const response = await client.account.createApiKeyRaw({
|
|
22
|
+
* apiKeyPost: { device: 'test-device' }
|
|
23
|
+
* });
|
|
24
|
+
* const apiKey = await expectSuccess(response);
|
|
25
|
+
* expect(apiKey.apiKey).toBeDefined();
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // Checking specific status codes
|
|
29
|
+
* const response = await client.account.createApiKeyRaw({
|
|
30
|
+
* apiKeyPost: { device: 'test-device' }
|
|
31
|
+
* });
|
|
32
|
+
* expect(response.raw.status).toBe(201); // Check specific status if needed
|
|
33
|
+
* const apiKey = await expectSuccess(response);
|
|
34
|
+
*/
|
|
35
|
+
async function expectSuccess(response) {
|
|
36
|
+
(0, vitest_1.expect)(response.raw.status).toBeGreaterThanOrEqual(200);
|
|
37
|
+
(0, vitest_1.expect)(response.raw.status).toBeLessThan(300);
|
|
38
|
+
const value = await response.value();
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Custom matcher to verify an error is a ResponseError with the expected status code.
|
|
43
|
+
* Throws if the error is not a ResponseError or has a different status code.
|
|
44
|
+
*
|
|
45
|
+
* Works with both `*Raw()` and regular SDK methods since both throw ResponseError on failure.
|
|
46
|
+
*
|
|
47
|
+
* @param error - The caught error from a failed API call
|
|
48
|
+
* @param statusCode - The expected HTTP status code (e.g., 400, 401, 403, 404, 500)
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* // Testing authentication failure (401)
|
|
52
|
+
* try {
|
|
53
|
+
* const client = new SimpleLoginClient(new Configuration({
|
|
54
|
+
* basePath: 'http://localhost:7777/api',
|
|
55
|
+
* apiKey: 'invalid-key'
|
|
56
|
+
* }));
|
|
57
|
+
* await client.account.getUserInfo();
|
|
58
|
+
* throw new Error('Should have thrown');
|
|
59
|
+
* } catch (error) {
|
|
60
|
+
* expectError(error, 401);
|
|
61
|
+
* }
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* // Testing bad request (400)
|
|
65
|
+
* try {
|
|
66
|
+
* await client.account.login({
|
|
67
|
+
* authLoginPost: { email: 'invalid', password: 'invalid' }
|
|
68
|
+
* });
|
|
69
|
+
* throw new Error('Should have thrown');
|
|
70
|
+
* } catch (error) {
|
|
71
|
+
* expectError(error, 400);
|
|
72
|
+
* }
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* // Testing not found (404)
|
|
76
|
+
* try {
|
|
77
|
+
* await client.alias.getAlias({ aliasId: 99999 });
|
|
78
|
+
* throw new Error('Should have thrown');
|
|
79
|
+
* } catch (error) {
|
|
80
|
+
* expectError(error, 404);
|
|
81
|
+
* }
|
|
82
|
+
*/
|
|
83
|
+
function expectError(error, statusCode) {
|
|
84
|
+
(0, vitest_1.expect)(error).toBeInstanceOf(runtime_1.ResponseError);
|
|
85
|
+
const responseError = error;
|
|
86
|
+
(0, vitest_1.expect)(responseError.response).toBeDefined();
|
|
87
|
+
(0, vitest_1.expect)(responseError.response.status).toBe(statusCode);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Custom matcher to verify an error is a ResponseError with a status code in the client error range (400-499).
|
|
91
|
+
*
|
|
92
|
+
* @param error - The caught error from a failed API call
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* try {
|
|
96
|
+
* await client.alias.getAlias({ aliasId: 99999 });
|
|
97
|
+
* throw new Error('Should have thrown');
|
|
98
|
+
* } catch (error) {
|
|
99
|
+
* expectClientError(error);
|
|
100
|
+
* }
|
|
101
|
+
*/
|
|
102
|
+
function expectClientError(error) {
|
|
103
|
+
(0, vitest_1.expect)(error).toBeInstanceOf(runtime_1.ResponseError);
|
|
104
|
+
const responseError = error;
|
|
105
|
+
(0, vitest_1.expect)(responseError.response).toBeDefined();
|
|
106
|
+
(0, vitest_1.expect)(responseError.response.status).toBeGreaterThanOrEqual(400);
|
|
107
|
+
(0, vitest_1.expect)(responseError.response.status).toBeLessThan(500);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Custom matcher to verify an error is a ResponseError with a status code in the server error range (500-599).
|
|
111
|
+
*
|
|
112
|
+
* @param error - The caught error from a failed API call
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* try {
|
|
116
|
+
* await client.account.getSomeEndpoint();
|
|
117
|
+
* throw new Error('Should have thrown');
|
|
118
|
+
* } catch (error) {
|
|
119
|
+
* expectServerError(error);
|
|
120
|
+
* }
|
|
121
|
+
*/
|
|
122
|
+
function expectServerError(error) {
|
|
123
|
+
(0, vitest_1.expect)(error).toBeInstanceOf(runtime_1.ResponseError);
|
|
124
|
+
const responseError = error;
|
|
125
|
+
(0, vitest_1.expect)(responseError.response).toBeDefined();
|
|
126
|
+
(0, vitest_1.expect)(responseError.response.status).toBeGreaterThanOrEqual(500);
|
|
127
|
+
(0, vitest_1.expect)(responseError.response.status).toBeLessThan(600);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=matchers.js.map
|