@go-mondo/identity-sdk 0.0.2-beta.8 → 0.0.2-beta.9
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/.release-please-manifest.json +1 -1
- package/.tsbuildinfo/cjs.json +1 -1
- package/.tsbuildinfo/esm.json +1 -1
- package/CHANGELOG.md +8 -0
- package/dist/cjs/action/schema/base.d.ts.map +1 -1
- package/dist/cjs/action/schema/base.js +3 -1
- package/dist/cjs/action/schema/base.test.d.ts +2 -0
- package/dist/cjs/action/schema/base.test.d.ts.map +1 -0
- package/dist/cjs/action/schema/base.test.js +122 -0
- package/dist/cjs/action/schema/operations/set-password.js +1 -1
- package/dist/cjs/action/schema/operations/set-password.test.d.ts +2 -0
- package/dist/cjs/action/schema/operations/set-password.test.d.ts.map +1 -0
- package/dist/cjs/action/schema/operations/set-password.test.js +167 -0
- package/dist/cjs/action/schema/operations/sign-up-verification.js +1 -1
- package/dist/cjs/action/schema/operations/sign-up-verification.test.d.ts +2 -0
- package/dist/cjs/action/schema/operations/sign-up-verification.test.d.ts.map +1 -0
- package/dist/cjs/action/schema/operations/sign-up-verification.test.js +141 -0
- package/dist/cjs/action/schema/operations/sign-up.test.d.ts +2 -0
- package/dist/cjs/action/schema/operations/sign-up.test.d.ts.map +1 -0
- package/dist/cjs/action/schema/operations/sign-up.test.js +174 -0
- package/dist/cjs/action/schema/operations/user-attribute-verification.js +1 -1
- package/dist/cjs/action/schema/operations/user-attribute-verification.test.d.ts +2 -0
- package/dist/cjs/action/schema/operations/user-attribute-verification.test.d.ts.map +1 -0
- package/dist/cjs/action/schema/operations/user-attribute-verification.test.js +129 -0
- package/dist/cjs/action/schema/schema.test.d.ts +2 -0
- package/dist/cjs/action/schema/schema.test.d.ts.map +1 -0
- package/dist/cjs/action/schema/schema.test.js +191 -0
- package/dist/cjs/action/schema/utils.d.ts +7 -0
- package/dist/cjs/action/schema/utils.d.ts.map +1 -0
- package/dist/cjs/action/schema/utils.js +16 -0
- package/dist/cjs/action/schema/utils.test.d.ts +2 -0
- package/dist/cjs/action/schema/utils.test.d.ts.map +1 -0
- package/dist/cjs/action/schema/utils.test.js +26 -0
- package/dist/cjs/activity/resources.test.d.ts +2 -0
- package/dist/cjs/activity/resources.test.d.ts.map +1 -0
- package/dist/cjs/activity/resources.test.js +224 -0
- package/dist/cjs/activity/schema/base.d.ts +1 -1
- package/dist/cjs/activity/schema/base.d.ts.map +1 -1
- package/dist/cjs/activity/schema/base.js +5 -4
- package/dist/cjs/activity/schema/base.test.d.ts +2 -0
- package/dist/cjs/activity/schema/base.test.d.ts.map +1 -0
- package/dist/cjs/activity/schema/base.test.js +239 -0
- package/dist/cjs/activity/schema/schema.d.ts +5 -5
- package/dist/cjs/activity/schema/schema.test.d.ts +2 -0
- package/dist/cjs/activity/schema/schema.test.d.ts.map +1 -0
- package/dist/cjs/activity/schema/schema.test.js +344 -0
- package/dist/cjs/activity/schema/types/authentication.d.ts +1 -1
- package/dist/cjs/activity/schema/types/authentication.js +1 -1
- package/dist/cjs/activity/schema/types/authentication.test.d.ts +2 -0
- package/dist/cjs/activity/schema/types/authentication.test.d.ts.map +1 -0
- package/dist/cjs/activity/schema/types/authentication.test.js +303 -0
- package/dist/cjs/activity/schema/types/authorization.d.ts +1 -1
- package/dist/cjs/activity/schema/types/authorization.js +1 -1
- package/dist/cjs/activity/schema/types/authorization.test.d.ts +2 -0
- package/dist/cjs/activity/schema/types/authorization.test.d.ts.map +1 -0
- package/dist/cjs/activity/schema/types/authorization.test.js +341 -0
- package/dist/cjs/activity/schema/types/note.d.ts +1 -1
- package/dist/cjs/activity/schema/types/note.test.d.ts +2 -0
- package/dist/cjs/activity/schema/types/note.test.d.ts.map +1 -0
- package/dist/cjs/activity/schema/types/note.test.js +319 -0
- package/dist/cjs/activity/schema/types/operation.d.ts +1 -1
- package/dist/cjs/activity/schema/types/operation.test.d.ts +2 -0
- package/dist/cjs/activity/schema/types/operation.test.d.ts.map +1 -0
- package/dist/cjs/activity/schema/types/operation.test.js +344 -0
- package/dist/cjs/activity/schema/types/unknown.d.ts +1 -1
- package/dist/cjs/activity/schema/types/unknown.test.d.ts +2 -0
- package/dist/cjs/activity/schema/types/unknown.test.d.ts.map +1 -0
- package/dist/cjs/activity/schema/types/unknown.test.js +275 -0
- package/dist/cjs/activity/schema/utils.test.d.ts +2 -0
- package/dist/cjs/activity/schema/utils.test.d.ts.map +1 -0
- package/dist/cjs/activity/schema/utils.test.js +26 -0
- package/dist/cjs/app/authorization/schema.d.ts +6 -6
- package/dist/cjs/app/authorization/schema.d.ts.map +1 -1
- package/dist/cjs/app/authorization/schema.js +39 -26
- package/dist/cjs/app/authorization/schema.test.d.ts +2 -0
- package/dist/cjs/app/authorization/schema.test.d.ts.map +1 -0
- package/dist/cjs/app/authorization/schema.test.js +353 -0
- package/dist/cjs/app/oauth/schema.d.ts +1 -1
- package/dist/cjs/app/oauth/schema.d.ts.map +1 -1
- package/dist/cjs/app/oauth/schema.js +2 -1
- package/dist/cjs/app/oauth/schema.test.d.ts +2 -0
- package/dist/cjs/app/oauth/schema.test.d.ts.map +1 -0
- package/dist/cjs/app/oauth/schema.test.js +173 -0
- package/dist/cjs/app/oidc/schema.d.ts +2 -2
- package/dist/cjs/app/oidc/schema.d.ts.map +1 -1
- package/dist/cjs/app/oidc/schema.js +1 -1
- package/dist/cjs/app/oidc/schema.test.d.ts +2 -0
- package/dist/cjs/app/oidc/schema.test.d.ts.map +1 -0
- package/dist/cjs/app/oidc/schema.test.js +95 -0
- package/dist/cjs/app/registration/resources.test.d.ts +2 -0
- package/dist/cjs/app/registration/resources.test.d.ts.map +1 -0
- package/dist/cjs/app/registration/resources.test.js +295 -0
- package/dist/cjs/app/registration/schema.d.ts +1 -1
- package/dist/cjs/app/registration/schema.test.d.ts +2 -0
- package/dist/cjs/app/registration/schema.test.d.ts.map +1 -0
- package/dist/cjs/app/registration/schema.test.js +262 -0
- package/dist/cjs/app/resources.test.d.ts +2 -0
- package/dist/cjs/app/resources.test.d.ts.map +1 -0
- package/dist/cjs/app/resources.test.js +288 -0
- package/dist/cjs/app/saml/schema.d.ts +3 -3
- package/dist/cjs/app/saml/schema.d.ts.map +1 -1
- package/dist/cjs/app/saml/schema.js +2 -2
- package/dist/cjs/app/schema.d.ts +5 -1
- package/dist/cjs/app/schema.d.ts.map +1 -1
- package/dist/cjs/app/schema.js +7 -2
- package/dist/cjs/app/schema.test.d.ts +2 -0
- package/dist/cjs/app/schema.test.d.ts.map +1 -0
- package/dist/cjs/app/schema.test.js +184 -0
- package/dist/cjs/app/utils.test.d.ts +2 -0
- package/dist/cjs/app/utils.test.d.ts.map +1 -0
- package/dist/cjs/app/utils.test.js +42 -0
- package/dist/cjs/association/schema.d.ts +23 -23
- package/dist/cjs/association/schema.js +3 -3
- package/dist/cjs/association/schema.test.d.ts +2 -0
- package/dist/cjs/association/schema.test.d.ts.map +1 -0
- package/dist/cjs/association/schema.test.js +121 -0
- package/dist/cjs/authentication/factors/schema.test.js +19 -18
- package/dist/cjs/authentication/providers/schema.js +1 -1
- package/dist/cjs/authentication/sessions/schema.d.ts +5 -5
- package/dist/cjs/authentication/sessions/schema.d.ts.map +1 -1
- package/dist/cjs/authentication/sessions/schema.js +4 -2
- package/dist/cjs/authentication/settings/schema.d.ts +1 -1
- package/dist/cjs/authentication/settings/schema.js +1 -1
- package/dist/cjs/authentication/settings/schema.test.d.ts +2 -0
- package/dist/cjs/authentication/settings/schema.test.d.ts.map +1 -0
- package/dist/cjs/authentication/settings/schema.test.js +73 -0
- package/dist/cjs/authentication/strategies/schema/base.d.ts +1 -1
- package/dist/cjs/authentication/strategies/schema/base.d.ts.map +1 -1
- package/dist/cjs/authentication/strategies/schema/base.js +3 -1
- package/dist/cjs/authentication/strategies/schema/schema.d.ts +3 -3
- package/dist/cjs/authentication/strategies/schema/types/email.d.ts +1 -1
- package/dist/cjs/authentication/strategies/schema/types/email.test.d.ts +2 -0
- package/dist/cjs/authentication/strategies/schema/types/email.test.d.ts.map +1 -0
- package/dist/cjs/authentication/strategies/schema/types/email.test.js +205 -0
- package/dist/cjs/authentication/strategies/schema/types/password.d.ts +1 -1
- package/dist/cjs/authentication/strategies/schema/types/totp.d.ts +1 -1
- package/dist/cjs/authentication/utils.d.ts +13 -0
- package/dist/cjs/authentication/utils.d.ts.map +1 -0
- package/dist/cjs/authentication/utils.js +25 -0
- package/dist/cjs/authentication/utils.test.d.ts +2 -0
- package/dist/cjs/authentication/utils.test.d.ts.map +1 -0
- package/dist/cjs/authentication/utils.test.js +142 -0
- package/dist/cjs/authorization/index.d.ts +1 -1
- package/dist/cjs/authorization/index.d.ts.map +1 -1
- package/dist/cjs/authorization/index.js +1 -1
- package/dist/cjs/authorization/permissions/schema.d.ts +1 -2
- package/dist/cjs/authorization/permissions/schema.d.ts.map +1 -1
- package/dist/cjs/authorization/permissions/schema.js +9 -10
- package/dist/cjs/authorization/permissions/schema.test.d.ts +2 -0
- package/dist/cjs/authorization/permissions/schema.test.d.ts.map +1 -0
- package/dist/cjs/authorization/permissions/schema.test.js +217 -0
- package/dist/cjs/authorization/roles/schema.d.ts +3 -3
- package/dist/cjs/authorization/roles/schema.d.ts.map +1 -1
- package/dist/cjs/authorization/roles/schema.js +10 -10
- package/dist/cjs/authorization/roles/schema.test.d.ts +2 -0
- package/dist/cjs/authorization/roles/schema.test.d.ts.map +1 -0
- package/dist/cjs/authorization/roles/schema.test.js +236 -0
- package/dist/cjs/authorization/schema.d.ts +17 -0
- package/dist/cjs/authorization/schema.d.ts.map +1 -0
- package/dist/cjs/authorization/{utils.js → schema.js} +7 -1
- package/dist/cjs/authorization/schema.test.d.ts +2 -0
- package/dist/cjs/authorization/schema.test.d.ts.map +1 -0
- package/dist/cjs/authorization/schema.test.js +42 -0
- package/dist/cjs/common/errors/http.test.d.ts +2 -0
- package/dist/cjs/common/errors/http.test.d.ts.map +1 -0
- package/dist/cjs/common/errors/http.test.js +71 -0
- package/dist/cjs/common/errors/validation.test.d.ts +2 -0
- package/dist/cjs/common/errors/validation.test.d.ts.map +1 -0
- package/dist/cjs/common/errors/validation.test.js +92 -0
- package/dist/cjs/common/resources/init.d.ts +2 -2
- package/dist/cjs/common/resources/init.d.ts.map +1 -1
- package/dist/cjs/common/resources/init.js +1 -1
- package/dist/cjs/common/resources/init.test.d.ts +2 -0
- package/dist/cjs/common/resources/init.test.d.ts.map +1 -0
- package/dist/cjs/common/resources/init.test.js +233 -0
- package/dist/cjs/common/resources/operations.test.d.ts +2 -0
- package/dist/cjs/common/resources/operations.test.d.ts.map +1 -0
- package/dist/cjs/common/resources/operations.test.js +356 -0
- package/dist/cjs/common/resources/utils.d.ts +1 -1
- package/dist/cjs/common/resources/utils.d.ts.map +1 -1
- package/dist/cjs/common/resources/utils.test.d.ts +2 -0
- package/dist/cjs/common/resources/utils.test.d.ts.map +1 -0
- package/dist/cjs/common/resources/utils.test.js +163 -0
- package/dist/cjs/common/schema/aggregate.test.d.ts +2 -0
- package/dist/cjs/common/schema/aggregate.test.d.ts.map +1 -0
- package/dist/cjs/common/schema/aggregate.test.js +75 -0
- package/dist/cjs/common/schema/collection.d.ts +2 -2
- package/dist/cjs/common/schema/collection.test.d.ts +2 -0
- package/dist/cjs/common/schema/collection.test.d.ts.map +1 -0
- package/dist/cjs/common/schema/collection.test.js +98 -0
- package/dist/cjs/common/schema/id.d.ts +2 -0
- package/dist/cjs/common/schema/id.d.ts.map +1 -0
- package/dist/cjs/common/schema/id.js +6 -0
- package/dist/cjs/common/schema/id.test.d.ts +2 -0
- package/dist/cjs/common/schema/id.test.d.ts.map +1 -0
- package/dist/cjs/common/schema/id.test.js +116 -0
- package/dist/cjs/common/schema/jwt.test.d.ts +2 -0
- package/dist/cjs/common/schema/jwt.test.d.ts.map +1 -0
- package/dist/cjs/common/schema/jwt.test.js +56 -0
- package/dist/cjs/common/schema/metadata.d.ts +9 -3
- package/dist/cjs/common/schema/metadata.d.ts.map +1 -1
- package/dist/cjs/common/schema/metadata.js +27 -8
- package/dist/cjs/common/schema/metadata.test.js +49 -0
- package/dist/cjs/common/schema/pagination.d.ts +2 -2
- package/dist/cjs/common/schema/pagination.js +2 -2
- package/dist/cjs/common/schema/pagination.test.d.ts +2 -0
- package/dist/cjs/common/schema/pagination.test.d.ts.map +1 -0
- package/dist/cjs/common/schema/pagination.test.js +68 -0
- package/dist/cjs/common/schema/sets.test.d.ts +2 -0
- package/dist/cjs/common/schema/sets.test.d.ts.map +1 -0
- package/dist/cjs/common/schema/sets.test.js +84 -0
- package/dist/cjs/common/schema/url.test.d.ts +2 -0
- package/dist/cjs/common/schema/url.test.d.ts.map +1 -0
- package/dist/cjs/common/schema/url.test.js +74 -0
- package/dist/cjs/customer/index.d.ts +2 -1
- package/dist/cjs/customer/index.d.ts.map +1 -1
- package/dist/cjs/customer/index.js +2 -1
- package/dist/cjs/customer/{schema/organization.d.ts → organization/schema.d.ts} +4 -3
- package/dist/cjs/customer/organization/schema.d.ts.map +1 -0
- package/dist/cjs/customer/{schema/organization.js → organization/schema.js} +9 -7
- package/dist/cjs/customer/schema.d.ts +17 -0
- package/dist/cjs/customer/schema.d.ts.map +1 -0
- package/dist/cjs/customer/{schema/utils.js → schema.js} +7 -1
- package/dist/cjs/customer/schema.test.d.ts +2 -0
- package/dist/cjs/customer/schema.test.d.ts.map +1 -0
- package/dist/cjs/customer/schema.test.js +42 -0
- package/dist/cjs/customer/users/schema.d.ts +4 -3
- package/dist/cjs/customer/users/schema.d.ts.map +1 -1
- package/dist/cjs/customer/users/schema.js +29 -26
- package/dist/cjs/customer/users/schema.test.js +13 -12
- package/dist/cjs/customer/users/utils.test.d.ts +2 -0
- package/dist/cjs/customer/users/utils.test.d.ts.map +1 -0
- package/dist/cjs/customer/users/utils.test.js +145 -0
- package/dist/cjs/identity/schema.test.d.ts +2 -0
- package/dist/cjs/identity/schema.test.d.ts.map +1 -0
- package/dist/cjs/identity/schema.test.js +40 -0
- package/dist/cjs/oauth/authorize/schema/grants/authorization-code.d.ts.map +1 -1
- package/dist/cjs/oauth/authorize/schema/grants/authorization-code.js +22 -3
- package/dist/cjs/oauth/authorize/schema/grants/authorization-code.test.d.ts +2 -0
- package/dist/cjs/oauth/authorize/schema/grants/authorization-code.test.d.ts.map +1 -0
- package/dist/cjs/oauth/authorize/schema/grants/authorization-code.test.js +334 -0
- package/dist/cjs/oauth/common/schema.test.d.ts +2 -0
- package/dist/cjs/oauth/common/schema.test.d.ts.map +1 -0
- package/dist/cjs/oauth/common/schema.test.js +290 -0
- package/dist/cjs/oauth/token/schema/schema.test.d.ts +2 -0
- package/dist/cjs/oauth/token/schema/schema.test.d.ts.map +1 -0
- package/dist/cjs/oauth/token/schema/schema.test.js +122 -0
- package/dist/cjs/workspace/settings/schema.test.d.ts +2 -0
- package/dist/cjs/workspace/settings/schema.test.d.ts.map +1 -0
- package/dist/cjs/workspace/settings/schema.test.js +73 -0
- package/dist/cjs/workspace/tenant/schema.d.ts +1 -0
- package/dist/cjs/workspace/tenant/schema.d.ts.map +1 -1
- package/dist/cjs/workspace/tenant/schema.js +8 -7
- package/dist/cjs/workspace/user/notifications/schema.d.ts.map +1 -1
- package/dist/cjs/workspace/user/notifications/schema.js +3 -2
- package/dist/cjs/workspace/user/preferences/schema.js +2 -2
- package/dist/cjs/workspace/utils.d.ts +0 -3
- package/dist/cjs/workspace/utils.d.ts.map +1 -1
- package/dist/cjs/workspace/utils.js +0 -3
- package/dist/cjs/workspace/utils.test.d.ts +2 -0
- package/dist/cjs/workspace/utils.test.d.ts.map +1 -0
- package/dist/cjs/workspace/utils.test.js +63 -0
- package/dist/esm/action/schema/base.d.ts.map +1 -1
- package/dist/esm/action/schema/base.js +3 -1
- package/dist/esm/action/schema/base.test.d.ts +2 -0
- package/dist/esm/action/schema/base.test.d.ts.map +1 -0
- package/dist/esm/action/schema/base.test.js +120 -0
- package/dist/esm/action/schema/operations/set-password.js +1 -1
- package/dist/esm/action/schema/operations/set-password.test.d.ts +2 -0
- package/dist/esm/action/schema/operations/set-password.test.d.ts.map +1 -0
- package/dist/esm/action/schema/operations/set-password.test.js +165 -0
- package/dist/esm/action/schema/operations/sign-up-verification.js +1 -1
- package/dist/esm/action/schema/operations/sign-up-verification.test.d.ts +2 -0
- package/dist/esm/action/schema/operations/sign-up-verification.test.d.ts.map +1 -0
- package/dist/esm/action/schema/operations/sign-up-verification.test.js +139 -0
- package/dist/esm/action/schema/operations/sign-up.test.d.ts +2 -0
- package/dist/esm/action/schema/operations/sign-up.test.d.ts.map +1 -0
- package/dist/esm/action/schema/operations/sign-up.test.js +172 -0
- package/dist/esm/action/schema/operations/user-attribute-verification.js +1 -1
- package/dist/esm/action/schema/operations/user-attribute-verification.test.d.ts +2 -0
- package/dist/esm/action/schema/operations/user-attribute-verification.test.d.ts.map +1 -0
- package/dist/esm/action/schema/operations/user-attribute-verification.test.js +127 -0
- package/dist/esm/action/schema/schema.test.d.ts +2 -0
- package/dist/esm/action/schema/schema.test.d.ts.map +1 -0
- package/dist/esm/action/schema/schema.test.js +189 -0
- package/dist/esm/action/schema/utils.d.ts +7 -0
- package/dist/esm/action/schema/utils.d.ts.map +1 -0
- package/dist/esm/action/schema/utils.js +9 -0
- package/dist/esm/action/schema/utils.test.d.ts +2 -0
- package/dist/esm/action/schema/utils.test.d.ts.map +1 -0
- package/dist/esm/action/schema/utils.test.js +24 -0
- package/dist/esm/activity/resources.test.d.ts +2 -0
- package/dist/esm/activity/resources.test.d.ts.map +1 -0
- package/dist/esm/activity/resources.test.js +189 -0
- package/dist/esm/activity/schema/base.d.ts +1 -1
- package/dist/esm/activity/schema/base.d.ts.map +1 -1
- package/dist/esm/activity/schema/base.js +7 -6
- package/dist/esm/activity/schema/base.test.d.ts +2 -0
- package/dist/esm/activity/schema/base.test.d.ts.map +1 -0
- package/dist/esm/activity/schema/base.test.js +237 -0
- package/dist/esm/activity/schema/schema.d.ts +5 -5
- package/dist/esm/activity/schema/schema.test.d.ts +2 -0
- package/dist/esm/activity/schema/schema.test.d.ts.map +1 -0
- package/dist/esm/activity/schema/schema.test.js +342 -0
- package/dist/esm/activity/schema/types/authentication.d.ts +1 -1
- package/dist/esm/activity/schema/types/authentication.js +1 -1
- package/dist/esm/activity/schema/types/authentication.test.d.ts +2 -0
- package/dist/esm/activity/schema/types/authentication.test.d.ts.map +1 -0
- package/dist/esm/activity/schema/types/authentication.test.js +301 -0
- package/dist/esm/activity/schema/types/authorization.d.ts +1 -1
- package/dist/esm/activity/schema/types/authorization.js +1 -1
- package/dist/esm/activity/schema/types/authorization.test.d.ts +2 -0
- package/dist/esm/activity/schema/types/authorization.test.d.ts.map +1 -0
- package/dist/esm/activity/schema/types/authorization.test.js +339 -0
- package/dist/esm/activity/schema/types/note.d.ts +1 -1
- package/dist/esm/activity/schema/types/note.test.d.ts +2 -0
- package/dist/esm/activity/schema/types/note.test.d.ts.map +1 -0
- package/dist/esm/activity/schema/types/note.test.js +317 -0
- package/dist/esm/activity/schema/types/operation.d.ts +1 -1
- package/dist/esm/activity/schema/types/operation.test.d.ts +2 -0
- package/dist/esm/activity/schema/types/operation.test.d.ts.map +1 -0
- package/dist/esm/activity/schema/types/operation.test.js +342 -0
- package/dist/esm/activity/schema/types/unknown.d.ts +1 -1
- package/dist/esm/activity/schema/types/unknown.test.d.ts +2 -0
- package/dist/esm/activity/schema/types/unknown.test.d.ts.map +1 -0
- package/dist/esm/activity/schema/types/unknown.test.js +273 -0
- package/dist/esm/activity/schema/utils.test.d.ts +2 -0
- package/dist/esm/activity/schema/utils.test.d.ts.map +1 -0
- package/dist/esm/activity/schema/utils.test.js +24 -0
- package/dist/esm/app/authorization/schema.d.ts +6 -6
- package/dist/esm/app/authorization/schema.d.ts.map +1 -1
- package/dist/esm/app/authorization/schema.js +40 -27
- package/dist/esm/app/authorization/schema.test.d.ts +2 -0
- package/dist/esm/app/authorization/schema.test.d.ts.map +1 -0
- package/dist/esm/app/authorization/schema.test.js +351 -0
- package/dist/esm/app/oauth/schema.d.ts +1 -1
- package/dist/esm/app/oauth/schema.d.ts.map +1 -1
- package/dist/esm/app/oauth/schema.js +3 -2
- package/dist/esm/app/oauth/schema.test.d.ts +2 -0
- package/dist/esm/app/oauth/schema.test.d.ts.map +1 -0
- package/dist/esm/app/oauth/schema.test.js +171 -0
- package/dist/esm/app/oidc/schema.d.ts +2 -2
- package/dist/esm/app/oidc/schema.d.ts.map +1 -1
- package/dist/esm/app/oidc/schema.js +2 -2
- package/dist/esm/app/oidc/schema.test.d.ts +2 -0
- package/dist/esm/app/oidc/schema.test.d.ts.map +1 -0
- package/dist/esm/app/oidc/schema.test.js +93 -0
- package/dist/esm/app/registration/resources.test.d.ts +2 -0
- package/dist/esm/app/registration/resources.test.d.ts.map +1 -0
- package/dist/esm/app/registration/resources.test.js +260 -0
- package/dist/esm/app/registration/schema.d.ts +1 -1
- package/dist/esm/app/registration/schema.test.d.ts +2 -0
- package/dist/esm/app/registration/schema.test.d.ts.map +1 -0
- package/dist/esm/app/registration/schema.test.js +260 -0
- package/dist/esm/app/resources.test.d.ts +2 -0
- package/dist/esm/app/resources.test.d.ts.map +1 -0
- package/dist/esm/app/resources.test.js +253 -0
- package/dist/esm/app/saml/schema.d.ts +3 -3
- package/dist/esm/app/saml/schema.d.ts.map +1 -1
- package/dist/esm/app/saml/schema.js +3 -3
- package/dist/esm/app/schema.d.ts +5 -1
- package/dist/esm/app/schema.d.ts.map +1 -1
- package/dist/esm/app/schema.js +7 -2
- package/dist/esm/app/schema.test.d.ts +2 -0
- package/dist/esm/app/schema.test.d.ts.map +1 -0
- package/dist/esm/app/schema.test.js +182 -0
- package/dist/esm/app/utils.test.d.ts +2 -0
- package/dist/esm/app/utils.test.d.ts.map +1 -0
- package/dist/esm/app/utils.test.js +40 -0
- package/dist/esm/association/schema.d.ts +23 -23
- package/dist/esm/association/schema.js +1 -1
- package/dist/esm/association/schema.test.d.ts +2 -0
- package/dist/esm/association/schema.test.d.ts.map +1 -0
- package/dist/esm/association/schema.test.js +119 -0
- package/dist/esm/authentication/factors/schema.test.js +19 -18
- package/dist/esm/authentication/providers/schema.js +1 -1
- package/dist/esm/authentication/sessions/schema.d.ts +5 -5
- package/dist/esm/authentication/sessions/schema.d.ts.map +1 -1
- package/dist/esm/authentication/sessions/schema.js +4 -2
- package/dist/esm/authentication/settings/schema.d.ts +1 -1
- package/dist/esm/authentication/settings/schema.js +2 -2
- package/dist/esm/authentication/settings/schema.test.d.ts +2 -0
- package/dist/esm/authentication/settings/schema.test.d.ts.map +1 -0
- package/dist/esm/authentication/settings/schema.test.js +71 -0
- package/dist/esm/authentication/strategies/schema/base.d.ts +1 -1
- package/dist/esm/authentication/strategies/schema/base.d.ts.map +1 -1
- package/dist/esm/authentication/strategies/schema/base.js +3 -1
- package/dist/esm/authentication/strategies/schema/schema.d.ts +3 -3
- package/dist/esm/authentication/strategies/schema/types/email.d.ts +1 -1
- package/dist/esm/authentication/strategies/schema/types/email.test.d.ts +2 -0
- package/dist/esm/authentication/strategies/schema/types/email.test.d.ts.map +1 -0
- package/dist/esm/authentication/strategies/schema/types/email.test.js +203 -0
- package/dist/esm/authentication/strategies/schema/types/password.d.ts +1 -1
- package/dist/esm/authentication/strategies/schema/types/totp.d.ts +1 -1
- package/dist/esm/authentication/utils.d.ts +13 -0
- package/dist/esm/authentication/utils.d.ts.map +1 -0
- package/dist/esm/authentication/utils.js +17 -0
- package/dist/esm/authentication/utils.test.d.ts +2 -0
- package/dist/esm/authentication/utils.test.d.ts.map +1 -0
- package/dist/esm/authentication/utils.test.js +140 -0
- package/dist/esm/authorization/index.d.ts +1 -1
- package/dist/esm/authorization/index.d.ts.map +1 -1
- package/dist/esm/authorization/index.js +1 -1
- package/dist/esm/authorization/permissions/schema.d.ts +1 -2
- package/dist/esm/authorization/permissions/schema.d.ts.map +1 -1
- package/dist/esm/authorization/permissions/schema.js +7 -8
- package/dist/esm/authorization/permissions/schema.test.d.ts +2 -0
- package/dist/esm/authorization/permissions/schema.test.d.ts.map +1 -0
- package/dist/esm/authorization/permissions/schema.test.js +215 -0
- package/dist/esm/authorization/roles/schema.d.ts +3 -3
- package/dist/esm/authorization/roles/schema.d.ts.map +1 -1
- package/dist/esm/authorization/roles/schema.js +9 -9
- package/dist/esm/authorization/roles/schema.test.d.ts +2 -0
- package/dist/esm/authorization/roles/schema.test.d.ts.map +1 -0
- package/dist/esm/authorization/roles/schema.test.js +234 -0
- package/dist/esm/authorization/schema.d.ts +17 -0
- package/dist/esm/authorization/schema.d.ts.map +1 -0
- package/dist/esm/authorization/schema.js +21 -0
- package/dist/esm/authorization/schema.test.d.ts +2 -0
- package/dist/esm/authorization/schema.test.d.ts.map +1 -0
- package/dist/esm/authorization/schema.test.js +40 -0
- package/dist/esm/common/errors/http.test.d.ts +2 -0
- package/dist/esm/common/errors/http.test.d.ts.map +1 -0
- package/dist/esm/common/errors/http.test.js +69 -0
- package/dist/esm/common/errors/validation.test.d.ts +2 -0
- package/dist/esm/common/errors/validation.test.d.ts.map +1 -0
- package/dist/esm/common/errors/validation.test.js +90 -0
- package/dist/esm/common/resources/init.d.ts +2 -2
- package/dist/esm/common/resources/init.d.ts.map +1 -1
- package/dist/esm/common/resources/init.js +1 -1
- package/dist/esm/common/resources/init.test.d.ts +2 -0
- package/dist/esm/common/resources/init.test.d.ts.map +1 -0
- package/dist/esm/common/resources/init.test.js +231 -0
- package/dist/esm/common/resources/operations.test.d.ts +2 -0
- package/dist/esm/common/resources/operations.test.d.ts.map +1 -0
- package/dist/esm/common/resources/operations.test.js +354 -0
- package/dist/esm/common/resources/utils.d.ts +1 -1
- package/dist/esm/common/resources/utils.d.ts.map +1 -1
- package/dist/esm/common/resources/utils.test.d.ts +2 -0
- package/dist/esm/common/resources/utils.test.d.ts.map +1 -0
- package/dist/esm/common/resources/utils.test.js +161 -0
- package/dist/esm/common/schema/aggregate.test.d.ts +2 -0
- package/dist/esm/common/schema/aggregate.test.d.ts.map +1 -0
- package/dist/esm/common/schema/aggregate.test.js +73 -0
- package/dist/esm/common/schema/collection.d.ts +2 -2
- package/dist/esm/common/schema/collection.test.d.ts +2 -0
- package/dist/esm/common/schema/collection.test.d.ts.map +1 -0
- package/dist/esm/common/schema/collection.test.js +96 -0
- package/dist/esm/common/schema/id.d.ts +2 -0
- package/dist/esm/common/schema/id.d.ts.map +1 -0
- package/dist/esm/common/schema/id.js +2 -0
- package/dist/esm/common/schema/id.test.d.ts +2 -0
- package/dist/esm/common/schema/id.test.d.ts.map +1 -0
- package/dist/esm/common/schema/id.test.js +114 -0
- package/dist/esm/common/schema/jwt.test.d.ts +2 -0
- package/dist/esm/common/schema/jwt.test.d.ts.map +1 -0
- package/dist/esm/common/schema/jwt.test.js +54 -0
- package/dist/esm/common/schema/metadata.d.ts +9 -3
- package/dist/esm/common/schema/metadata.d.ts.map +1 -1
- package/dist/esm/common/schema/metadata.js +24 -6
- package/dist/esm/common/schema/metadata.test.js +50 -1
- package/dist/esm/common/schema/pagination.d.ts +2 -2
- package/dist/esm/common/schema/pagination.js +2 -2
- package/dist/esm/common/schema/pagination.test.d.ts +2 -0
- package/dist/esm/common/schema/pagination.test.d.ts.map +1 -0
- package/dist/esm/common/schema/pagination.test.js +66 -0
- package/dist/esm/common/schema/sets.test.d.ts +2 -0
- package/dist/esm/common/schema/sets.test.d.ts.map +1 -0
- package/dist/esm/common/schema/sets.test.js +82 -0
- package/dist/esm/common/schema/url.test.d.ts +2 -0
- package/dist/esm/common/schema/url.test.d.ts.map +1 -0
- package/dist/esm/common/schema/url.test.js +72 -0
- package/dist/esm/customer/index.d.ts +2 -1
- package/dist/esm/customer/index.d.ts.map +1 -1
- package/dist/esm/customer/index.js +2 -1
- package/dist/esm/customer/{schema/organization.d.ts → organization/schema.d.ts} +4 -3
- package/dist/esm/customer/organization/schema.d.ts.map +1 -0
- package/dist/esm/customer/{schema/organization.js → organization/schema.js} +7 -5
- package/dist/esm/customer/schema.d.ts +17 -0
- package/dist/esm/customer/schema.d.ts.map +1 -0
- package/dist/esm/customer/schema.js +21 -0
- package/dist/esm/customer/schema.test.d.ts +2 -0
- package/dist/esm/customer/schema.test.d.ts.map +1 -0
- package/dist/esm/customer/schema.test.js +40 -0
- package/dist/esm/customer/users/schema.d.ts +4 -3
- package/dist/esm/customer/users/schema.d.ts.map +1 -1
- package/dist/esm/customer/users/schema.js +9 -6
- package/dist/esm/customer/users/schema.test.js +6 -5
- package/dist/esm/customer/users/utils.test.d.ts +2 -0
- package/dist/esm/customer/users/utils.test.d.ts.map +1 -0
- package/dist/esm/customer/users/utils.test.js +143 -0
- package/dist/esm/identity/schema.test.d.ts +2 -0
- package/dist/esm/identity/schema.test.d.ts.map +1 -0
- package/dist/esm/identity/schema.test.js +38 -0
- package/dist/esm/oauth/authorize/schema/grants/authorization-code.d.ts.map +1 -1
- package/dist/esm/oauth/authorize/schema/grants/authorization-code.js +22 -3
- package/dist/esm/oauth/authorize/schema/grants/authorization-code.test.d.ts +2 -0
- package/dist/esm/oauth/authorize/schema/grants/authorization-code.test.d.ts.map +1 -0
- package/dist/esm/oauth/authorize/schema/grants/authorization-code.test.js +332 -0
- package/dist/esm/oauth/common/schema.test.d.ts +2 -0
- package/dist/esm/oauth/common/schema.test.d.ts.map +1 -0
- package/dist/esm/oauth/common/schema.test.js +288 -0
- package/dist/esm/oauth/token/schema/schema.test.d.ts +2 -0
- package/dist/esm/oauth/token/schema/schema.test.d.ts.map +1 -0
- package/dist/esm/oauth/token/schema/schema.test.js +120 -0
- package/dist/esm/workspace/settings/schema.test.d.ts +2 -0
- package/dist/esm/workspace/settings/schema.test.d.ts.map +1 -0
- package/dist/esm/workspace/settings/schema.test.js +71 -0
- package/dist/esm/workspace/tenant/schema.d.ts +1 -0
- package/dist/esm/workspace/tenant/schema.d.ts.map +1 -1
- package/dist/esm/workspace/tenant/schema.js +4 -3
- package/dist/esm/workspace/user/notifications/schema.d.ts.map +1 -1
- package/dist/esm/workspace/user/notifications/schema.js +4 -3
- package/dist/esm/workspace/user/preferences/schema.js +3 -3
- package/dist/esm/workspace/utils.d.ts +0 -3
- package/dist/esm/workspace/utils.d.ts.map +1 -1
- package/dist/esm/workspace/utils.js +0 -3
- package/dist/esm/workspace/utils.test.d.ts +2 -0
- package/dist/esm/workspace/utils.test.d.ts.map +1 -0
- package/dist/esm/workspace/utils.test.js +61 -0
- package/package.json +1 -1
- package/dist/cjs/authorization/utils.d.ts +0 -11
- package/dist/cjs/authorization/utils.d.ts.map +0 -1
- package/dist/cjs/customer/schema/organization.d.ts.map +0 -1
- package/dist/cjs/customer/schema/schema.d.ts +0 -4
- package/dist/cjs/customer/schema/schema.d.ts.map +0 -1
- package/dist/cjs/customer/schema/schema.js +0 -19
- package/dist/cjs/customer/schema/utils.d.ts +0 -11
- package/dist/cjs/customer/schema/utils.d.ts.map +0 -1
- package/dist/esm/authorization/utils.d.ts +0 -11
- package/dist/esm/authorization/utils.d.ts.map +0 -1
- package/dist/esm/authorization/utils.js +0 -15
- package/dist/esm/customer/schema/organization.d.ts.map +0 -1
- package/dist/esm/customer/schema/schema.d.ts +0 -4
- package/dist/esm/customer/schema/schema.d.ts.map +0 -1
- package/dist/esm/customer/schema/schema.js +0 -3
- package/dist/esm/customer/schema/utils.d.ts +0 -11
- package/dist/esm/customer/schema/utils.d.ts.map +0 -1
- package/dist/esm/customer/schema/utils.js +0 -15
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const arktype_1 = require("arktype");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const utils_js_1 = require("../../../../app/utils.js");
|
|
6
|
+
const schema_js_1 = require("../../../common/schema.js");
|
|
7
|
+
const authorization_code_js_1 = require("./authorization-code.js");
|
|
8
|
+
(0, vitest_1.describe)('OAuth Authorization Code Schema', () => {
|
|
9
|
+
(0, vitest_1.describe)('AuthorizationCodeSchema validation', () => {
|
|
10
|
+
(0, vitest_1.test)('should validate minimal valid authorization code request', () => {
|
|
11
|
+
const minimalPayload = {
|
|
12
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
13
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
14
|
+
};
|
|
15
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(minimalPayload);
|
|
16
|
+
(0, vitest_1.expect)(result).toEqual(minimalPayload);
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.test)('should validate complete authorization code request', () => {
|
|
19
|
+
const completePayload = {
|
|
20
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
21
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
22
|
+
redirect_uri: 'https://example.com/callback',
|
|
23
|
+
scope: 'openid profile email',
|
|
24
|
+
state: 'random-state-value',
|
|
25
|
+
code_challenge: 'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk',
|
|
26
|
+
code_challenge_method: schema_js_1.CodeChallengeMethod.S256,
|
|
27
|
+
nonce: 'random-nonce-value',
|
|
28
|
+
display: 'page',
|
|
29
|
+
prompt: 'consent',
|
|
30
|
+
max_age: 3600,
|
|
31
|
+
audience: 'https://api.example.com',
|
|
32
|
+
};
|
|
33
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(completePayload);
|
|
34
|
+
(0, vitest_1.expect)(result).toEqual(completePayload);
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.test)('should validate authorization code request with PKCE', () => {
|
|
37
|
+
const pkcePayload = {
|
|
38
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
39
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
40
|
+
code_challenge: 'E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM',
|
|
41
|
+
code_challenge_method: schema_js_1.CodeChallengeMethod.S256,
|
|
42
|
+
redirect_uri: 'https://app.example.com/auth/callback',
|
|
43
|
+
scope: 'openid',
|
|
44
|
+
state: 'xyz',
|
|
45
|
+
};
|
|
46
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(pkcePayload);
|
|
47
|
+
(0, vitest_1.expect)(result).toEqual(pkcePayload);
|
|
48
|
+
});
|
|
49
|
+
(0, vitest_1.test)('should validate authorization code request with plain PKCE', () => {
|
|
50
|
+
const plainPkcePayload = {
|
|
51
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
52
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
53
|
+
code_challenge: 'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk',
|
|
54
|
+
code_challenge_method: schema_js_1.CodeChallengeMethod.PLAIN,
|
|
55
|
+
};
|
|
56
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(plainPkcePayload);
|
|
57
|
+
(0, vitest_1.expect)(result).toEqual(plainPkcePayload);
|
|
58
|
+
});
|
|
59
|
+
(0, vitest_1.test)('should validate request without PKCE parameters', () => {
|
|
60
|
+
const noPkcePayload = {
|
|
61
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
62
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
63
|
+
redirect_uri: 'https://legacy.example.com/callback',
|
|
64
|
+
scope: 'openid profile',
|
|
65
|
+
state: 'legacy-state',
|
|
66
|
+
};
|
|
67
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(noPkcePayload);
|
|
68
|
+
(0, vitest_1.expect)(result).toEqual(noPkcePayload);
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.test)('should validate OIDC specific parameters', () => {
|
|
71
|
+
const oidcPayload = {
|
|
72
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
73
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
74
|
+
nonce: 'unique-nonce-12345',
|
|
75
|
+
display: 'popup',
|
|
76
|
+
prompt: 'login',
|
|
77
|
+
max_age: 7200,
|
|
78
|
+
scope: 'openid profile email address phone',
|
|
79
|
+
};
|
|
80
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(oidcPayload);
|
|
81
|
+
(0, vitest_1.expect)(result).toEqual(oidcPayload);
|
|
82
|
+
});
|
|
83
|
+
(0, vitest_1.test)('should validate with optional audience parameter', () => {
|
|
84
|
+
const audiencePayload = {
|
|
85
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
86
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
87
|
+
audience: 'https://api.myservice.com',
|
|
88
|
+
};
|
|
89
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(audiencePayload);
|
|
90
|
+
(0, vitest_1.expect)(result).toEqual(audiencePayload);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
(0, vitest_1.describe)('AuthorizationCodeSchema validation errors', () => {
|
|
94
|
+
(0, vitest_1.test)('should reject missing response_type', () => {
|
|
95
|
+
const invalidPayload = {
|
|
96
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
97
|
+
};
|
|
98
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(invalidPayload);
|
|
99
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
100
|
+
});
|
|
101
|
+
(0, vitest_1.test)('should reject invalid response_type', () => {
|
|
102
|
+
const invalidPayload = {
|
|
103
|
+
response_type: 'invalid_type',
|
|
104
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
105
|
+
};
|
|
106
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(invalidPayload);
|
|
107
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
108
|
+
});
|
|
109
|
+
(0, vitest_1.test)('should reject missing client_id', () => {
|
|
110
|
+
const invalidPayload = {
|
|
111
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
112
|
+
};
|
|
113
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(invalidPayload);
|
|
114
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
115
|
+
});
|
|
116
|
+
(0, vitest_1.test)('should reject invalid client_id format', () => {
|
|
117
|
+
const invalidPayload = {
|
|
118
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
119
|
+
client_id: 'invalid-client-id',
|
|
120
|
+
};
|
|
121
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(invalidPayload);
|
|
122
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
123
|
+
});
|
|
124
|
+
(0, vitest_1.test)('should reject invalid redirect_uri format', () => {
|
|
125
|
+
const invalidPayload = {
|
|
126
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
127
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
128
|
+
redirect_uri: 'not-a-url',
|
|
129
|
+
};
|
|
130
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(invalidPayload);
|
|
131
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
132
|
+
});
|
|
133
|
+
(0, vitest_1.test)('should reject invalid code_challenge_method', () => {
|
|
134
|
+
const invalidPayload = {
|
|
135
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
136
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
137
|
+
code_challenge: 'valid-challenge',
|
|
138
|
+
code_challenge_method: 'invalid_method',
|
|
139
|
+
};
|
|
140
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(invalidPayload);
|
|
141
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
142
|
+
});
|
|
143
|
+
(0, vitest_1.test)('should reject invalid display value', () => {
|
|
144
|
+
const invalidPayload = {
|
|
145
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
146
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
147
|
+
display: 'invalid_display',
|
|
148
|
+
};
|
|
149
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(invalidPayload);
|
|
150
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
151
|
+
});
|
|
152
|
+
(0, vitest_1.test)('should reject invalid prompt value', () => {
|
|
153
|
+
const invalidPayload = {
|
|
154
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
155
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
156
|
+
prompt: 'invalid_prompt',
|
|
157
|
+
};
|
|
158
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(invalidPayload);
|
|
159
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
160
|
+
});
|
|
161
|
+
(0, vitest_1.test)('should reject non-number max_age', () => {
|
|
162
|
+
const invalidPayload = {
|
|
163
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
164
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
165
|
+
max_age: 'not-a-number',
|
|
166
|
+
};
|
|
167
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(invalidPayload);
|
|
168
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
169
|
+
});
|
|
170
|
+
(0, vitest_1.test)('should reject negative max_age', () => {
|
|
171
|
+
const invalidPayload = {
|
|
172
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
173
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
174
|
+
max_age: -100,
|
|
175
|
+
};
|
|
176
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(invalidPayload);
|
|
177
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
(0, vitest_1.describe)('PKCE validation edge cases', () => {
|
|
181
|
+
(0, vitest_1.test)('should require both code_challenge and code_challenge_method when one is provided', () => {
|
|
182
|
+
const onlyChallenge = {
|
|
183
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
184
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
185
|
+
code_challenge: 'challenge-without-method',
|
|
186
|
+
};
|
|
187
|
+
const result1 = (0, authorization_code_js_1.AuthorizationCodeSchema)(onlyChallenge);
|
|
188
|
+
(0, vitest_1.expect)(result1).toBeInstanceOf(arktype_1.type.errors);
|
|
189
|
+
const onlyMethod = {
|
|
190
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
191
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
192
|
+
code_challenge_method: schema_js_1.CodeChallengeMethod.S256,
|
|
193
|
+
};
|
|
194
|
+
const result2 = (0, authorization_code_js_1.AuthorizationCodeSchema)(onlyMethod);
|
|
195
|
+
(0, vitest_1.expect)(result2).toBeInstanceOf(arktype_1.type.errors);
|
|
196
|
+
});
|
|
197
|
+
(0, vitest_1.test)('should allow neither code_challenge nor code_challenge_method', () => {
|
|
198
|
+
const noPkce = {
|
|
199
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
200
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
201
|
+
redirect_uri: 'https://example.com/callback',
|
|
202
|
+
};
|
|
203
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(noPkce);
|
|
204
|
+
(0, vitest_1.expect)(result).toEqual(noPkce);
|
|
205
|
+
});
|
|
206
|
+
(0, vitest_1.test)('should validate PKCE with S256 method', () => {
|
|
207
|
+
const s256Pkce = {
|
|
208
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
209
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
210
|
+
code_challenge: 'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk',
|
|
211
|
+
code_challenge_method: schema_js_1.CodeChallengeMethod.S256,
|
|
212
|
+
};
|
|
213
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(s256Pkce);
|
|
214
|
+
(0, vitest_1.expect)(result).toEqual(s256Pkce);
|
|
215
|
+
});
|
|
216
|
+
(0, vitest_1.test)('should validate PKCE with plain method', () => {
|
|
217
|
+
const plainPkce = {
|
|
218
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
219
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
220
|
+
code_challenge: 'plain-text-challenge',
|
|
221
|
+
code_challenge_method: schema_js_1.CodeChallengeMethod.PLAIN,
|
|
222
|
+
};
|
|
223
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(plainPkce);
|
|
224
|
+
(0, vitest_1.expect)(result).toEqual(plainPkce);
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
(0, vitest_1.describe)('Real-world scenarios', () => {
|
|
228
|
+
(0, vitest_1.test)('should validate typical SPA authorization request', () => {
|
|
229
|
+
const spaRequest = {
|
|
230
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
231
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
232
|
+
redirect_uri: 'https://myapp.com/auth/callback',
|
|
233
|
+
scope: 'openid profile email',
|
|
234
|
+
state: 'abc123def456',
|
|
235
|
+
code_challenge: 'E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM',
|
|
236
|
+
code_challenge_method: schema_js_1.CodeChallengeMethod.S256,
|
|
237
|
+
nonce: 'xyz789',
|
|
238
|
+
};
|
|
239
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(spaRequest);
|
|
240
|
+
(0, vitest_1.expect)(result).toEqual(spaRequest);
|
|
241
|
+
});
|
|
242
|
+
(0, vitest_1.test)('should validate server-side web app authorization request', () => {
|
|
243
|
+
const webAppRequest = {
|
|
244
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
245
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
246
|
+
redirect_uri: 'https://webapp.example.com/oauth/callback',
|
|
247
|
+
scope: 'openid profile email address phone',
|
|
248
|
+
state: 'secure-random-state-12345',
|
|
249
|
+
};
|
|
250
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(webAppRequest);
|
|
251
|
+
(0, vitest_1.expect)(result).toEqual(webAppRequest);
|
|
252
|
+
});
|
|
253
|
+
(0, vitest_1.test)('should validate mobile app authorization request', () => {
|
|
254
|
+
const mobileRequest = {
|
|
255
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
256
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
257
|
+
redirect_uri: 'com.example.myapp://oauth/callback',
|
|
258
|
+
scope: 'openid profile',
|
|
259
|
+
state: 'mobile-state-token',
|
|
260
|
+
code_challenge: 'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk',
|
|
261
|
+
code_challenge_method: schema_js_1.CodeChallengeMethod.S256,
|
|
262
|
+
display: 'touch',
|
|
263
|
+
};
|
|
264
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(mobileRequest);
|
|
265
|
+
(0, vitest_1.expect)(result).toEqual(mobileRequest);
|
|
266
|
+
});
|
|
267
|
+
(0, vitest_1.test)('should validate enterprise SSO request', () => {
|
|
268
|
+
const enterpriseRequest = {
|
|
269
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
270
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
271
|
+
redirect_uri: 'https://enterprise.example.com/sso/callback',
|
|
272
|
+
scope: 'openid profile email groups',
|
|
273
|
+
state: 'enterprise-session-12345',
|
|
274
|
+
prompt: 'select_account',
|
|
275
|
+
max_age: 28800, // 8 hours
|
|
276
|
+
audience: 'https://api.enterprise.example.com',
|
|
277
|
+
};
|
|
278
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(enterpriseRequest);
|
|
279
|
+
(0, vitest_1.expect)(result).toEqual(enterpriseRequest);
|
|
280
|
+
});
|
|
281
|
+
(0, vitest_1.test)('should validate request with multiple scopes', () => {
|
|
282
|
+
const multiScopeRequest = {
|
|
283
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
284
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
285
|
+
scope: 'openid profile email address phone offline_access custom:read custom:write',
|
|
286
|
+
redirect_uri: 'https://example.com/callback',
|
|
287
|
+
};
|
|
288
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(multiScopeRequest);
|
|
289
|
+
(0, vitest_1.expect)(result).toEqual(multiScopeRequest);
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
(0, vitest_1.describe)('Edge cases and boundary conditions', () => {
|
|
293
|
+
(0, vitest_1.test)('should handle empty strings for optional string fields', () => {
|
|
294
|
+
const emptyStringsPayload = {
|
|
295
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
296
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
297
|
+
scope: '',
|
|
298
|
+
state: '',
|
|
299
|
+
nonce: '',
|
|
300
|
+
};
|
|
301
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(emptyStringsPayload);
|
|
302
|
+
(0, vitest_1.expect)(result).toEqual(emptyStringsPayload);
|
|
303
|
+
});
|
|
304
|
+
(0, vitest_1.test)('should handle very long valid values', () => {
|
|
305
|
+
const longValuesPayload = {
|
|
306
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
307
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
308
|
+
state: 'a'.repeat(1000),
|
|
309
|
+
nonce: 'b'.repeat(500),
|
|
310
|
+
scope: `openid profile email ${'custom:scope'.repeat(100)}`,
|
|
311
|
+
};
|
|
312
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(longValuesPayload);
|
|
313
|
+
(0, vitest_1.expect)(result).toEqual(longValuesPayload);
|
|
314
|
+
});
|
|
315
|
+
(0, vitest_1.test)('should handle zero max_age', () => {
|
|
316
|
+
const zeroMaxAge = {
|
|
317
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
318
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
319
|
+
max_age: 0,
|
|
320
|
+
};
|
|
321
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(zeroMaxAge);
|
|
322
|
+
(0, vitest_1.expect)(result).toEqual(zeroMaxAge);
|
|
323
|
+
});
|
|
324
|
+
(0, vitest_1.test)('should handle large max_age values', () => {
|
|
325
|
+
const largeMaxAge = {
|
|
326
|
+
response_type: schema_js_1.ResponseType.CODE,
|
|
327
|
+
client_id: (0, utils_js_1.generateAppId)(),
|
|
328
|
+
max_age: 31536000, // 1 year in seconds
|
|
329
|
+
};
|
|
330
|
+
const result = (0, authorization_code_js_1.AuthorizationCodeSchema)(largeMaxAge);
|
|
331
|
+
(0, vitest_1.expect)(result).toEqual(largeMaxAge);
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["../../../../src/oauth/common/schema.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const arktype_1 = require("arktype");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const schema_js_1 = require("./schema.js");
|
|
6
|
+
(0, vitest_1.describe)('OAuth Common Schema', () => {
|
|
7
|
+
(0, vitest_1.describe)('GrantType constants', () => {
|
|
8
|
+
(0, vitest_1.test)('should define correct grant type values', () => {
|
|
9
|
+
(0, vitest_1.expect)(schema_js_1.GrantType.CLIENT_CREDENTIALS).toBe('client_credentials');
|
|
10
|
+
(0, vitest_1.expect)(schema_js_1.GrantType.AUTHORIZATION_CODE).toBe('authorization_code');
|
|
11
|
+
(0, vitest_1.expect)(schema_js_1.GrantType.IMPLICIT).toBe('implicit');
|
|
12
|
+
(0, vitest_1.expect)(schema_js_1.GrantType.REFRESH_TOKEN).toBe('refresh_token');
|
|
13
|
+
});
|
|
14
|
+
(0, vitest_1.test)('should have corresponding labels for each grant type', () => {
|
|
15
|
+
(0, vitest_1.expect)(schema_js_1.GrantTypeLabel[schema_js_1.GrantType.CLIENT_CREDENTIALS]).toBe('Client Credentials');
|
|
16
|
+
(0, vitest_1.expect)(schema_js_1.GrantTypeLabel[schema_js_1.GrantType.AUTHORIZATION_CODE]).toBe('Authorization Code');
|
|
17
|
+
(0, vitest_1.expect)(schema_js_1.GrantTypeLabel[schema_js_1.GrantType.IMPLICIT]).toBe('Implicit');
|
|
18
|
+
(0, vitest_1.expect)(schema_js_1.GrantTypeLabel[schema_js_1.GrantType.REFRESH_TOKEN]).toBe('Refresh Token');
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.test)('should have all grant types covered in labels', () => {
|
|
21
|
+
const grantTypeKeys = Object.keys(schema_js_1.GrantType);
|
|
22
|
+
const labelKeys = Object.keys(schema_js_1.GrantTypeLabel);
|
|
23
|
+
(0, vitest_1.expect)(labelKeys).toHaveLength(grantTypeKeys.length);
|
|
24
|
+
for (const key of grantTypeKeys) {
|
|
25
|
+
const grantType = schema_js_1.GrantType[key];
|
|
26
|
+
(0, vitest_1.expect)(schema_js_1.GrantTypeLabel).toHaveProperty(grantType);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
(0, vitest_1.test)('AnyGrantType type should work with valid values', () => {
|
|
30
|
+
const validGrantTypes = [
|
|
31
|
+
'client_credentials',
|
|
32
|
+
'authorization_code',
|
|
33
|
+
'implicit',
|
|
34
|
+
'refresh_token',
|
|
35
|
+
];
|
|
36
|
+
for (const grantType of validGrantTypes) {
|
|
37
|
+
(0, vitest_1.expect)(Object.values(schema_js_1.GrantType)).toContain(grantType);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.describe)('ResponseType constants', () => {
|
|
42
|
+
(0, vitest_1.test)('should define correct response type values', () => {
|
|
43
|
+
(0, vitest_1.expect)(schema_js_1.ResponseType.ID_TOKEN).toBe('id_token');
|
|
44
|
+
(0, vitest_1.expect)(schema_js_1.ResponseType.TOKEN).toBe('token');
|
|
45
|
+
(0, vitest_1.expect)(schema_js_1.ResponseType.CODE).toBe('code');
|
|
46
|
+
});
|
|
47
|
+
(0, vitest_1.test)('AnyResponseType type should work with valid values', () => {
|
|
48
|
+
const validResponseTypes = [
|
|
49
|
+
'id_token',
|
|
50
|
+
'token',
|
|
51
|
+
'code',
|
|
52
|
+
];
|
|
53
|
+
for (const responseType of validResponseTypes) {
|
|
54
|
+
(0, vitest_1.expect)(Object.values(schema_js_1.ResponseType)).toContain(responseType);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.describe)('CodeChallengeMethod constants and schema', () => {
|
|
59
|
+
(0, vitest_1.test)('should define correct code challenge method values', () => {
|
|
60
|
+
(0, vitest_1.expect)(schema_js_1.CodeChallengeMethod.DEFAULT).toBe('S256');
|
|
61
|
+
(0, vitest_1.expect)(schema_js_1.CodeChallengeMethod.S256).toBe('S256');
|
|
62
|
+
(0, vitest_1.expect)(schema_js_1.CodeChallengeMethod.PLAIN).toBe('plain');
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.test)('CodeChallengeMethodSchema should validate valid methods', () => {
|
|
65
|
+
const validResult1 = (0, schema_js_1.CodeChallengeMethodSchema)('S256');
|
|
66
|
+
(0, vitest_1.expect)(validResult1).toBe('S256');
|
|
67
|
+
const validResult2 = (0, schema_js_1.CodeChallengeMethodSchema)('plain');
|
|
68
|
+
(0, vitest_1.expect)(validResult2).toBe('plain');
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.test)('CodeChallengeMethodSchema should reject invalid methods', () => {
|
|
71
|
+
const invalidResult = (0, schema_js_1.CodeChallengeMethodSchema)('invalid_method');
|
|
72
|
+
(0, vitest_1.expect)(invalidResult).toBeInstanceOf(arktype_1.type.errors);
|
|
73
|
+
});
|
|
74
|
+
(0, vitest_1.test)('AnyCodeChallengeMethod type should work with valid values', () => {
|
|
75
|
+
const validMethods = ['S256', 'plain'];
|
|
76
|
+
for (const method of validMethods) {
|
|
77
|
+
(0, vitest_1.expect)(Object.values(schema_js_1.CodeChallengeMethod)).toContain(method);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
(0, vitest_1.describe)('AuthorizationDisplay constants and schema', () => {
|
|
82
|
+
(0, vitest_1.test)('should define correct authorization display values', () => {
|
|
83
|
+
(0, vitest_1.expect)(schema_js_1.AuthorizationDisplay.PAGE).toBe('page');
|
|
84
|
+
(0, vitest_1.expect)(schema_js_1.AuthorizationDisplay.POPUP).toBe('popup');
|
|
85
|
+
(0, vitest_1.expect)(schema_js_1.AuthorizationDisplay.TOUCH).toBe('touch');
|
|
86
|
+
(0, vitest_1.expect)(schema_js_1.AuthorizationDisplay.WAP).toBe('wap');
|
|
87
|
+
});
|
|
88
|
+
(0, vitest_1.test)('AuthorizationDisplaySchema should validate valid display values', () => {
|
|
89
|
+
const validDisplays = ['page', 'popup', 'touch', 'wap'];
|
|
90
|
+
for (const display of validDisplays) {
|
|
91
|
+
const result = (0, schema_js_1.AuthorizationDisplaySchema)(display);
|
|
92
|
+
(0, vitest_1.expect)(result).toBe(display);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
(0, vitest_1.test)('AuthorizationDisplaySchema should reject invalid display values', () => {
|
|
96
|
+
const invalidResult = (0, schema_js_1.AuthorizationDisplaySchema)('invalid_display');
|
|
97
|
+
(0, vitest_1.expect)(invalidResult).toBeInstanceOf(arktype_1.type.errors);
|
|
98
|
+
});
|
|
99
|
+
(0, vitest_1.test)('AnyAuthorizationDisplay type should work with valid values', () => {
|
|
100
|
+
const validDisplays = [
|
|
101
|
+
'page',
|
|
102
|
+
'popup',
|
|
103
|
+
'touch',
|
|
104
|
+
'wap',
|
|
105
|
+
];
|
|
106
|
+
for (const display of validDisplays) {
|
|
107
|
+
(0, vitest_1.expect)(Object.values(schema_js_1.AuthorizationDisplay)).toContain(display);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
(0, vitest_1.describe)('AuthorizationPrompt constants and schema', () => {
|
|
112
|
+
(0, vitest_1.test)('should define correct authorization prompt values', () => {
|
|
113
|
+
(0, vitest_1.expect)(schema_js_1.AuthorizationPrompt.NONE).toBe('none');
|
|
114
|
+
(0, vitest_1.expect)(schema_js_1.AuthorizationPrompt.LOGIN).toBe('login');
|
|
115
|
+
(0, vitest_1.expect)(schema_js_1.AuthorizationPrompt.CONSENT).toBe('consent');
|
|
116
|
+
(0, vitest_1.expect)(schema_js_1.AuthorizationPrompt.SELECT_ACCOUNT).toBe('select_account');
|
|
117
|
+
});
|
|
118
|
+
(0, vitest_1.test)('AuthorizationPromptSchema should validate valid prompt values', () => {
|
|
119
|
+
const validPrompts = ['none', 'login', 'consent', 'select_account'];
|
|
120
|
+
for (const prompt of validPrompts) {
|
|
121
|
+
const result = (0, schema_js_1.AuthorizationPromptSchema)(prompt);
|
|
122
|
+
(0, vitest_1.expect)(result).toBe(prompt);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
(0, vitest_1.test)('AuthorizationPromptSchema should reject invalid prompt values', () => {
|
|
126
|
+
const invalidResult = (0, schema_js_1.AuthorizationPromptSchema)('invalid_prompt');
|
|
127
|
+
(0, vitest_1.expect)(invalidResult).toBeInstanceOf(arktype_1.type.errors);
|
|
128
|
+
});
|
|
129
|
+
(0, vitest_1.test)('AnyAuthorizationPrompt type should work with valid values', () => {
|
|
130
|
+
const validPrompts = [
|
|
131
|
+
'none',
|
|
132
|
+
'login',
|
|
133
|
+
'consent',
|
|
134
|
+
'select_account',
|
|
135
|
+
];
|
|
136
|
+
for (const prompt of validPrompts) {
|
|
137
|
+
(0, vitest_1.expect)(Object.values(schema_js_1.AuthorizationPrompt)).toContain(prompt);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
(0, vitest_1.describe)('OptionalSchema', () => {
|
|
142
|
+
(0, vitest_1.test)('should validate object with optional audience', () => {
|
|
143
|
+
const validWithAudience = (0, schema_js_1.OptionalSchema)({
|
|
144
|
+
audience: 'https://api.example.com',
|
|
145
|
+
});
|
|
146
|
+
(0, vitest_1.expect)(validWithAudience).toEqual({
|
|
147
|
+
audience: 'https://api.example.com',
|
|
148
|
+
});
|
|
149
|
+
const validWithoutAudience = (0, schema_js_1.OptionalSchema)({});
|
|
150
|
+
(0, vitest_1.expect)(validWithoutAudience).toEqual({});
|
|
151
|
+
});
|
|
152
|
+
(0, vitest_1.test)('should reject non-string audience values', () => {
|
|
153
|
+
const invalidResult = (0, schema_js_1.OptionalSchema)({ audience: 123 });
|
|
154
|
+
(0, vitest_1.expect)(invalidResult).toBeInstanceOf(arktype_1.type.errors);
|
|
155
|
+
});
|
|
156
|
+
(0, vitest_1.test)('should allow additional properties to be filtered', () => {
|
|
157
|
+
// Depending on schema configuration, extra properties might be filtered
|
|
158
|
+
const input = {
|
|
159
|
+
audience: 'https://api.example.com',
|
|
160
|
+
extraProperty: 'should be handled based on schema config',
|
|
161
|
+
};
|
|
162
|
+
const result = (0, schema_js_1.OptionalSchema)(input);
|
|
163
|
+
// The result depends on schema configuration (onUndeclaredKey behavior)
|
|
164
|
+
(0, vitest_1.expect)(result).toHaveProperty('audience', 'https://api.example.com');
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
(0, vitest_1.describe)('OIDC and OAuth Scopes', () => {
|
|
168
|
+
(0, vitest_1.test)('should define correct OIDC scope values', () => {
|
|
169
|
+
(0, vitest_1.expect)(schema_js_1.OIDCScope.OPENID).toBe('openid');
|
|
170
|
+
(0, vitest_1.expect)(schema_js_1.OIDCScope.PROFILE).toBe('profile');
|
|
171
|
+
(0, vitest_1.expect)(schema_js_1.OIDCScope.EMAIL).toBe('email');
|
|
172
|
+
(0, vitest_1.expect)(schema_js_1.OIDCScope.ADDRESS).toBe('address');
|
|
173
|
+
(0, vitest_1.expect)(schema_js_1.OIDCScope.PHONE).toBe('phone');
|
|
174
|
+
});
|
|
175
|
+
(0, vitest_1.test)('should define correct OAuth scope values', () => {
|
|
176
|
+
(0, vitest_1.expect)(schema_js_1.OAuthScope.OFFLINE_ACCESS).toBe('offline_access');
|
|
177
|
+
});
|
|
178
|
+
(0, vitest_1.test)('Scope should combine OIDC and OAuth scopes', () => {
|
|
179
|
+
(0, vitest_1.expect)(schema_js_1.Scope.OPENID).toBe('openid');
|
|
180
|
+
(0, vitest_1.expect)(schema_js_1.Scope.PROFILE).toBe('profile');
|
|
181
|
+
(0, vitest_1.expect)(schema_js_1.Scope.EMAIL).toBe('email');
|
|
182
|
+
(0, vitest_1.expect)(schema_js_1.Scope.ADDRESS).toBe('address');
|
|
183
|
+
(0, vitest_1.expect)(schema_js_1.Scope.PHONE).toBe('phone');
|
|
184
|
+
(0, vitest_1.expect)(schema_js_1.Scope.OFFLINE_ACCESS).toBe('offline_access');
|
|
185
|
+
});
|
|
186
|
+
(0, vitest_1.test)('AnyOIDCScope type should work with valid OIDC values', () => {
|
|
187
|
+
const validOIDCScopes = [
|
|
188
|
+
'openid',
|
|
189
|
+
'profile',
|
|
190
|
+
'email',
|
|
191
|
+
'address',
|
|
192
|
+
'phone',
|
|
193
|
+
];
|
|
194
|
+
for (const scope of validOIDCScopes) {
|
|
195
|
+
(0, vitest_1.expect)(Object.values(schema_js_1.OIDCScope)).toContain(scope);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
(0, vitest_1.test)('AnyOAuthScope type should work with valid OAuth values', () => {
|
|
199
|
+
const validOAuthScopes = ['offline_access'];
|
|
200
|
+
for (const scope of validOAuthScopes) {
|
|
201
|
+
(0, vitest_1.expect)(Object.values(schema_js_1.OAuthScope)).toContain(scope);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
(0, vitest_1.test)('AnyScope type should work with any string', () => {
|
|
205
|
+
const validScopes = [
|
|
206
|
+
'openid',
|
|
207
|
+
'profile',
|
|
208
|
+
'offline_access',
|
|
209
|
+
'custom:read',
|
|
210
|
+
'api:write',
|
|
211
|
+
'admin:all',
|
|
212
|
+
];
|
|
213
|
+
// All should be valid as AnyScope includes string
|
|
214
|
+
for (const scope of validScopes) {
|
|
215
|
+
(0, vitest_1.expect)(typeof scope).toBe('string');
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
(0, vitest_1.test)('ScopeSchema should validate string values', () => {
|
|
219
|
+
const validScopes = [
|
|
220
|
+
'openid',
|
|
221
|
+
'profile email',
|
|
222
|
+
'custom:scope',
|
|
223
|
+
'api:read api:write',
|
|
224
|
+
'offline_access',
|
|
225
|
+
];
|
|
226
|
+
for (const scope of validScopes) {
|
|
227
|
+
const result = (0, schema_js_1.ScopeSchema)(scope);
|
|
228
|
+
(0, vitest_1.expect)(result).toBe(scope);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
(0, vitest_1.test)('ScopeSchema should reject non-string values', () => {
|
|
232
|
+
const invalidValues = [123, true, null, undefined, {}, []];
|
|
233
|
+
for (const value of invalidValues) {
|
|
234
|
+
const result = (0, schema_js_1.ScopeSchema)(value);
|
|
235
|
+
(0, vitest_1.expect)(result).toBeInstanceOf(arktype_1.type.errors);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
(0, vitest_1.describe)('Type consistency', () => {
|
|
240
|
+
(0, vitest_1.test)('should ensure all constants are properly typed', () => {
|
|
241
|
+
// Test that constants match their type definitions
|
|
242
|
+
const grantType = schema_js_1.GrantType.AUTHORIZATION_CODE;
|
|
243
|
+
(0, vitest_1.expect)(grantType).toBe('authorization_code');
|
|
244
|
+
const responseType = schema_js_1.ResponseType.CODE;
|
|
245
|
+
(0, vitest_1.expect)(responseType).toBe('code');
|
|
246
|
+
const challengeMethod = schema_js_1.CodeChallengeMethod.S256;
|
|
247
|
+
(0, vitest_1.expect)(challengeMethod).toBe('S256');
|
|
248
|
+
const display = schema_js_1.AuthorizationDisplay.PAGE;
|
|
249
|
+
(0, vitest_1.expect)(display).toBe('page');
|
|
250
|
+
const prompt = schema_js_1.AuthorizationPrompt.LOGIN;
|
|
251
|
+
(0, vitest_1.expect)(prompt).toBe('login');
|
|
252
|
+
});
|
|
253
|
+
(0, vitest_1.test)('should handle scope combinations correctly', () => {
|
|
254
|
+
const oidcScope = 'openid';
|
|
255
|
+
const oauthScope = 'offline_access';
|
|
256
|
+
const customScope = 'custom:permission';
|
|
257
|
+
(0, vitest_1.expect)(typeof oidcScope).toBe('string');
|
|
258
|
+
(0, vitest_1.expect)(typeof oauthScope).toBe('string');
|
|
259
|
+
(0, vitest_1.expect)(typeof customScope).toBe('string');
|
|
260
|
+
// Test that combined scope includes both OIDC and OAuth
|
|
261
|
+
(0, vitest_1.expect)(schema_js_1.Scope).toHaveProperty('OPENID');
|
|
262
|
+
(0, vitest_1.expect)(schema_js_1.Scope).toHaveProperty('OFFLINE_ACCESS');
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
(0, vitest_1.describe)('Schema edge cases', () => {
|
|
266
|
+
(0, vitest_1.test)('should handle empty strings appropriately', () => {
|
|
267
|
+
const emptyString = '';
|
|
268
|
+
const scopeResult = (0, schema_js_1.ScopeSchema)(emptyString);
|
|
269
|
+
(0, vitest_1.expect)(scopeResult).toBe(emptyString); // Empty string is valid string
|
|
270
|
+
const challengeResult = (0, schema_js_1.CodeChallengeMethodSchema)(emptyString);
|
|
271
|
+
(0, vitest_1.expect)(challengeResult).toBeInstanceOf(arktype_1.type.errors); // Empty string not valid enum
|
|
272
|
+
});
|
|
273
|
+
(0, vitest_1.test)('should handle whitespace and special characters', () => {
|
|
274
|
+
const spacedScope = ' openid profile ';
|
|
275
|
+
const result = (0, schema_js_1.ScopeSchema)(spacedScope);
|
|
276
|
+
(0, vitest_1.expect)(result).toBe(spacedScope); // Preserves whitespace
|
|
277
|
+
const specialScope = 'custom:read+write';
|
|
278
|
+
const specialResult = (0, schema_js_1.ScopeSchema)(specialScope);
|
|
279
|
+
(0, vitest_1.expect)(specialResult).toBe(specialScope);
|
|
280
|
+
});
|
|
281
|
+
(0, vitest_1.test)('should validate complex optional schema scenarios', () => {
|
|
282
|
+
const complexValid = (0, schema_js_1.OptionalSchema)({
|
|
283
|
+
audience: 'urn:example:audience',
|
|
284
|
+
});
|
|
285
|
+
(0, vitest_1.expect)(complexValid.audience).toBe('urn:example:audience');
|
|
286
|
+
const emptyValid = (0, schema_js_1.OptionalSchema)({});
|
|
287
|
+
(0, vitest_1.expect)(emptyValid).toEqual({});
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["../../../../../src/oauth/token/schema/schema.test.ts"],"names":[],"mappings":""}
|