@open-mercato/core 0.4.5-develop-2e9903a57a → 0.4.5-develop-eeccf7adf4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/dist/modules/auth/__integration__/TC-AUTH-001.spec.js +0 -9
- package/dist/modules/auth/__integration__/TC-AUTH-001.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-002.spec.js +0 -22
- package/dist/modules/auth/__integration__/TC-AUTH-002.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-003.spec.js +0 -21
- package/dist/modules/auth/__integration__/TC-AUTH-003.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-004.spec.js +0 -15
- package/dist/modules/auth/__integration__/TC-AUTH-004.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-005.spec.js +0 -11
- package/dist/modules/auth/__integration__/TC-AUTH-005.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-006.spec.js +0 -11
- package/dist/modules/auth/__integration__/TC-AUTH-006.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-007.spec.js +0 -14
- package/dist/modules/auth/__integration__/TC-AUTH-007.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-008.spec.js +0 -26
- package/dist/modules/auth/__integration__/TC-AUTH-008.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-009.spec.js +0 -16
- package/dist/modules/auth/__integration__/TC-AUTH-009.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-010.spec.js +0 -32
- package/dist/modules/auth/__integration__/TC-AUTH-010.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-011.spec.js +0 -26
- package/dist/modules/auth/__integration__/TC-AUTH-011.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-012.spec.js +0 -30
- package/dist/modules/auth/__integration__/TC-AUTH-012.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-013.spec.js +0 -41
- package/dist/modules/auth/__integration__/TC-AUTH-013.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-014.spec.js +0 -25
- package/dist/modules/auth/__integration__/TC-AUTH-014.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-015.spec.js +0 -20
- package/dist/modules/auth/__integration__/TC-AUTH-015.spec.js.map +0 -7
- package/dist/modules/auth/__integration__/TC-AUTH-016.spec.js +0 -76
- package/dist/modules/auth/__integration__/TC-AUTH-016.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-001.spec.js +0 -20
- package/dist/modules/catalog/__integration__/TC-CAT-001.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-002.spec.js +0 -12
- package/dist/modules/catalog/__integration__/TC-CAT-002.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-003.spec.js +0 -28
- package/dist/modules/catalog/__integration__/TC-CAT-003.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-004.spec.js +0 -33
- package/dist/modules/catalog/__integration__/TC-CAT-004.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-005.spec.js +0 -30
- package/dist/modules/catalog/__integration__/TC-CAT-005.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-006.spec.js +0 -31
- package/dist/modules/catalog/__integration__/TC-CAT-006.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-007.spec.js +0 -31
- package/dist/modules/catalog/__integration__/TC-CAT-007.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-008.spec.js +0 -65
- package/dist/modules/catalog/__integration__/TC-CAT-008.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-009.spec.js +0 -31
- package/dist/modules/catalog/__integration__/TC-CAT-009.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-010.spec.js +0 -28
- package/dist/modules/catalog/__integration__/TC-CAT-010.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-011.spec.js +0 -34
- package/dist/modules/catalog/__integration__/TC-CAT-011.spec.js.map +0 -7
- package/dist/modules/catalog/__integration__/TC-CAT-012.spec.js +0 -27
- package/dist/modules/catalog/__integration__/TC-CAT-012.spec.js.map +0 -7
- package/dist/modules/core/__integration__/admin/TC-ADMIN-001.spec.js +0 -44
- package/dist/modules/core/__integration__/admin/TC-ADMIN-001.spec.js.map +0 -7
- package/dist/modules/core/__integration__/admin/TC-ADMIN-002.spec.js +0 -53
- package/dist/modules/core/__integration__/admin/TC-ADMIN-002.spec.js.map +0 -7
- package/dist/modules/core/__integration__/admin/TC-ADMIN-003.spec.js +0 -26
- package/dist/modules/core/__integration__/admin/TC-ADMIN-003.spec.js.map +0 -7
- package/dist/modules/core/__integration__/admin/TC-ADMIN-004.spec.js +0 -47
- package/dist/modules/core/__integration__/admin/TC-ADMIN-004.spec.js.map +0 -7
- package/dist/modules/core/__integration__/admin/TC-ADMIN-005.spec.js +0 -33
- package/dist/modules/core/__integration__/admin/TC-ADMIN-005.spec.js.map +0 -7
- package/dist/modules/core/__integration__/admin/TC-ADMIN-006.spec.js +0 -30
- package/dist/modules/core/__integration__/admin/TC-ADMIN-006.spec.js.map +0 -7
- package/dist/modules/core/__integration__/admin/TC-ADMIN-007.spec.js +0 -36
- package/dist/modules/core/__integration__/admin/TC-ADMIN-007.spec.js.map +0 -7
- package/dist/modules/core/__integration__/admin/TC-ADMIN-008.spec.js +0 -113
- package/dist/modules/core/__integration__/admin/TC-ADMIN-008.spec.js.map +0 -7
- package/dist/modules/core/__integration__/admin/TC-ADMIN-009.spec.js +0 -25
- package/dist/modules/core/__integration__/admin/TC-ADMIN-009.spec.js.map +0 -7
- package/dist/modules/core/__integration__/admin/TC-ADMIN-010.spec.js +0 -35
- package/dist/modules/core/__integration__/admin/TC-ADMIN-010.spec.js.map +0 -7
- package/dist/modules/core/__integration__/helpers/api.js +0 -64
- package/dist/modules/core/__integration__/helpers/api.js.map +0 -7
- package/dist/modules/core/__integration__/helpers/auth.js +0 -98
- package/dist/modules/core/__integration__/helpers/auth.js.map +0 -7
- package/dist/modules/core/__integration__/helpers/authUi.js +0 -31
- package/dist/modules/core/__integration__/helpers/authUi.js.map +0 -7
- package/dist/modules/core/__integration__/helpers/catalogFixtures.js +0 -49
- package/dist/modules/core/__integration__/helpers/catalogFixtures.js.map +0 -7
- package/dist/modules/core/__integration__/helpers/crmFixtures.js +0 -73
- package/dist/modules/core/__integration__/helpers/crmFixtures.js.map +0 -7
- package/dist/modules/core/__integration__/helpers/salesFixtures.js +0 -63
- package/dist/modules/core/__integration__/helpers/salesFixtures.js.map +0 -7
- package/dist/modules/core/__integration__/helpers/salesUi.js +0 -464
- package/dist/modules/core/__integration__/helpers/salesUi.js.map +0 -7
- package/dist/modules/core/__integration__/integration/TC-INT-001.spec.js +0 -26
- package/dist/modules/core/__integration__/integration/TC-INT-001.spec.js.map +0 -7
- package/dist/modules/core/__integration__/integration/TC-INT-002.spec.js +0 -60
- package/dist/modules/core/__integration__/integration/TC-INT-002.spec.js.map +0 -7
- package/dist/modules/core/__integration__/integration/TC-INT-003.spec.js +0 -36
- package/dist/modules/core/__integration__/integration/TC-INT-003.spec.js.map +0 -7
- package/dist/modules/core/__integration__/integration/TC-INT-004.spec.js +0 -74
- package/dist/modules/core/__integration__/integration/TC-INT-004.spec.js.map +0 -7
- package/dist/modules/core/__integration__/integration/TC-INT-005.spec.js +0 -21
- package/dist/modules/core/__integration__/integration/TC-INT-005.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-001.spec.js +0 -32
- package/dist/modules/customers/__integration__/TC-CRM-001.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-002.spec.js +0 -35
- package/dist/modules/customers/__integration__/TC-CRM-002.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-003.spec.js +0 -40
- package/dist/modules/customers/__integration__/TC-CRM-003.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-004.spec.js +0 -40
- package/dist/modules/customers/__integration__/TC-CRM-004.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-005.spec.js +0 -37
- package/dist/modules/customers/__integration__/TC-CRM-005.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-006.spec.js +0 -42
- package/dist/modules/customers/__integration__/TC-CRM-006.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-007.spec.js +0 -44
- package/dist/modules/customers/__integration__/TC-CRM-007.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-008.spec.js +0 -50
- package/dist/modules/customers/__integration__/TC-CRM-008.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-009.spec.js +0 -33
- package/dist/modules/customers/__integration__/TC-CRM-009.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-010.spec.js +0 -39
- package/dist/modules/customers/__integration__/TC-CRM-010.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-011.spec.js +0 -37
- package/dist/modules/customers/__integration__/TC-CRM-011.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-012.spec.js +0 -38
- package/dist/modules/customers/__integration__/TC-CRM-012.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-013.spec.js +0 -43
- package/dist/modules/customers/__integration__/TC-CRM-013.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-014.spec.js +0 -23
- package/dist/modules/customers/__integration__/TC-CRM-014.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-015.spec.js +0 -63
- package/dist/modules/customers/__integration__/TC-CRM-015.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-016.spec.js +0 -46
- package/dist/modules/customers/__integration__/TC-CRM-016.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-017.spec.js +0 -29
- package/dist/modules/customers/__integration__/TC-CRM-017.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-018.spec.js +0 -52
- package/dist/modules/customers/__integration__/TC-CRM-018.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-019.spec.js +0 -37
- package/dist/modules/customers/__integration__/TC-CRM-019.spec.js.map +0 -7
- package/dist/modules/customers/__integration__/TC-CRM-020.spec.js +0 -65
- package/dist/modules/customers/__integration__/TC-CRM-020.spec.js.map +0 -7
- package/dist/modules/progress/__integration__/TC-PROG-001.spec.js +0 -51
- package/dist/modules/progress/__integration__/TC-PROG-001.spec.js.map +0 -7
- package/dist/modules/resources/__integration__/TC-INT-007.spec.js +0 -88
- package/dist/modules/resources/__integration__/TC-INT-007.spec.js.map +0 -7
- package/dist/modules/resources/__integration__/helpers/resourcesFixtures.js +0 -45
- package/dist/modules/resources/__integration__/helpers/resourcesFixtures.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-001.spec.js +0 -20
- package/dist/modules/sales/__integration__/TC-SALES-001.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-002.spec.js +0 -31
- package/dist/modules/sales/__integration__/TC-SALES-002.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-003.spec.js +0 -13
- package/dist/modules/sales/__integration__/TC-SALES-003.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-004.spec.js +0 -14
- package/dist/modules/sales/__integration__/TC-SALES-004.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-005.spec.js +0 -15
- package/dist/modules/sales/__integration__/TC-SALES-005.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-006.spec.js +0 -20
- package/dist/modules/sales/__integration__/TC-SALES-006.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-007.spec.js +0 -19
- package/dist/modules/sales/__integration__/TC-SALES-007.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-008.spec.js +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-008.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-009.spec.js +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-009.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-010.spec.js +0 -16
- package/dist/modules/sales/__integration__/TC-SALES-010.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-011.spec.js +0 -20
- package/dist/modules/sales/__integration__/TC-SALES-011.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-012.spec.js +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-012.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-013.spec.js +0 -66
- package/dist/modules/sales/__integration__/TC-SALES-013.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-014.spec.js +0 -13
- package/dist/modules/sales/__integration__/TC-SALES-014.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-015.spec.js +0 -13
- package/dist/modules/sales/__integration__/TC-SALES-015.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-016.spec.js +0 -13
- package/dist/modules/sales/__integration__/TC-SALES-016.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-017.spec.js +0 -44
- package/dist/modules/sales/__integration__/TC-SALES-017.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-018.spec.js +0 -18
- package/dist/modules/sales/__integration__/TC-SALES-018.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-019.spec.js +0 -16
- package/dist/modules/sales/__integration__/TC-SALES-019.spec.js.map +0 -7
- package/dist/modules/sales/__integration__/TC-SALES-020.spec.js +0 -75
- package/dist/modules/sales/__integration__/TC-SALES-020.spec.js.map +0 -7
- package/dist/modules/staff/__integration__/TC-INT-006.spec.js +0 -64
- package/dist/modules/staff/__integration__/TC-INT-006.spec.js.map +0 -7
- package/dist/modules/translations/__integration__/TC-TRANS-001.spec.js +0 -48
- package/dist/modules/translations/__integration__/TC-TRANS-001.spec.js.map +0 -7
- package/dist/modules/translations/__integration__/TC-TRANS-002.spec.js +0 -94
- package/dist/modules/translations/__integration__/TC-TRANS-002.spec.js.map +0 -7
- package/dist/modules/translations/__integration__/TC-TRANS-003.spec.js +0 -61
- package/dist/modules/translations/__integration__/TC-TRANS-003.spec.js.map +0 -7
- package/dist/modules/translations/__integration__/TC-TRANS-004.spec.js +0 -52
- package/dist/modules/translations/__integration__/TC-TRANS-004.spec.js.map +0 -7
- package/dist/modules/translations/__integration__/TC-TRANS-005.spec.js +0 -106
- package/dist/modules/translations/__integration__/TC-TRANS-005.spec.js.map +0 -7
- package/dist/modules/translations/__integration__/TC-TRANS-006.spec.js +0 -94
- package/dist/modules/translations/__integration__/TC-TRANS-006.spec.js.map +0 -7
- package/dist/modules/translations/__integration__/TC-TRANS-007.spec.js +0 -62
- package/dist/modules/translations/__integration__/TC-TRANS-007.spec.js.map +0 -7
- package/dist/modules/translations/__integration__/TC-TRANS-008.spec.js +0 -168
- package/dist/modules/translations/__integration__/TC-TRANS-008.spec.js.map +0 -7
- package/dist/modules/translations/__integration__/helpers/translationFixtures.js +0 -63
- package/dist/modules/translations/__integration__/helpers/translationFixtures.js.map +0 -7
- package/dist/modules/workflows/__integration__/TC-WF-001.spec.js +0 -73
- package/dist/modules/workflows/__integration__/TC-WF-001.spec.js.map +0 -7
- package/src/__tests__/module-decoupling.test.ts +0 -356
- package/src/modules/api_keys/api/__tests__/keys.route.test.ts +0 -244
- package/src/modules/attachments/api/__tests__/attachments.api.test.ts +0 -240
- package/src/modules/attachments/components/__tests__/AttachmentContentPreview.test.tsx +0 -45
- package/src/modules/attachments/data/__tests__/entities-ocr.test.ts +0 -15
- package/src/modules/attachments/lib/__tests__/ocr-config.test.ts +0 -27
- package/src/modules/attachments/lib/__tests__/textExtraction.test.ts +0 -64
- package/src/modules/audit_logs/api/__tests__/access.route.test.ts +0 -118
- package/src/modules/audit_logs/api/__tests__/redo.route.test.ts +0 -131
- package/src/modules/audit_logs/api/__tests__/undo.route.test.ts +0 -103
- package/src/modules/audit_logs/services/__tests__/actionLogService.test.ts +0 -26
- package/src/modules/auth/__integration__/TC-AUTH-001.spec.ts +0 -13
- package/src/modules/auth/__integration__/TC-AUTH-002.spec.ts +0 -30
- package/src/modules/auth/__integration__/TC-AUTH-003.spec.ts +0 -28
- package/src/modules/auth/__integration__/TC-AUTH-004.spec.ts +0 -21
- package/src/modules/auth/__integration__/TC-AUTH-005.spec.ts +0 -17
- package/src/modules/auth/__integration__/TC-AUTH-006.spec.ts +0 -17
- package/src/modules/auth/__integration__/TC-AUTH-007.spec.ts +0 -19
- package/src/modules/auth/__integration__/TC-AUTH-008.spec.ts +0 -31
- package/src/modules/auth/__integration__/TC-AUTH-009.spec.ts +0 -22
- package/src/modules/auth/__integration__/TC-AUTH-010.spec.ts +0 -39
- package/src/modules/auth/__integration__/TC-AUTH-011.spec.ts +0 -35
- package/src/modules/auth/__integration__/TC-AUTH-012.spec.ts +0 -36
- package/src/modules/auth/__integration__/TC-AUTH-013.spec.ts +0 -48
- package/src/modules/auth/__integration__/TC-AUTH-014.spec.ts +0 -31
- package/src/modules/auth/__integration__/TC-AUTH-015.spec.ts +0 -28
- package/src/modules/auth/__integration__/TC-AUTH-016.spec.ts +0 -109
- package/src/modules/auth/__tests__/cli-rotate-encryption.test.ts +0 -97
- package/src/modules/auth/__tests__/cli-setup-acl.test.ts +0 -148
- package/src/modules/auth/api/__tests__/feature-check.test.ts +0 -65
- package/src/modules/auth/api/__tests__/login.test.ts +0 -47
- package/src/modules/auth/commands/__tests__/roles.custom-fields.test.ts +0 -126
- package/src/modules/auth/commands/__tests__/users.custom-fields.test.ts +0 -147
- package/src/modules/auth/lib/__tests__/rateLimitCheck.test.ts +0 -224
- package/src/modules/auth/services/__tests__/authService.test.ts +0 -32
- package/src/modules/auth/services/__tests__/rbacService.test.ts +0 -814
- package/src/modules/business_rules/api/__tests__/execute.route.test.ts +0 -311
- package/src/modules/business_rules/api/__tests__/logs-detail.route.test.ts +0 -181
- package/src/modules/business_rules/api/__tests__/logs.route.test.ts +0 -261
- package/src/modules/business_rules/api/__tests__/rules-detail.route.test.ts +0 -115
- package/src/modules/business_rules/api/__tests__/rules.route.test.ts +0 -746
- package/src/modules/business_rules/api/__tests__/sets-detail.route.test.ts +0 -169
- package/src/modules/business_rules/api/__tests__/sets-members.route.test.ts +0 -367
- package/src/modules/business_rules/api/__tests__/sets.route.test.ts +0 -361
- package/src/modules/business_rules/api/__tests__/test-helpers.ts +0 -42
- package/src/modules/business_rules/components/utils/__tests__/formHelpers.test.ts +0 -69
- package/src/modules/business_rules/data/__tests__/validators.test.ts +0 -637
- package/src/modules/business_rules/lib/__tests__/action-executor.test.ts +0 -728
- package/src/modules/business_rules/lib/__tests__/expression-evaluator.test.ts +0 -592
- package/src/modules/business_rules/lib/__tests__/rule-engine.test.ts +0 -805
- package/src/modules/business_rules/lib/__tests__/rule-evaluator.test.ts +0 -436
- package/src/modules/catalog/__integration__/TC-CAT-001.spec.ts +0 -32
- package/src/modules/catalog/__integration__/TC-CAT-002.spec.ts +0 -19
- package/src/modules/catalog/__integration__/TC-CAT-003.spec.ts +0 -39
- package/src/modules/catalog/__integration__/TC-CAT-004.spec.ts +0 -41
- package/src/modules/catalog/__integration__/TC-CAT-005.spec.ts +0 -37
- package/src/modules/catalog/__integration__/TC-CAT-006.spec.ts +0 -40
- package/src/modules/catalog/__integration__/TC-CAT-007.spec.ts +0 -37
- package/src/modules/catalog/__integration__/TC-CAT-008.spec.ts +0 -76
- package/src/modules/catalog/__integration__/TC-CAT-009.spec.ts +0 -39
- package/src/modules/catalog/__integration__/TC-CAT-010.spec.ts +0 -36
- package/src/modules/catalog/__integration__/TC-CAT-011.spec.ts +0 -44
- package/src/modules/catalog/__integration__/TC-CAT-012.spec.ts +0 -35
- package/src/modules/catalog/api/__tests__/offers.route.test.ts +0 -161
- package/src/modules/catalog/api/__tests__/prices.route.test.ts +0 -39
- package/src/modules/catalog/api/__tests__/products.route.test.ts +0 -91
- package/src/modules/catalog/api/__tests__/utils.test.ts +0 -36
- package/src/modules/catalog/api/__tests__/variants.route.test.ts +0 -44
- package/src/modules/catalog/backend/catalog/products/__tests__/ProductsDataTable.test.tsx +0 -172
- package/src/modules/catalog/commands/__tests__/products.delete.test.ts +0 -146
- package/src/modules/catalog/commands/__tests__/products.update.test.ts +0 -142
- package/src/modules/catalog/commands/__tests__/registration.test.ts +0 -54
- package/src/modules/catalog/commands/__tests__/shared.test.ts +0 -129
- package/src/modules/catalog/components/__tests__/catalogComponentsRender.test.tsx +0 -373
- package/src/modules/catalog/components/products/__tests__/ProductImageCell.test.tsx +0 -51
- package/src/modules/catalog/components/products/__tests__/productForm.test.ts +0 -32
- package/src/modules/catalog/lib/__tests__/pricing.test.ts +0 -150
- package/src/modules/catalog/services/__tests__/catalogPricingService.test.ts +0 -21
- package/src/modules/configs/components/__tests__/CachePanel.test.tsx +0 -134
- package/src/modules/configs/components/__tests__/SystemStatusPanel.test.tsx +0 -93
- package/src/modules/configs/lib/__tests__/system-status.test.ts +0 -55
- package/src/modules/configs/lib/__tests__/upgrade-actions.test.ts +0 -135
- package/src/modules/core/__integration__/admin/TC-ADMIN-001.spec.ts +0 -70
- package/src/modules/core/__integration__/admin/TC-ADMIN-002.spec.ts +0 -83
- package/src/modules/core/__integration__/admin/TC-ADMIN-003.spec.ts +0 -50
- package/src/modules/core/__integration__/admin/TC-ADMIN-004.spec.ts +0 -77
- package/src/modules/core/__integration__/admin/TC-ADMIN-005.spec.ts +0 -49
- package/src/modules/core/__integration__/admin/TC-ADMIN-006.spec.ts +0 -59
- package/src/modules/core/__integration__/admin/TC-ADMIN-007.spec.ts +0 -68
- package/src/modules/core/__integration__/admin/TC-ADMIN-008.spec.ts +0 -127
- package/src/modules/core/__integration__/admin/TC-ADMIN-009.spec.ts +0 -48
- package/src/modules/core/__integration__/admin/TC-ADMIN-010.spec.ts +0 -57
- package/src/modules/core/__integration__/helpers/api.ts +0 -84
- package/src/modules/core/__integration__/helpers/auth.ts +0 -110
- package/src/modules/core/__integration__/helpers/authUi.ts +0 -33
- package/src/modules/core/__integration__/helpers/catalogFixtures.ts +0 -73
- package/src/modules/core/__integration__/helpers/crmFixtures.ts +0 -101
- package/src/modules/core/__integration__/helpers/salesFixtures.ts +0 -89
- package/src/modules/core/__integration__/helpers/salesUi.ts +0 -528
- package/src/modules/core/__integration__/integration/TC-INT-001.spec.ts +0 -34
- package/src/modules/core/__integration__/integration/TC-INT-002.spec.ts +0 -74
- package/src/modules/core/__integration__/integration/TC-INT-003.spec.ts +0 -43
- package/src/modules/core/__integration__/integration/TC-INT-004.spec.ts +0 -82
- package/src/modules/core/__integration__/integration/TC-INT-005.spec.ts +0 -29
- package/src/modules/currencies/backend/exchange-rates/__tests__/formatDateTimeLocal.test.ts +0 -78
- package/src/modules/currencies/data/__tests__/validators.test.ts +0 -100
- package/src/modules/currencies/services/__tests__/exchangeRateService.test.ts +0 -666
- package/src/modules/currencies/services/__tests__/rateFetchingService.basic.test.ts +0 -398
- package/src/modules/currencies/services/__tests__/rateFetchingService.errors.test.ts +0 -296
- package/src/modules/currencies/services/__tests__/rateFetchingService.providers.test.ts +0 -350
- package/src/modules/currencies/services/__tests__/rateFetchingService.setup.ts +0 -188
- package/src/modules/customers/__integration__/TC-CRM-001.spec.ts +0 -42
- package/src/modules/customers/__integration__/TC-CRM-002.spec.ts +0 -47
- package/src/modules/customers/__integration__/TC-CRM-003.spec.ts +0 -55
- package/src/modules/customers/__integration__/TC-CRM-004.spec.ts +0 -57
- package/src/modules/customers/__integration__/TC-CRM-005.spec.ts +0 -50
- package/src/modules/customers/__integration__/TC-CRM-006.spec.ts +0 -60
- package/src/modules/customers/__integration__/TC-CRM-007.spec.ts +0 -57
- package/src/modules/customers/__integration__/TC-CRM-008.spec.ts +0 -62
- package/src/modules/customers/__integration__/TC-CRM-009.spec.ts +0 -46
- package/src/modules/customers/__integration__/TC-CRM-010.spec.ts +0 -49
- package/src/modules/customers/__integration__/TC-CRM-011.spec.ts +0 -47
- package/src/modules/customers/__integration__/TC-CRM-012.spec.ts +0 -49
- package/src/modules/customers/__integration__/TC-CRM-013.spec.ts +0 -61
- package/src/modules/customers/__integration__/TC-CRM-014.spec.ts +0 -31
- package/src/modules/customers/__integration__/TC-CRM-015.spec.ts +0 -89
- package/src/modules/customers/__integration__/TC-CRM-016.spec.ts +0 -55
- package/src/modules/customers/__integration__/TC-CRM-017.spec.ts +0 -37
- package/src/modules/customers/__integration__/TC-CRM-018.spec.ts +0 -62
- package/src/modules/customers/__integration__/TC-CRM-019.spec.ts +0 -44
- package/src/modules/customers/__integration__/TC-CRM-020.spec.ts +0 -73
- package/src/modules/customers/api/__tests__/utils.test.ts +0 -61
- package/src/modules/customers/api/dashboard/widgets/new-deals/__tests__/route.test.ts +0 -54
- package/src/modules/customers/commands/__tests__/shared.test.ts +0 -263
- package/src/modules/customers/commands/__tests__/undo.custom-fields.test.ts +0 -1184
- package/src/modules/customers/components/detail/__tests__/ActivityForm.validation.test.ts +0 -37
- package/src/modules/customers/components/detail/__tests__/DealForm.validation.test.ts +0 -45
- package/src/modules/customers/components/detail/__tests__/InlineEditors.test.tsx +0 -166
- package/src/modules/customers/components/detail/__tests__/TaskForm.submit.test.ts +0 -21
- package/src/modules/customers/components/detail/hooks/__tests__/useCustomerDictionary.test.ts +0 -97
- package/src/modules/customers/lib/__tests__/customFieldRouting.test.ts +0 -107
- package/src/modules/customers/utils/__tests__/addressFormat.test.ts +0 -105
- package/src/modules/customers/utils/__tests__/phoneDuplicates.test.ts +0 -98
- package/src/modules/dashboards/__tests__/widgets.test.ts +0 -70
- package/src/modules/dashboards/lib/__tests__/aggregations.test.ts +0 -328
- package/src/modules/dashboards/lib/__tests__/formatters.test.ts +0 -128
- package/src/modules/directory/backend/directory/organizations/__tests__/create-submit.test.ts +0 -46
- package/src/modules/directory/backend/directory/organizations/__tests__/edit-submit.test.ts +0 -49
- package/src/modules/directory/components/__tests__/OrganizationSelect.test.tsx +0 -71
- package/src/modules/directory/components/__tests__/TenantSelect.test.tsx +0 -75
- package/src/modules/entities/__tests__/cli-decrypt-database.test.ts +0 -534
- package/src/modules/entities/__tests__/cli-rotate-encryption.test.ts +0 -123
- package/src/modules/entities/api/__tests__/encryption.api.test.ts +0 -57
- package/src/modules/entities/api/__tests__/records.get.custom-entity.test.ts +0 -43
- package/src/modules/entities/api/__tests__/records.validation.test.ts +0 -53
- package/src/modules/entities/backend/entities/user/__tests__/create-entity-submit.test.ts +0 -47
- package/src/modules/entities/backend/entities/user/__tests__/records-submit.test.ts +0 -104
- package/src/modules/feature_toggles/commands/__tests__/global.test.ts +0 -325
- package/src/modules/feature_toggles/commands/__tests__/overrides.test.ts +0 -186
- package/src/modules/feature_toggles/lib/__tests__/feature-flag-check.test.ts +0 -365
- package/src/modules/feature_toggles/lib/__tests__/queries.test.ts +0 -130
- package/src/modules/inbox_ops/api/emails/[id]/reprocess/__tests__/route.test.ts +0 -194
- package/src/modules/inbox_ops/api/proposals/[id]/__tests__/route.test.ts +0 -124
- package/src/modules/inbox_ops/api/proposals/[id]/accept-all/__tests__/route.test.ts +0 -154
- package/src/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/__tests__/route.test.ts +0 -200
- package/src/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/accept/__tests__/route.test.ts +0 -261
- package/src/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/reject/__tests__/route.test.ts +0 -201
- package/src/modules/inbox_ops/api/proposals/[id]/reject/__tests__/route.test.ts +0 -123
- package/src/modules/inbox_ops/api/proposals/[id]/replies/[replyId]/send/__tests__/route.test.ts +0 -232
- package/src/modules/inbox_ops/api/proposals/[id]/translate/__tests__/route.test.ts +0 -173
- package/src/modules/inbox_ops/api/proposals/__tests__/route.test.ts +0 -185
- package/src/modules/inbox_ops/api/webhook/__tests__/inbound.test.ts +0 -317
- package/src/modules/inbox_ops/data/__tests__/validators.test.ts +0 -463
- package/src/modules/inbox_ops/lib/__tests__/catalogLookup.test.ts +0 -143
- package/src/modules/inbox_ops/lib/__tests__/contactMatcher.test.ts +0 -158
- package/src/modules/inbox_ops/lib/__tests__/emailParser.test.ts +0 -191
- package/src/modules/inbox_ops/lib/__tests__/executionEngine.test.ts +0 -1419
- package/src/modules/inbox_ops/lib/__tests__/extractionPrompt.test.ts +0 -151
- package/src/modules/inbox_ops/lib/__tests__/priceValidator.test.ts +0 -259
- package/src/modules/inbox_ops/lib/__tests__/translationProvider.test.ts +0 -99
- package/src/modules/inbox_ops/subscribers/__tests__/extractionWorker.test.ts +0 -803
- package/src/modules/notifications/__tests__/deliver-notification.test.ts +0 -285
- package/src/modules/notifications/__tests__/deliveryStrategies.test.ts +0 -19
- package/src/modules/notifications/__tests__/notificationService.test.ts +0 -248
- package/src/modules/planner/__tests__/availabilityMerge.test.ts +0 -99
- package/src/modules/planner/__tests__/plannerAvailabilityService.test.ts +0 -89
- package/src/modules/planner/data/__tests__/validators.test.ts +0 -78
- package/src/modules/progress/__integration__/TC-PROG-001.spec.ts +0 -67
- package/src/modules/progress/__tests__/progressService.test.ts +0 -377
- package/src/modules/query_index/__tests__/hybrid-engine.test.ts +0 -365
- package/src/modules/query_index/__tests__/indexer.test.ts +0 -175
- package/src/modules/resources/__integration__/TC-INT-007.spec.ts +0 -110
- package/src/modules/resources/__integration__/helpers/resourcesFixtures.ts +0 -50
- package/src/modules/resources/data/__tests__/validators.test.ts +0 -65
- package/src/modules/sales/__integration__/TC-SALES-001.spec.ts +0 -26
- package/src/modules/sales/__integration__/TC-SALES-002.spec.ts +0 -38
- package/src/modules/sales/__integration__/TC-SALES-003.spec.ts +0 -18
- package/src/modules/sales/__integration__/TC-SALES-004.spec.ts +0 -19
- package/src/modules/sales/__integration__/TC-SALES-005.spec.ts +0 -21
- package/src/modules/sales/__integration__/TC-SALES-006.spec.ts +0 -26
- package/src/modules/sales/__integration__/TC-SALES-007.spec.ts +0 -23
- package/src/modules/sales/__integration__/TC-SALES-008.spec.ts +0 -11
- package/src/modules/sales/__integration__/TC-SALES-009.spec.ts +0 -12
- package/src/modules/sales/__integration__/TC-SALES-010.spec.ts +0 -20
- package/src/modules/sales/__integration__/TC-SALES-011.spec.ts +0 -26
- package/src/modules/sales/__integration__/TC-SALES-012.spec.ts +0 -12
- package/src/modules/sales/__integration__/TC-SALES-013.spec.ts +0 -73
- package/src/modules/sales/__integration__/TC-SALES-014.spec.ts +0 -17
- package/src/modules/sales/__integration__/TC-SALES-015.spec.ts +0 -17
- package/src/modules/sales/__integration__/TC-SALES-016.spec.ts +0 -17
- package/src/modules/sales/__integration__/TC-SALES-017.spec.ts +0 -60
- package/src/modules/sales/__integration__/TC-SALES-018.spec.ts +0 -25
- package/src/modules/sales/__integration__/TC-SALES-019.spec.ts +0 -22
- package/src/modules/sales/__integration__/TC-SALES-020.spec.ts +0 -107
- package/src/modules/sales/api/__tests__/channels.route.test.ts +0 -50
- package/src/modules/sales/api/__tests__/document-history.test.ts +0 -146
- package/src/modules/sales/api/__tests__/documents.factory.test.ts +0 -98
- package/src/modules/sales/api/__tests__/documents.routes.test.ts +0 -149
- package/src/modules/sales/api/__tests__/quotes.acceptance.test.ts +0 -209
- package/src/modules/sales/api/__tests__/timeline.test.tsx +0 -165
- package/src/modules/sales/api/dashboard/widgets/new-orders/__tests__/route.test.ts +0 -112
- package/src/modules/sales/api/dashboard/widgets/new-quotes/__tests__/route.test.ts +0 -116
- package/src/modules/sales/commands/__tests__/documents.cache.test.ts +0 -126
- package/src/modules/sales/commands/__tests__/documents.undo.test.ts +0 -170
- package/src/modules/sales/commands/__tests__/registration.test.ts +0 -141
- package/src/modules/sales/components/__tests__/salesComponentsRender.test.tsx +0 -456
- package/src/modules/sales/lib/__tests__/calculations.test.ts +0 -210
- package/src/modules/sales/services/__tests__/salesCalculationService.test.ts +0 -181
- package/src/modules/sales/services/__tests__/taxCalculationService.test.ts +0 -79
- package/src/modules/sales/widgets/dashboard/new-orders/__tests__/config.test.ts +0 -47
- package/src/modules/sales/widgets/dashboard/new-quotes/__tests__/config.test.ts +0 -47
- package/src/modules/staff/__integration__/TC-INT-006.spec.ts +0 -71
- package/src/modules/staff/data/__tests__/validators.test.ts +0 -60
- package/src/modules/translations/__integration__/TC-TRANS-001.spec.ts +0 -57
- package/src/modules/translations/__integration__/TC-TRANS-002.spec.ts +0 -114
- package/src/modules/translations/__integration__/TC-TRANS-003.spec.ts +0 -71
- package/src/modules/translations/__integration__/TC-TRANS-004.spec.ts +0 -66
- package/src/modules/translations/__integration__/TC-TRANS-005.spec.ts +0 -135
- package/src/modules/translations/__integration__/TC-TRANS-006.spec.ts +0 -113
- package/src/modules/translations/__integration__/TC-TRANS-007.spec.ts +0 -80
- package/src/modules/translations/__integration__/TC-TRANS-008.spec.ts +0 -209
- package/src/modules/translations/__integration__/helpers/translationFixtures.ts +0 -95
- package/src/modules/translations/api/__tests__/locales.test.ts +0 -67
- package/src/modules/translations/data/__tests__/validators.test.ts +0 -143
- package/src/modules/translations/lib/__tests__/extract-record-id.test.ts +0 -75
- package/src/modules/translations/lib/__tests__/helpers.test.ts +0 -215
- package/src/modules/translations/lib/__tests__/locale.test.ts +0 -115
- package/src/modules/translations/lib/__tests__/resolve-field-list.test.ts +0 -176
- package/src/modules/translations/lib/__tests__/translatable-fields.test.ts +0 -79
- package/src/modules/translations/widgets/__tests__/injection-table.test.ts +0 -83
- package/src/modules/workflows/__integration__/TC-WF-001.spec.ts +0 -114
- package/src/modules/workflows/api/__tests__/definitions.route.test.ts +0 -762
- package/src/modules/workflows/api/__tests__/instances.route.test.ts +0 -869
- package/src/modules/workflows/data/__tests__/validators.test.ts +0 -707
- package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +0 -1230
- package/src/modules/workflows/lib/__tests__/call-api.test.ts +0 -421
- package/src/modules/workflows/lib/__tests__/compensation.test.ts +0 -713
- package/src/modules/workflows/lib/__tests__/event-logger.test.ts +0 -615
- package/src/modules/workflows/lib/__tests__/integration.test.ts +0 -693
- package/src/modules/workflows/lib/__tests__/signals.test.ts +0 -566
- package/src/modules/workflows/lib/__tests__/step-handler.test.ts +0 -670
- package/src/modules/workflows/lib/__tests__/sub-workflow.test.ts +0 -934
- package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +0 -925
- package/src/modules/workflows/lib/__tests__/workflow-executor.test.ts +0 -684
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-mercato/core",
|
|
3
|
-
"version": "0.4.5-develop-
|
|
3
|
+
"version": "0.4.5-develop-eeccf7adf4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
}
|
|
208
208
|
},
|
|
209
209
|
"dependencies": {
|
|
210
|
-
"@open-mercato/shared": "0.4.5-develop-
|
|
210
|
+
"@open-mercato/shared": "0.4.5-develop-eeccf7adf4",
|
|
211
211
|
"@types/semver": "^7.5.8",
|
|
212
212
|
"@xyflow/react": "^12.6.0",
|
|
213
213
|
"ai": "^6.0.0",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
test.describe("TC-AUTH-001: Successful User Login", () => {
|
|
4
|
-
test("should login with valid credentials and redirect to dashboard", async ({ page }) => {
|
|
5
|
-
await login(page, "admin");
|
|
6
|
-
await expect(page).toHaveURL(/\/backend/);
|
|
7
|
-
});
|
|
8
|
-
});
|
|
9
|
-
//# sourceMappingURL=TC-AUTH-001.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-001.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { test, expect } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\n\n/**\n * TC-AUTH-001: Successful User Login\n * Source: .ai/qa/scenarios/TC-AUTH-001-user-login-success.md\n */\ntest.describe('TC-AUTH-001: Successful User Login', () => {\n test('should login with valid credentials and redirect to dashboard', async ({ page }) => {\n await login(page, 'admin');\n await expect(page).toHaveURL(/\\/backend/);\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,MAAM,cAAc;AAC7B,SAAS,aAAa;AAMtB,KAAK,SAAS,sCAAsC,MAAM;AACxD,OAAK,iEAAiE,OAAO,EAAE,KAAK,MAAM;AACxF,UAAM,MAAM,MAAM,OAAO;AACzB,UAAM,OAAO,IAAI,EAAE,UAAU,WAAW;AAAA,EAC1C,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
test.describe("TC-AUTH-002: Login Failure with Invalid Credentials", () => {
|
|
3
|
-
test("should reject invalid credentials with a generic error", async ({ page }) => {
|
|
4
|
-
const baseUrl = process.env.BASE_URL || "http://localhost:3000";
|
|
5
|
-
await page.context().addCookies([
|
|
6
|
-
{ name: "om_demo_notice_ack", value: "ack", url: baseUrl, sameSite: "Lax" },
|
|
7
|
-
{ name: "om_cookie_notice_ack", value: "ack", url: baseUrl, sameSite: "Lax" }
|
|
8
|
-
]);
|
|
9
|
-
await page.goto("/login");
|
|
10
|
-
await page.getByLabel("Email").fill("admin@acme.com");
|
|
11
|
-
await page.getByLabel("Password").fill("wrong-password");
|
|
12
|
-
await page.getByLabel("Password").press("Enter");
|
|
13
|
-
await expect(page).toHaveURL(/\/login$/);
|
|
14
|
-
await expect(page.getByText(/invalid email or password|invalid credentials/i).first()).toBeVisible();
|
|
15
|
-
await page.getByLabel("Email").fill(`not-found-${Date.now()}@acme.com`);
|
|
16
|
-
await page.getByLabel("Password").fill("wrong-password");
|
|
17
|
-
await page.getByLabel("Password").press("Enter");
|
|
18
|
-
await expect(page).toHaveURL(/\/login$/);
|
|
19
|
-
await expect(page.getByText(/invalid email or password|invalid credentials/i).first()).toBeVisible();
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
//# sourceMappingURL=TC-AUTH-002.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-002.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\n\n/**\n * TC-AUTH-002: Login Failure with Invalid Credentials\n * Source: .ai/qa/scenarios/TC-AUTH-002-user-login-invalid-credentials.md\n */\ntest.describe('TC-AUTH-002: Login Failure with Invalid Credentials', () => {\n test('should reject invalid credentials with a generic error', async ({ page }) => {\n const baseUrl = process.env.BASE_URL || 'http://localhost:3000';\n await page.context().addCookies([\n { name: 'om_demo_notice_ack', value: 'ack', url: baseUrl, sameSite: 'Lax' },\n { name: 'om_cookie_notice_ack', value: 'ack', url: baseUrl, sameSite: 'Lax' },\n ]);\n\n await page.goto('/login');\n await page.getByLabel('Email').fill('admin@acme.com');\n await page.getByLabel('Password').fill('wrong-password');\n await page.getByLabel('Password').press('Enter');\n\n await expect(page).toHaveURL(/\\/login$/);\n await expect(page.getByText(/invalid email or password|invalid credentials/i).first()).toBeVisible();\n\n await page.getByLabel('Email').fill(`not-found-${Date.now()}@acme.com`);\n await page.getByLabel('Password').fill('wrong-password');\n await page.getByLabel('Password').press('Enter');\n\n await expect(page).toHaveURL(/\\/login$/);\n await expect(page.getByText(/invalid email or password|invalid credentials/i).first()).toBeVisible();\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAM7B,KAAK,SAAS,uDAAuD,MAAM;AACzE,OAAK,0DAA0D,OAAO,EAAE,KAAK,MAAM;AACjF,UAAM,UAAU,QAAQ,IAAI,YAAY;AACxC,UAAM,KAAK,QAAQ,EAAE,WAAW;AAAA,MAC9B,EAAE,MAAM,sBAAsB,OAAO,OAAO,KAAK,SAAS,UAAU,MAAM;AAAA,MAC1E,EAAE,MAAM,wBAAwB,OAAO,OAAO,KAAK,SAAS,UAAU,MAAM;AAAA,IAC9E,CAAC;AAED,UAAM,KAAK,KAAK,QAAQ;AACxB,UAAM,KAAK,WAAW,OAAO,EAAE,KAAK,gBAAgB;AACpD,UAAM,KAAK,WAAW,UAAU,EAAE,KAAK,gBAAgB;AACvD,UAAM,KAAK,WAAW,UAAU,EAAE,MAAM,OAAO;AAE/C,UAAM,OAAO,IAAI,EAAE,UAAU,UAAU;AACvC,UAAM,OAAO,KAAK,UAAU,gDAAgD,EAAE,MAAM,CAAC,EAAE,YAAY;AAEnG,UAAM,KAAK,WAAW,OAAO,EAAE,KAAK,aAAa,KAAK,IAAI,CAAC,WAAW;AACtE,UAAM,KAAK,WAAW,UAAU,EAAE,KAAK,gBAAgB;AACvD,UAAM,KAAK,WAAW,UAAU,EAAE,MAAM,OAAO;AAE/C,UAAM,OAAO,IAAI,EAAE,UAAU,UAAU;AACvC,UAAM,OAAO,KAAK,UAAU,gDAAgD,EAAE,MAAM,CAAC,EAAE,YAAY;AAAA,EACrG,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
test.describe("TC-AUTH-003: Login with Remember Me", () => {
|
|
3
|
-
test("should set both auth and session cookies when remember me is enabled", async ({ page }) => {
|
|
4
|
-
const baseUrl = process.env.BASE_URL || "http://localhost:3000";
|
|
5
|
-
await page.context().addCookies([
|
|
6
|
-
{ name: "om_demo_notice_ack", value: "ack", url: baseUrl, sameSite: "Lax" },
|
|
7
|
-
{ name: "om_cookie_notice_ack", value: "ack", url: baseUrl, sameSite: "Lax" }
|
|
8
|
-
]);
|
|
9
|
-
await page.goto("/login");
|
|
10
|
-
await page.getByLabel("Email").fill("admin@acme.com");
|
|
11
|
-
await page.getByLabel("Password").fill("secret");
|
|
12
|
-
await page.getByRole("checkbox", { name: /remember me/i }).check();
|
|
13
|
-
await page.getByLabel("Password").press("Enter");
|
|
14
|
-
await expect(page).toHaveURL(/\/backend(?:\/.*)?$/);
|
|
15
|
-
const cookies = await page.context().cookies();
|
|
16
|
-
const names = new Set(cookies.map((cookie) => cookie.name));
|
|
17
|
-
expect(names.has("auth_token")).toBeTruthy();
|
|
18
|
-
expect(names.has("session_token")).toBeTruthy();
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=TC-AUTH-003.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-003.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\n\n/**\n * TC-AUTH-003: Login with Remember Me\n * Source: .ai/qa/scenarios/TC-AUTH-003-user-login-remember-me.md\n */\ntest.describe('TC-AUTH-003: Login with Remember Me', () => {\n test('should set both auth and session cookies when remember me is enabled', async ({ page }) => {\n const baseUrl = process.env.BASE_URL || 'http://localhost:3000';\n await page.context().addCookies([\n { name: 'om_demo_notice_ack', value: 'ack', url: baseUrl, sameSite: 'Lax' },\n { name: 'om_cookie_notice_ack', value: 'ack', url: baseUrl, sameSite: 'Lax' },\n ]);\n\n await page.goto('/login');\n await page.getByLabel('Email').fill('admin@acme.com');\n await page.getByLabel('Password').fill('secret');\n await page.getByRole('checkbox', { name: /remember me/i }).check();\n await page.getByLabel('Password').press('Enter');\n\n await expect(page).toHaveURL(/\\/backend(?:\\/.*)?$/);\n\n const cookies = await page.context().cookies();\n const names = new Set(cookies.map((cookie) => cookie.name));\n expect(names.has('auth_token')).toBeTruthy();\n expect(names.has('session_token')).toBeTruthy();\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAM7B,KAAK,SAAS,uCAAuC,MAAM;AACzD,OAAK,wEAAwE,OAAO,EAAE,KAAK,MAAM;AAC/F,UAAM,UAAU,QAAQ,IAAI,YAAY;AACxC,UAAM,KAAK,QAAQ,EAAE,WAAW;AAAA,MAC9B,EAAE,MAAM,sBAAsB,OAAO,OAAO,KAAK,SAAS,UAAU,MAAM;AAAA,MAC1E,EAAE,MAAM,wBAAwB,OAAO,OAAO,KAAK,SAAS,UAAU,MAAM;AAAA,IAC9E,CAAC;AAED,UAAM,KAAK,KAAK,QAAQ;AACxB,UAAM,KAAK,WAAW,OAAO,EAAE,KAAK,gBAAgB;AACpD,UAAM,KAAK,WAAW,UAAU,EAAE,KAAK,QAAQ;AAC/C,UAAM,KAAK,UAAU,YAAY,EAAE,MAAM,eAAe,CAAC,EAAE,MAAM;AACjE,UAAM,KAAK,WAAW,UAAU,EAAE,MAAM,OAAO;AAE/C,UAAM,OAAO,IAAI,EAAE,UAAU,qBAAqB;AAElD,UAAM,UAAU,MAAM,KAAK,QAAQ,EAAE,QAAQ;AAC7C,UAAM,QAAQ,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,OAAO,IAAI,CAAC;AAC1D,WAAO,MAAM,IAAI,YAAY,CAAC,EAAE,WAAW;AAC3C,WAAO,MAAM,IAAI,eAAe,CAAC,EAAE,WAAW;AAAA,EAChD,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
test.describe("TC-AUTH-004: User Logout", () => {
|
|
4
|
-
test("should clear session and redirect to login", async ({ page }) => {
|
|
5
|
-
await login(page, "admin");
|
|
6
|
-
await expect(page).toHaveURL(/\/backend(?:\/.*)?$/);
|
|
7
|
-
await page.getByRole("button", { name: /admin@acme.com/i }).click();
|
|
8
|
-
await page.getByRole("menuitem", { name: /logout/i }).click();
|
|
9
|
-
await page.waitForTimeout(500);
|
|
10
|
-
const cookies = await page.context().cookies();
|
|
11
|
-
const authCookie = cookies.find((cookie) => cookie.name === "auth_token");
|
|
12
|
-
expect(authCookie).toBeUndefined();
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
//# sourceMappingURL=TC-AUTH-004.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-004.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\n\n/**\n * TC-AUTH-004: User Logout\n * Source: .ai/qa/scenarios/TC-AUTH-004-user-logout.md\n */\ntest.describe('TC-AUTH-004: User Logout', () => {\n test('should clear session and redirect to login', async ({ page }) => {\n await login(page, 'admin');\n await expect(page).toHaveURL(/\\/backend(?:\\/.*)?$/);\n\n await page.getByRole('button', { name: /admin@acme.com/i }).click();\n await page.getByRole('menuitem', { name: /logout/i }).click();\n await page.waitForTimeout(500);\n\n const cookies = await page.context().cookies();\n const authCookie = cookies.find((cookie) => cookie.name === 'auth_token');\n expect(authCookie).toBeUndefined();\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AAMtB,KAAK,SAAS,4BAA4B,MAAM;AAC9C,OAAK,8CAA8C,OAAO,EAAE,KAAK,MAAM;AACrE,UAAM,MAAM,MAAM,OAAO;AACzB,UAAM,OAAO,IAAI,EAAE,UAAU,qBAAqB;AAElD,UAAM,KAAK,UAAU,UAAU,EAAE,MAAM,kBAAkB,CAAC,EAAE,MAAM;AAClE,UAAM,KAAK,UAAU,YAAY,EAAE,MAAM,UAAU,CAAC,EAAE,MAAM;AAC5D,UAAM,KAAK,eAAe,GAAG;AAE7B,UAAM,UAAU,MAAM,KAAK,QAAQ,EAAE,QAAQ;AAC7C,UAAM,aAAa,QAAQ,KAAK,CAAC,WAAW,OAAO,SAAS,YAAY;AACxE,WAAO,UAAU,EAAE,cAAc;AAAA,EACnC,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
test.describe("TC-AUTH-005: Password Reset Request", () => {
|
|
3
|
-
test("should accept reset request and show generic confirmation", async ({ page }) => {
|
|
4
|
-
await page.goto("/reset");
|
|
5
|
-
await expect(page.getByText(/reset password/i).first()).toBeVisible();
|
|
6
|
-
await page.getByLabel("Email").fill("admin@acme.com");
|
|
7
|
-
await page.getByRole("button", { name: /send reset link/i }).click();
|
|
8
|
-
await expect(page.getByText(/if an account with that email exists/i)).toBeVisible();
|
|
9
|
-
});
|
|
10
|
-
});
|
|
11
|
-
//# sourceMappingURL=TC-AUTH-005.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-005.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\n\n/**\n * TC-AUTH-005: Password Reset Request\n * Source: .ai/qa/scenarios/TC-AUTH-005-password-reset-request.md\n */\ntest.describe('TC-AUTH-005: Password Reset Request', () => {\n test('should accept reset request and show generic confirmation', async ({ page }) => {\n await page.goto('/reset');\n await expect(page.getByText(/reset password/i).first()).toBeVisible();\n\n await page.getByLabel('Email').fill('admin@acme.com');\n await page.getByRole('button', { name: /send reset link/i }).click();\n\n await expect(page.getByText(/if an account with that email exists/i)).toBeVisible();\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAM7B,KAAK,SAAS,uCAAuC,MAAM;AACzD,OAAK,6DAA6D,OAAO,EAAE,KAAK,MAAM;AACpF,UAAM,KAAK,KAAK,QAAQ;AACxB,UAAM,OAAO,KAAK,UAAU,iBAAiB,EAAE,MAAM,CAAC,EAAE,YAAY;AAEpE,UAAM,KAAK,WAAW,OAAO,EAAE,KAAK,gBAAgB;AACpD,UAAM,KAAK,UAAU,UAAU,EAAE,MAAM,mBAAmB,CAAC,EAAE,MAAM;AAEnE,UAAM,OAAO,KAAK,UAAU,uCAAuC,CAAC,EAAE,YAAY;AAAA,EACpF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
test.describe("TC-AUTH-006: Complete Password Reset", () => {
|
|
3
|
-
test("should show reset form and reject completion with an invalid token", async ({ page }) => {
|
|
4
|
-
await page.goto("/reset/qa-invalid-token");
|
|
5
|
-
await expect(page.getByText(/set a new password/i)).toBeVisible();
|
|
6
|
-
await page.getByLabel(/new password/i).fill("Valid1!Pass");
|
|
7
|
-
await page.getByRole("button", { name: /update password/i }).click();
|
|
8
|
-
await expect(page.getByText(/invalid or expired token/i)).toBeVisible();
|
|
9
|
-
});
|
|
10
|
-
});
|
|
11
|
-
//# sourceMappingURL=TC-AUTH-006.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-006.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\n\n/**\n * TC-AUTH-006: Complete Password Reset\n * Source: .ai/qa/scenarios/TC-AUTH-006-password-reset-complete.md\n */\ntest.describe('TC-AUTH-006: Complete Password Reset', () => {\n test('should show reset form and reject completion with an invalid token', async ({ page }) => {\n await page.goto('/reset/qa-invalid-token');\n await expect(page.getByText(/set a new password/i)).toBeVisible();\n\n await page.getByLabel(/new password/i).fill('Valid1!Pass');\n await page.getByRole('button', { name: /update password/i }).click();\n\n await expect(page.getByText(/invalid or expired token/i)).toBeVisible();\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAM7B,KAAK,SAAS,wCAAwC,MAAM;AAC1D,OAAK,sEAAsE,OAAO,EAAE,KAAK,MAAM;AAC7F,UAAM,KAAK,KAAK,yBAAyB;AACzC,UAAM,OAAO,KAAK,UAAU,qBAAqB,CAAC,EAAE,YAAY;AAEhE,UAAM,KAAK,WAAW,eAAe,EAAE,KAAK,aAAa;AACzD,UAAM,KAAK,UAAU,UAAU,EAAE,MAAM,mBAAmB,CAAC,EAAE,MAAM;AAEnE,UAAM,OAAO,KAAK,UAAU,2BAA2B,CAAC,EAAE,YAAY;AAAA,EACxE,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
test.describe("TC-AUTH-007: Password Reset with Expired Token", () => {
|
|
3
|
-
test("should reject invalid and expired reset tokens", async ({ page }) => {
|
|
4
|
-
await page.goto("/reset/qa-expired-token");
|
|
5
|
-
await page.getByLabel(/new password/i).fill("Valid1!Pass");
|
|
6
|
-
await page.getByRole("button", { name: /update password/i }).click();
|
|
7
|
-
await expect(page.getByText(/invalid or expired token/i)).toBeVisible();
|
|
8
|
-
await page.goto("/reset/qa-malformed-token");
|
|
9
|
-
await page.getByLabel(/new password/i).fill("Valid1!Pass");
|
|
10
|
-
await page.getByRole("button", { name: /update password/i }).click();
|
|
11
|
-
await expect(page.getByText(/invalid or expired token/i)).toBeVisible();
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
//# sourceMappingURL=TC-AUTH-007.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-007.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\n\n/**\n * TC-AUTH-007: Password Reset with Expired Token\n * Source: .ai/qa/scenarios/TC-AUTH-007-password-reset-expired-token.md\n */\ntest.describe('TC-AUTH-007: Password Reset with Expired Token', () => {\n test('should reject invalid and expired reset tokens', async ({ page }) => {\n await page.goto('/reset/qa-expired-token');\n await page.getByLabel(/new password/i).fill('Valid1!Pass');\n await page.getByRole('button', { name: /update password/i }).click();\n await expect(page.getByText(/invalid or expired token/i)).toBeVisible();\n\n await page.goto('/reset/qa-malformed-token');\n await page.getByLabel(/new password/i).fill('Valid1!Pass');\n await page.getByRole('button', { name: /update password/i }).click();\n await expect(page.getByText(/invalid or expired token/i)).toBeVisible();\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAM7B,KAAK,SAAS,kDAAkD,MAAM;AACpE,OAAK,kDAAkD,OAAO,EAAE,KAAK,MAAM;AACzE,UAAM,KAAK,KAAK,yBAAyB;AACzC,UAAM,KAAK,WAAW,eAAe,EAAE,KAAK,aAAa;AACzD,UAAM,KAAK,UAAU,UAAU,EAAE,MAAM,mBAAmB,CAAC,EAAE,MAAM;AACnE,UAAM,OAAO,KAAK,UAAU,2BAA2B,CAAC,EAAE,YAAY;AAEtE,UAAM,KAAK,KAAK,2BAA2B;AAC3C,UAAM,KAAK,WAAW,eAAe,EAAE,KAAK,aAAa;AACzD,UAAM,KAAK,UAAU,UAAU,EAAE,MAAM,mBAAmB,CAAC,EAAE,MAAM;AACnE,UAAM,OAAO,KAAK,UAAU,2BAA2B,CAAC,EAAE,YAAY;AAAA,EACxE,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { apiRequest, getAuthToken } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
4
|
-
import { createUserViaUi } from "@open-mercato/core/modules/core/__integration__/helpers/authUi";
|
|
5
|
-
test.describe("TC-AUTH-008: Admin Creates New User", () => {
|
|
6
|
-
test("should create a new user from the create form", async ({ page, request }) => {
|
|
7
|
-
const email = `qa-auth-008-${Date.now()}@acme.com`;
|
|
8
|
-
let token = null;
|
|
9
|
-
let userId = null;
|
|
10
|
-
try {
|
|
11
|
-
token = await getAuthToken(request);
|
|
12
|
-
await login(page, "admin");
|
|
13
|
-
await createUserViaUi(page, { email, password: "Valid1!Pass", role: "employee" });
|
|
14
|
-
await expect(page.getByText(email)).toBeVisible();
|
|
15
|
-
await page.getByRole("row", { name: new RegExp(email, "i") }).click();
|
|
16
|
-
await expect(page).toHaveURL(/\/backend\/users\/[0-9a-f-]{36}\/edit$/i);
|
|
17
|
-
userId = page.url().match(/\/backend\/users\/([0-9a-f-]{36})\/edit$/i)?.[1] ?? null;
|
|
18
|
-
} finally {
|
|
19
|
-
if (token && userId) {
|
|
20
|
-
await apiRequest(request, "DELETE", `/api/auth/users?id=${encodeURIComponent(userId)}`, { token }).catch(() => {
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
//# sourceMappingURL=TC-AUTH-008.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-008.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { apiRequest, getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';\nimport { createUserViaUi } from '@open-mercato/core/modules/core/__integration__/helpers/authUi';\n\n/**\n * TC-AUTH-008: Admin Creates New User\n * Source: .ai/qa/scenarios/TC-AUTH-008-user-creation.md\n */\ntest.describe('TC-AUTH-008: Admin Creates New User', () => {\n test('should create a new user from the create form', async ({ page, request }) => {\n const email = `qa-auth-008-${Date.now()}@acme.com`;\n let token: string | null = null;\n let userId: string | null = null;\n\n try {\n token = await getAuthToken(request);\n await login(page, 'admin');\n await createUserViaUi(page, { email, password: 'Valid1!Pass', role: 'employee' });\n await expect(page.getByText(email)).toBeVisible();\n\n await page.getByRole('row', { name: new RegExp(email, 'i') }).click();\n await expect(page).toHaveURL(/\\/backend\\/users\\/[0-9a-f-]{36}\\/edit$/i);\n userId = page.url().match(/\\/backend\\/users\\/([0-9a-f-]{36})\\/edit$/i)?.[1] ?? null;\n } finally {\n if (token && userId) {\n await apiRequest(request, 'DELETE', `/api/auth/users?id=${encodeURIComponent(userId)}`, { token }).catch(() => {});\n }\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,YAAY,oBAAoB;AACzC,SAAS,uBAAuB;AAMhC,KAAK,SAAS,uCAAuC,MAAM;AACzD,OAAK,iDAAiD,OAAO,EAAE,MAAM,QAAQ,MAAM;AACjF,UAAM,QAAQ,eAAe,KAAK,IAAI,CAAC;AACvC,QAAI,QAAuB;AAC3B,QAAI,SAAwB;AAE5B,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAClC,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,gBAAgB,MAAM,EAAE,OAAO,UAAU,eAAe,MAAM,WAAW,CAAC;AAChF,YAAM,OAAO,KAAK,UAAU,KAAK,CAAC,EAAE,YAAY;AAEhD,YAAM,KAAK,UAAU,OAAO,EAAE,MAAM,IAAI,OAAO,OAAO,GAAG,EAAE,CAAC,EAAE,MAAM;AACpE,YAAM,OAAO,IAAI,EAAE,UAAU,yCAAyC;AACtE,eAAS,KAAK,IAAI,EAAE,MAAM,2CAA2C,IAAI,CAAC,KAAK;AAAA,IACjF,UAAE;AACA,UAAI,SAAS,QAAQ;AACnB,cAAM,WAAW,SAAS,UAAU,sBAAsB,mBAAmB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM;AAAA,QAAC,CAAC;AAAA,MACnH;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
test.describe("TC-AUTH-009: User Creation Validation Errors", () => {
|
|
4
|
-
test("should show validation errors for invalid create payload", async ({ page }) => {
|
|
5
|
-
await login(page, "admin");
|
|
6
|
-
await page.goto("/backend/users/create");
|
|
7
|
-
await page.getByRole("textbox").nth(0).fill(`qa-auth-009-${Date.now()}@acme.com`);
|
|
8
|
-
await page.getByRole("textbox").nth(1).fill("Valid1!Pass");
|
|
9
|
-
const rolesInput = page.getByRole("textbox", { name: /add tag and press enter/i });
|
|
10
|
-
await rolesInput.fill("employee");
|
|
11
|
-
await rolesInput.press("Enter");
|
|
12
|
-
await page.getByRole("button", { name: "Create" }).first().click();
|
|
13
|
-
await expect(page.getByText(/expected string, received null/i).first()).toBeVisible();
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
//# sourceMappingURL=TC-AUTH-009.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-009.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\n\n/**\n * TC-AUTH-009: User Creation Validation Errors\n * Source: .ai/qa/scenarios/TC-AUTH-009-user-creation-validation.md\n */\ntest.describe('TC-AUTH-009: User Creation Validation Errors', () => {\n test('should show validation errors for invalid create payload', async ({ page }) => {\n await login(page, 'admin');\n await page.goto('/backend/users/create');\n\n await page.getByRole('textbox').nth(0).fill(`qa-auth-009-${Date.now()}@acme.com`);\n await page.getByRole('textbox').nth(1).fill('Valid1!Pass');\n const rolesInput = page.getByRole('textbox', { name: /add tag and press enter/i });\n await rolesInput.fill('employee');\n await rolesInput.press('Enter');\n await page.getByRole('button', { name: 'Create' }).first().click();\n\n await expect(page.getByText(/expected string, received null/i).first()).toBeVisible();\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AAMtB,KAAK,SAAS,gDAAgD,MAAM;AAClE,OAAK,4DAA4D,OAAO,EAAE,KAAK,MAAM;AACnF,UAAM,MAAM,MAAM,OAAO;AACzB,UAAM,KAAK,KAAK,uBAAuB;AAEvC,UAAM,KAAK,UAAU,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,eAAe,KAAK,IAAI,CAAC,WAAW;AAChF,UAAM,KAAK,UAAU,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,aAAa;AACzD,UAAM,aAAa,KAAK,UAAU,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACjF,UAAM,WAAW,KAAK,UAAU;AAChC,UAAM,WAAW,MAAM,OAAO;AAC9B,UAAM,KAAK,UAAU,UAAU,EAAE,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM;AAEjE,UAAM,OAAO,KAAK,UAAU,iCAAiC,EAAE,MAAM,CAAC,EAAE,YAAY;AAAA,EACtF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { apiRequest, getAuthToken } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
4
|
-
import { createUserViaUi } from "@open-mercato/core/modules/core/__integration__/helpers/authUi";
|
|
5
|
-
test.describe("TC-AUTH-010: Edit Existing User", () => {
|
|
6
|
-
test("should edit a user email and persist changes", async ({ page, request }) => {
|
|
7
|
-
const stamp = Date.now();
|
|
8
|
-
const initialEmail = `qa-auth-010-${stamp}@acme.com`;
|
|
9
|
-
const updatedEmail = `qa-auth-010-updated-${stamp}@acme.com`;
|
|
10
|
-
let token = null;
|
|
11
|
-
let userId = null;
|
|
12
|
-
try {
|
|
13
|
-
token = await getAuthToken(request);
|
|
14
|
-
await login(page, "admin");
|
|
15
|
-
await createUserViaUi(page, { email: initialEmail, password: "Valid1!Pass", role: "employee" });
|
|
16
|
-
await page.getByRole("row", { name: new RegExp(initialEmail, "i") }).click();
|
|
17
|
-
await expect(page).toHaveURL(/\/backend\/users\/[0-9a-f-]{36}\/edit$/i);
|
|
18
|
-
userId = page.url().match(/\/backend\/users\/([0-9a-f-]{36})\/edit$/i)?.[1] ?? null;
|
|
19
|
-
await page.getByRole("textbox").nth(0).fill(updatedEmail);
|
|
20
|
-
await page.getByRole("button", { name: "Save" }).first().click();
|
|
21
|
-
await expect(page).toHaveURL(/\/backend\/users(?:\?.*)?$/);
|
|
22
|
-
await page.getByRole("textbox", { name: "Search" }).fill(updatedEmail);
|
|
23
|
-
await expect(page.getByRole("row", { name: new RegExp(updatedEmail, "i") })).toBeVisible();
|
|
24
|
-
} finally {
|
|
25
|
-
if (token && userId) {
|
|
26
|
-
await apiRequest(request, "DELETE", `/api/auth/users?id=${encodeURIComponent(userId)}`, { token }).catch(() => {
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
//# sourceMappingURL=TC-AUTH-010.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-010.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { apiRequest, getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';\nimport { createUserViaUi } from '@open-mercato/core/modules/core/__integration__/helpers/authUi';\n\n/**\n * TC-AUTH-010: Edit Existing User\n * Source: .ai/qa/scenarios/TC-AUTH-010-user-edit.md\n */\ntest.describe('TC-AUTH-010: Edit Existing User', () => {\n test('should edit a user email and persist changes', async ({ page, request }) => {\n const stamp = Date.now();\n const initialEmail = `qa-auth-010-${stamp}@acme.com`;\n const updatedEmail = `qa-auth-010-updated-${stamp}@acme.com`;\n let token: string | null = null;\n let userId: string | null = null;\n\n try {\n token = await getAuthToken(request);\n await login(page, 'admin');\n await createUserViaUi(page, { email: initialEmail, password: 'Valid1!Pass', role: 'employee' });\n\n await page.getByRole('row', { name: new RegExp(initialEmail, 'i') }).click();\n await expect(page).toHaveURL(/\\/backend\\/users\\/[0-9a-f-]{36}\\/edit$/i);\n userId = page.url().match(/\\/backend\\/users\\/([0-9a-f-]{36})\\/edit$/i)?.[1] ?? null;\n\n await page.getByRole('textbox').nth(0).fill(updatedEmail);\n await page.getByRole('button', { name: 'Save' }).first().click();\n\n await expect(page).toHaveURL(/\\/backend\\/users(?:\\?.*)?$/);\n await page.getByRole('textbox', { name: 'Search' }).fill(updatedEmail);\n await expect(page.getByRole('row', { name: new RegExp(updatedEmail, 'i') })).toBeVisible();\n } finally {\n if (token && userId) {\n await apiRequest(request, 'DELETE', `/api/auth/users?id=${encodeURIComponent(userId)}`, { token }).catch(() => {});\n }\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,YAAY,oBAAoB;AACzC,SAAS,uBAAuB;AAMhC,KAAK,SAAS,mCAAmC,MAAM;AACrD,OAAK,gDAAgD,OAAO,EAAE,MAAM,QAAQ,MAAM;AAChF,UAAM,QAAQ,KAAK,IAAI;AACvB,UAAM,eAAe,eAAe,KAAK;AACzC,UAAM,eAAe,uBAAuB,KAAK;AACjD,QAAI,QAAuB;AAC3B,QAAI,SAAwB;AAE5B,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAClC,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,gBAAgB,MAAM,EAAE,OAAO,cAAc,UAAU,eAAe,MAAM,WAAW,CAAC;AAE9F,YAAM,KAAK,UAAU,OAAO,EAAE,MAAM,IAAI,OAAO,cAAc,GAAG,EAAE,CAAC,EAAE,MAAM;AAC3E,YAAM,OAAO,IAAI,EAAE,UAAU,yCAAyC;AACtE,eAAS,KAAK,IAAI,EAAE,MAAM,2CAA2C,IAAI,CAAC,KAAK;AAE/E,YAAM,KAAK,UAAU,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,YAAY;AACxD,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM;AAE/D,YAAM,OAAO,IAAI,EAAE,UAAU,4BAA4B;AACzD,YAAM,KAAK,UAAU,WAAW,EAAE,MAAM,SAAS,CAAC,EAAE,KAAK,YAAY;AACrE,YAAM,OAAO,KAAK,UAAU,OAAO,EAAE,MAAM,IAAI,OAAO,cAAc,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY;AAAA,IAC3F,UAAE;AACA,UAAI,SAAS,QAAQ;AACnB,cAAM,WAAW,SAAS,UAAU,sBAAsB,mBAAmB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM;AAAA,QAAC,CAAC;AAAA,MACnH;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { createUserViaUi } from "@open-mercato/core/modules/core/__integration__/helpers/authUi";
|
|
4
|
-
test.describe("TC-AUTH-011: Delete User Account", () => {
|
|
5
|
-
test("should delete a user from the edit page", async ({ page }) => {
|
|
6
|
-
const email = `qa-auth-011-${Date.now()}@acme.com`;
|
|
7
|
-
await login(page, "admin");
|
|
8
|
-
await createUserViaUi(page, { email, password: "Valid1!Pass", role: "employee" });
|
|
9
|
-
const row = page.getByRole("row", { name: new RegExp(email, "i") });
|
|
10
|
-
await expect(row).toBeVisible();
|
|
11
|
-
await row.click();
|
|
12
|
-
await expect(page).toHaveURL(/\/backend\/users\/[0-9a-f-]{36}\/edit$/i);
|
|
13
|
-
const deleteButton = page.getByRole("button", { name: /^Delete$/i }).first();
|
|
14
|
-
if (await deleteButton.count() === 0 || !await deleteButton.isVisible().catch(() => false)) {
|
|
15
|
-
test.skip(true, "User delete action is not available in this environment.");
|
|
16
|
-
}
|
|
17
|
-
await deleteButton.click();
|
|
18
|
-
const confirmDialog = page.getByRole("alertdialog");
|
|
19
|
-
if (await confirmDialog.isVisible().catch(() => false)) {
|
|
20
|
-
await confirmDialog.getByRole("button", { name: /^Delete$/i }).first().click();
|
|
21
|
-
}
|
|
22
|
-
await page.getByRole("textbox", { name: "Search" }).fill(email);
|
|
23
|
-
await expect(page.getByRole("row", { name: new RegExp(email, "i") })).toHaveCount(0);
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
//# sourceMappingURL=TC-AUTH-011.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-011.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { createUserViaUi } from '@open-mercato/core/modules/core/__integration__/helpers/authUi';\n\n/**\n * TC-AUTH-011: Delete User Account\n * Source: .ai/qa/scenarios/TC-AUTH-011-user-delete.md\n */\ntest.describe('TC-AUTH-011: Delete User Account', () => {\n test('should delete a user from the edit page', async ({ page }) => {\n const email = `qa-auth-011-${Date.now()}@acme.com`;\n\n await login(page, 'admin');\n await createUserViaUi(page, { email, password: 'Valid1!Pass', role: 'employee' });\n\n const row = page.getByRole('row', { name: new RegExp(email, 'i') });\n await expect(row).toBeVisible();\n await row.click();\n await expect(page).toHaveURL(/\\/backend\\/users\\/[0-9a-f-]{36}\\/edit$/i);\n\n const deleteButton = page.getByRole('button', { name: /^Delete$/i }).first();\n if ((await deleteButton.count()) === 0 || !(await deleteButton.isVisible().catch(() => false))) {\n test.skip(true, 'User delete action is not available in this environment.');\n }\n await deleteButton.click();\n\n const confirmDialog = page.getByRole('alertdialog');\n if (await confirmDialog.isVisible().catch(() => false)) {\n await confirmDialog.getByRole('button', { name: /^Delete$/i }).first().click();\n }\n\n await page.getByRole('textbox', { name: 'Search' }).fill(email);\n await expect(page.getByRole('row', { name: new RegExp(email, 'i') })).toHaveCount(0);\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,uBAAuB;AAMhC,KAAK,SAAS,oCAAoC,MAAM;AACtD,OAAK,2CAA2C,OAAO,EAAE,KAAK,MAAM;AAClE,UAAM,QAAQ,eAAe,KAAK,IAAI,CAAC;AAEvC,UAAM,MAAM,MAAM,OAAO;AACzB,UAAM,gBAAgB,MAAM,EAAE,OAAO,UAAU,eAAe,MAAM,WAAW,CAAC;AAEhF,UAAM,MAAM,KAAK,UAAU,OAAO,EAAE,MAAM,IAAI,OAAO,OAAO,GAAG,EAAE,CAAC;AAClE,UAAM,OAAO,GAAG,EAAE,YAAY;AAC9B,UAAM,IAAI,MAAM;AAChB,UAAM,OAAO,IAAI,EAAE,UAAU,yCAAyC;AAEtE,UAAM,eAAe,KAAK,UAAU,UAAU,EAAE,MAAM,YAAY,CAAC,EAAE,MAAM;AAC3E,QAAK,MAAM,aAAa,MAAM,MAAO,KAAK,CAAE,MAAM,aAAa,UAAU,EAAE,MAAM,MAAM,KAAK,GAAI;AAC9F,WAAK,KAAK,MAAM,0DAA0D;AAAA,IAC5E;AACA,UAAM,aAAa,MAAM;AAEzB,UAAM,gBAAgB,KAAK,UAAU,aAAa;AAClD,QAAI,MAAM,cAAc,UAAU,EAAE,MAAM,MAAM,KAAK,GAAG;AACtD,YAAM,cAAc,UAAU,UAAU,EAAE,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM;AAAA,IAC/E;AAEA,UAAM,KAAK,UAAU,WAAW,EAAE,MAAM,SAAS,CAAC,EAAE,KAAK,KAAK;AAC9D,UAAM,OAAO,KAAK,UAAU,OAAO,EAAE,MAAM,IAAI,OAAO,OAAO,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC;AAAA,EACrF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { apiRequest, getAuthToken } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
4
|
-
test.describe("TC-AUTH-012: Create New Role", () => {
|
|
5
|
-
test("should create a role and show it in roles list", async ({ page, request }) => {
|
|
6
|
-
const roleName = `qa-auth-role-${Date.now()}`;
|
|
7
|
-
let token = null;
|
|
8
|
-
let roleId = null;
|
|
9
|
-
try {
|
|
10
|
-
token = await getAuthToken(request);
|
|
11
|
-
await login(page, "admin");
|
|
12
|
-
await page.goto("/backend/roles/create");
|
|
13
|
-
await expect(page.getByText("Create Role")).toBeVisible();
|
|
14
|
-
await page.getByRole("textbox").first().fill(roleName);
|
|
15
|
-
await page.getByRole("button", { name: "Create" }).first().click();
|
|
16
|
-
await expect(page).toHaveURL(/\/backend\/roles(?:\?.*)?$/);
|
|
17
|
-
await page.getByRole("textbox", { name: "Search" }).fill(roleName);
|
|
18
|
-
await expect(page.getByRole("row", { name: new RegExp(roleName, "i") })).toBeVisible();
|
|
19
|
-
await page.getByRole("row", { name: new RegExp(roleName, "i") }).click();
|
|
20
|
-
await expect(page).toHaveURL(/\/backend\/roles\/[0-9a-f-]{36}\/edit$/i);
|
|
21
|
-
roleId = page.url().match(/\/backend\/roles\/([0-9a-f-]{36})\/edit$/i)?.[1] ?? null;
|
|
22
|
-
} finally {
|
|
23
|
-
if (token && roleId) {
|
|
24
|
-
await apiRequest(request, "DELETE", `/api/auth/roles?id=${encodeURIComponent(roleId)}`, { token }).catch(() => {
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
//# sourceMappingURL=TC-AUTH-012.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-012.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { apiRequest, getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';\n\n/**\n * TC-AUTH-012: Create New Role\n * Source: .ai/qa/scenarios/TC-AUTH-012-role-creation.md\n */\ntest.describe('TC-AUTH-012: Create New Role', () => {\n test('should create a role and show it in roles list', async ({ page, request }) => {\n const roleName = `qa-auth-role-${Date.now()}`;\n let token: string | null = null;\n let roleId: string | null = null;\n\n try {\n token = await getAuthToken(request);\n await login(page, 'admin');\n await page.goto('/backend/roles/create');\n await expect(page.getByText('Create Role')).toBeVisible();\n\n await page.getByRole('textbox').first().fill(roleName);\n await page.getByRole('button', { name: 'Create' }).first().click();\n\n await expect(page).toHaveURL(/\\/backend\\/roles(?:\\?.*)?$/);\n await page.getByRole('textbox', { name: 'Search' }).fill(roleName);\n await expect(page.getByRole('row', { name: new RegExp(roleName, 'i') })).toBeVisible();\n await page.getByRole('row', { name: new RegExp(roleName, 'i') }).click();\n await expect(page).toHaveURL(/\\/backend\\/roles\\/[0-9a-f-]{36}\\/edit$/i);\n roleId = page.url().match(/\\/backend\\/roles\\/([0-9a-f-]{36})\\/edit$/i)?.[1] ?? null;\n } finally {\n if (token && roleId) {\n await apiRequest(request, 'DELETE', `/api/auth/roles?id=${encodeURIComponent(roleId)}`, { token }).catch(() => {});\n }\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,YAAY,oBAAoB;AAMzC,KAAK,SAAS,gCAAgC,MAAM;AAClD,OAAK,kDAAkD,OAAO,EAAE,MAAM,QAAQ,MAAM;AAClF,UAAM,WAAW,gBAAgB,KAAK,IAAI,CAAC;AAC3C,QAAI,QAAuB;AAC3B,QAAI,SAAwB;AAE5B,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAClC,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,KAAK,KAAK,uBAAuB;AACvC,YAAM,OAAO,KAAK,UAAU,aAAa,CAAC,EAAE,YAAY;AAExD,YAAM,KAAK,UAAU,SAAS,EAAE,MAAM,EAAE,KAAK,QAAQ;AACrD,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM;AAEjE,YAAM,OAAO,IAAI,EAAE,UAAU,4BAA4B;AACzD,YAAM,KAAK,UAAU,WAAW,EAAE,MAAM,SAAS,CAAC,EAAE,KAAK,QAAQ;AACjE,YAAM,OAAO,KAAK,UAAU,OAAO,EAAE,MAAM,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY;AACrF,YAAM,KAAK,UAAU,OAAO,EAAE,MAAM,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,MAAM;AACvE,YAAM,OAAO,IAAI,EAAE,UAAU,yCAAyC;AACtE,eAAS,KAAK,IAAI,EAAE,MAAM,2CAA2C,IAAI,CAAC,KAAK;AAAA,IACjF,UAAE;AACA,UAAI,SAAS,QAAQ;AACnB,cAAM,WAAW,SAAS,UAAU,sBAAsB,mBAAmB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM;AAAA,QAAC,CAAC;AAAA,MACnH;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
import { apiRequest, getAuthToken } from "@open-mercato/core/modules/core/__integration__/helpers/api";
|
|
4
|
-
test.describe("TC-AUTH-013: Configure Role ACL and Permissions", () => {
|
|
5
|
-
test("should persist ACL checkbox changes for a role", async ({ page, request }) => {
|
|
6
|
-
const roleName = `qa-auth-acl-${Date.now()}`;
|
|
7
|
-
let token = null;
|
|
8
|
-
let roleId = null;
|
|
9
|
-
try {
|
|
10
|
-
token = await getAuthToken(request);
|
|
11
|
-
await login(page, "admin");
|
|
12
|
-
await page.goto("/backend/roles/create");
|
|
13
|
-
await page.getByRole("textbox").first().fill(roleName);
|
|
14
|
-
await page.getByRole("button", { name: "Create" }).first().click();
|
|
15
|
-
await expect(page).toHaveURL(/\/backend\/roles(?:\?.*)?$/);
|
|
16
|
-
await page.getByRole("textbox", { name: "Search" }).fill(roleName);
|
|
17
|
-
await page.getByRole("row", { name: new RegExp(roleName, "i") }).click();
|
|
18
|
-
await expect(page).toHaveURL(/\/backend\/roles\/[0-9a-f-]{36}\/edit$/i);
|
|
19
|
-
roleId = page.url().match(/\/backend\/roles\/([0-9a-f-]{36})\/edit$/i)?.[1] ?? null;
|
|
20
|
-
const featureCheckbox = page.getByRole("checkbox", { name: /view api keys \(api_keys\.view\)/i }).first();
|
|
21
|
-
if (await featureCheckbox.count() === 0 || !await featureCheckbox.isVisible().catch(() => false)) {
|
|
22
|
-
test.skip(true, "Target ACL checkbox is not visible for this role.");
|
|
23
|
-
}
|
|
24
|
-
if (!await featureCheckbox.isChecked()) {
|
|
25
|
-
await featureCheckbox.check();
|
|
26
|
-
}
|
|
27
|
-
await expect(featureCheckbox).toBeChecked();
|
|
28
|
-
await page.getByRole("button", { name: "Save" }).first().click();
|
|
29
|
-
await expect(page).toHaveURL(/\/backend\/roles(?:\?.*)?$/);
|
|
30
|
-
await page.getByRole("textbox", { name: "Search" }).fill(roleName);
|
|
31
|
-
await page.getByRole("row", { name: new RegExp(roleName, "i") }).click();
|
|
32
|
-
await expect(featureCheckbox).toBeChecked();
|
|
33
|
-
} finally {
|
|
34
|
-
if (token && roleId) {
|
|
35
|
-
await apiRequest(request, "DELETE", `/api/auth/roles?id=${encodeURIComponent(roleId)}`, { token }).catch(() => {
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
//# sourceMappingURL=TC-AUTH-013.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-013.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\nimport { apiRequest, getAuthToken } from '@open-mercato/core/modules/core/__integration__/helpers/api';\n\n/**\n * TC-AUTH-013: Configure Role ACL and Permissions\n * Source: .ai/qa/scenarios/TC-AUTH-013-role-acl-configuration.md\n */\ntest.describe('TC-AUTH-013: Configure Role ACL and Permissions', () => {\n test('should persist ACL checkbox changes for a role', async ({ page, request }) => {\n const roleName = `qa-auth-acl-${Date.now()}`;\n let token: string | null = null;\n let roleId: string | null = null;\n\n try {\n token = await getAuthToken(request);\n await login(page, 'admin');\n await page.goto('/backend/roles/create');\n await page.getByRole('textbox').first().fill(roleName);\n await page.getByRole('button', { name: 'Create' }).first().click();\n await expect(page).toHaveURL(/\\/backend\\/roles(?:\\?.*)?$/);\n\n await page.getByRole('textbox', { name: 'Search' }).fill(roleName);\n await page.getByRole('row', { name: new RegExp(roleName, 'i') }).click();\n await expect(page).toHaveURL(/\\/backend\\/roles\\/[0-9a-f-]{36}\\/edit$/i);\n roleId = page.url().match(/\\/backend\\/roles\\/([0-9a-f-]{36})\\/edit$/i)?.[1] ?? null;\n\n const featureCheckbox = page.getByRole('checkbox', { name: /view api keys \\(api_keys\\.view\\)/i }).first();\n if ((await featureCheckbox.count()) === 0 || !(await featureCheckbox.isVisible().catch(() => false))) {\n test.skip(true, 'Target ACL checkbox is not visible for this role.');\n }\n if (!(await featureCheckbox.isChecked())) {\n await featureCheckbox.check();\n }\n await expect(featureCheckbox).toBeChecked();\n await page.getByRole('button', { name: 'Save' }).first().click();\n\n await expect(page).toHaveURL(/\\/backend\\/roles(?:\\?.*)?$/);\n await page.getByRole('textbox', { name: 'Search' }).fill(roleName);\n await page.getByRole('row', { name: new RegExp(roleName, 'i') }).click();\n await expect(featureCheckbox).toBeChecked();\n } finally {\n if (token && roleId) {\n await apiRequest(request, 'DELETE', `/api/auth/roles?id=${encodeURIComponent(roleId)}`, { token }).catch(() => {});\n }\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AACtB,SAAS,YAAY,oBAAoB;AAMzC,KAAK,SAAS,mDAAmD,MAAM;AACrE,OAAK,kDAAkD,OAAO,EAAE,MAAM,QAAQ,MAAM;AAClF,UAAM,WAAW,eAAe,KAAK,IAAI,CAAC;AAC1C,QAAI,QAAuB;AAC3B,QAAI,SAAwB;AAE5B,QAAI;AACF,cAAQ,MAAM,aAAa,OAAO;AAClC,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,KAAK,KAAK,uBAAuB;AACvC,YAAM,KAAK,UAAU,SAAS,EAAE,MAAM,EAAE,KAAK,QAAQ;AACrD,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM;AACjE,YAAM,OAAO,IAAI,EAAE,UAAU,4BAA4B;AAEzD,YAAM,KAAK,UAAU,WAAW,EAAE,MAAM,SAAS,CAAC,EAAE,KAAK,QAAQ;AACjE,YAAM,KAAK,UAAU,OAAO,EAAE,MAAM,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,MAAM;AACvE,YAAM,OAAO,IAAI,EAAE,UAAU,yCAAyC;AACtE,eAAS,KAAK,IAAI,EAAE,MAAM,2CAA2C,IAAI,CAAC,KAAK;AAE/E,YAAM,kBAAkB,KAAK,UAAU,YAAY,EAAE,MAAM,oCAAoC,CAAC,EAAE,MAAM;AACxG,UAAK,MAAM,gBAAgB,MAAM,MAAO,KAAK,CAAE,MAAM,gBAAgB,UAAU,EAAE,MAAM,MAAM,KAAK,GAAI;AACpG,aAAK,KAAK,MAAM,mDAAmD;AAAA,MACrE;AACA,UAAI,CAAE,MAAM,gBAAgB,UAAU,GAAI;AACxC,cAAM,gBAAgB,MAAM;AAAA,MAC9B;AACA,YAAM,OAAO,eAAe,EAAE,YAAY;AAC1C,YAAM,KAAK,UAAU,UAAU,EAAE,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM;AAE/D,YAAM,OAAO,IAAI,EAAE,UAAU,4BAA4B;AACzD,YAAM,KAAK,UAAU,WAAW,EAAE,MAAM,SAAS,CAAC,EAAE,KAAK,QAAQ;AACjE,YAAM,KAAK,UAAU,OAAO,EAAE,MAAM,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,MAAM;AACvE,YAAM,OAAO,eAAe,EAAE,YAAY;AAAA,IAC5C,UAAE;AACA,UAAI,SAAS,QAAQ;AACnB,cAAM,WAAW,SAAS,UAAU,sBAAsB,mBAAmB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM;AAAA,QAAC,CAAC;AAAA,MACnH;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
test.describe("TC-AUTH-014: Organization Switching", () => {
|
|
4
|
-
test("should allow switching organization context from the header selector", async ({ page }) => {
|
|
5
|
-
await login(page, "admin");
|
|
6
|
-
await page.goto("/backend/users");
|
|
7
|
-
const orgSelect = page.getByRole("combobox").first();
|
|
8
|
-
await expect(orgSelect).toBeVisible();
|
|
9
|
-
await orgSelect.selectOption({ label: "All organizations" });
|
|
10
|
-
await expect(orgSelect).toHaveValue("");
|
|
11
|
-
const orgValue = await orgSelect.evaluate((element) => {
|
|
12
|
-
const select = element;
|
|
13
|
-
for (const option of Array.from(select.options)) {
|
|
14
|
-
if (option.value && option.value.trim().length > 0) return option.value;
|
|
15
|
-
}
|
|
16
|
-
return "";
|
|
17
|
-
});
|
|
18
|
-
if (!orgValue) {
|
|
19
|
-
test.skip(true, "No scoped organizations available to switch to.");
|
|
20
|
-
}
|
|
21
|
-
await orgSelect.selectOption(orgValue);
|
|
22
|
-
await expect(orgSelect).toHaveValue(orgValue);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
//# sourceMappingURL=TC-AUTH-014.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-014.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\n\n/**\n * TC-AUTH-014: Organization Switching\n * Source: .ai/qa/scenarios/TC-AUTH-014-organization-switching.md\n */\ntest.describe('TC-AUTH-014: Organization Switching', () => {\n test('should allow switching organization context from the header selector', async ({ page }) => {\n await login(page, 'admin');\n await page.goto('/backend/users');\n\n const orgSelect = page.getByRole('combobox').first();\n await expect(orgSelect).toBeVisible();\n await orgSelect.selectOption({ label: 'All organizations' });\n await expect(orgSelect).toHaveValue('');\n\n const orgValue = await orgSelect.evaluate((element) => {\n const select = element as HTMLSelectElement;\n for (const option of Array.from(select.options)) {\n if (option.value && option.value.trim().length > 0) return option.value;\n }\n return '';\n });\n if (!orgValue) {\n test.skip(true, 'No scoped organizations available to switch to.');\n }\n await orgSelect.selectOption(orgValue);\n await expect(orgSelect).toHaveValue(orgValue);\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AAMtB,KAAK,SAAS,uCAAuC,MAAM;AACzD,OAAK,wEAAwE,OAAO,EAAE,KAAK,MAAM;AAC/F,UAAM,MAAM,MAAM,OAAO;AACzB,UAAM,KAAK,KAAK,gBAAgB;AAEhC,UAAM,YAAY,KAAK,UAAU,UAAU,EAAE,MAAM;AACnD,UAAM,OAAO,SAAS,EAAE,YAAY;AACpC,UAAM,UAAU,aAAa,EAAE,OAAO,oBAAoB,CAAC;AAC3D,UAAM,OAAO,SAAS,EAAE,YAAY,EAAE;AAEtC,UAAM,WAAW,MAAM,UAAU,SAAS,CAAC,YAAY;AACrD,YAAM,SAAS;AACf,iBAAW,UAAU,MAAM,KAAK,OAAO,OAAO,GAAG;AAC/C,YAAI,OAAO,SAAS,OAAO,MAAM,KAAK,EAAE,SAAS,EAAG,QAAO,OAAO;AAAA,MACpE;AACA,aAAO;AAAA,IACT,CAAC;AACD,QAAI,CAAC,UAAU;AACb,WAAK,KAAK,MAAM,iDAAiD;AAAA,IACnE;AACA,UAAM,UAAU,aAAa,QAAQ;AACrC,UAAM,OAAO,SAAS,EAAE,YAAY,QAAQ;AAAA,EAC9C,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "@playwright/test";
|
|
2
|
-
import { login } from "@open-mercato/core/modules/core/__integration__/helpers/auth";
|
|
3
|
-
test.describe("TC-AUTH-015: Access Denied for Missing Permissions", () => {
|
|
4
|
-
test("should deny employee access to users administration page", async ({ page }) => {
|
|
5
|
-
await login(page, "employee");
|
|
6
|
-
await page.goto("/backend/users");
|
|
7
|
-
const url = page.url();
|
|
8
|
-
const deniedText = page.getByText(/don't have access|permission|forbidden|not authorized|access denied/i).first();
|
|
9
|
-
const usersHeadingVisible = await page.getByRole("heading", { name: "Users" }).isVisible().catch(() => false);
|
|
10
|
-
if (usersHeadingVisible) {
|
|
11
|
-
test.skip(true, "Users page is accessible for employee in this environment.");
|
|
12
|
-
}
|
|
13
|
-
if (/\/login/.test(url)) {
|
|
14
|
-
await expect(page).toHaveURL(/\/login/);
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
await expect(deniedText).toBeVisible();
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
//# sourceMappingURL=TC-AUTH-015.spec.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/auth/__integration__/TC-AUTH-015.spec.ts"],
|
|
4
|
-
"sourcesContent": ["import { expect, test } from '@playwright/test';\nimport { login } from '@open-mercato/core/modules/core/__integration__/helpers/auth';\n\n/**\n * TC-AUTH-015: Access Denied for Missing Permissions\n * Source: .ai/qa/scenarios/TC-AUTH-015-access-denied.md\n */\ntest.describe('TC-AUTH-015: Access Denied for Missing Permissions', () => {\n test('should deny employee access to users administration page', async ({ page }) => {\n await login(page, 'employee');\n await page.goto('/backend/users');\n\n const url = page.url();\n const deniedText = page.getByText(/don't have access|permission|forbidden|not authorized|access denied/i).first();\n const usersHeadingVisible = await page.getByRole('heading', { name: 'Users' }).isVisible().catch(() => false);\n\n if (usersHeadingVisible) {\n test.skip(true, 'Users page is accessible for employee in this environment.');\n }\n\n if (/\\/login/.test(url)) {\n await expect(page).toHaveURL(/\\/login/);\n return;\n }\n\n await expect(deniedText).toBeVisible();\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,QAAQ,YAAY;AAC7B,SAAS,aAAa;AAMtB,KAAK,SAAS,sDAAsD,MAAM;AACxE,OAAK,4DAA4D,OAAO,EAAE,KAAK,MAAM;AACnF,UAAM,MAAM,MAAM,UAAU;AAC5B,UAAM,KAAK,KAAK,gBAAgB;AAEhC,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,aAAa,KAAK,UAAU,sEAAsE,EAAE,MAAM;AAChH,UAAM,sBAAsB,MAAM,KAAK,UAAU,WAAW,EAAE,MAAM,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,MAAM,KAAK;AAE5G,QAAI,qBAAqB;AACvB,WAAK,KAAK,MAAM,4DAA4D;AAAA,IAC9E;AAEA,QAAI,UAAU,KAAK,GAAG,GAAG;AACvB,YAAM,OAAO,IAAI,EAAE,UAAU,SAAS;AACtC;AAAA,IACF;AAEA,UAAM,OAAO,UAAU,EAAE,YAAY;AAAA,EACvC,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|