customer-registration 0.0.133 → 0.0.135

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.
@@ -28,7 +28,7 @@ async function lookupCustomerByEmail(scope, email) {
28
28
  const result = await knex.raw(`SELECT id, email, has_account, first_name, last_name
29
29
  FROM customer
30
30
  WHERE lower(email) = lower(?)
31
- ORDER BY created_at DESC
31
+ ORDER BY has_account DESC NULLS LAST, created_at DESC
32
32
  LIMIT 1`, [normalized]);
33
33
  const row = firstKnexRow(result);
34
34
  if (!row?.id) {
@@ -29,7 +29,7 @@ async function lookupCustomerByPhone(scope, phone) {
29
29
  const result = await knex.raw(`SELECT id, email, phone, has_account, first_name, last_name
30
30
  FROM customer
31
31
  WHERE phone = ?
32
- ORDER BY created_at DESC
32
+ ORDER BY has_account DESC NULLS LAST, created_at DESC
33
33
  LIMIT 1`, [normalized]);
34
34
  const row = firstKnexRow(result);
35
35
  if (!row?.id) {
package/README.md CHANGED
@@ -787,6 +787,32 @@ Placeholder module service for registration-related extension points.
787
787
  5. **Channel-aware password reset**
788
788
  Use `/auth/customer/emailpass/reset-password` and `/auth/customer/emailpass/update` with email, phone, or `email_or_phone`.
789
789
 
790
+ ## Known Issues & Fixes
791
+
792
+ ### Issue: OTP login treats registered users as new when a guest row also exists
793
+
794
+ **Problem:**
795
+ For some returning users, email/phone OTP verify failed with Medusa's
796
+ `Customer with this email already has an account` (or the phone equivalent).
797
+ Send OTP could also report `is_new_user: true` incorrectly.
798
+
799
+ **Root Cause:**
800
+ Guest checkout and registration can leave two `customer` rows for the same
801
+ email or phone (`has_account = true` and a later `has_account = false` guest).
802
+ OTP lookup used `ORDER BY created_at DESC LIMIT 1`, so it preferred the newer
803
+ guest and the verify flow tried to create another account.
804
+
805
+ **Solution:**
806
+ `lookupCustomerByEmail` / `lookupCustomerByPhone` now order by
807
+ `has_account DESC NULLS LAST, created_at DESC`, so a registered account always
808
+ wins. Guest rows are used only when no registered account exists. No data
809
+ migration is required.
810
+
811
+ **Prevention:**
812
+ - Prefer registered customers (`has_account = true`) in any identifier lookup
813
+ that drives login vs register.
814
+ - Keep regression tests that assert the SQL ordering contract.
815
+
790
816
  ## Troubleshooting
791
817
 
792
818
  ### `storefrontUrl is required when password_reset is configured`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "customer-registration",
3
- "version": "0.0.133",
3
+ "version": "0.0.135",
4
4
  "description": "Medusa plugin that overrides store customer registration, enforces email/phone verification flags, and provides OTP management module.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",
@@ -1,143 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const utils_1 = require("@medusajs/framework/utils");
5
- const build_unified_login_auth_data_1 = require("../build-unified-login-auth-data");
6
- function makeReq(partial) {
7
- return {
8
- url: "/auth/customer/emailpass",
9
- headers: {},
10
- query: partial.query ?? {},
11
- body: partial.body,
12
- protocol: "http",
13
- };
14
- }
15
- (0, vitest_1.describe)("buildUnifiedLoginAuthData", () => {
16
- const cases = [
17
- {
18
- name: "POST body only",
19
- req: makeReq({
20
- body: { email: "a@b.co", password: "x" },
21
- }),
22
- wantBody: { email: "a@b.co", password: "x" },
23
- },
24
- {
25
- name: "GET query fills missing body fields",
26
- req: makeReq({
27
- body: {},
28
- query: { phone: "+1555", password: "secret" },
29
- }),
30
- wantBody: { phone: "+1555", password: "secret" },
31
- },
32
- {
33
- name: "body overrides query for same key",
34
- req: makeReq({
35
- body: { email: "primary@x.com", password: "p1" },
36
- query: { email: "ignored@x.com", password: "p2" },
37
- }),
38
- wantBody: { email: "primary@x.com", password: "p1" },
39
- },
40
- {
41
- name: "array query param takes first string",
42
- req: makeReq({
43
- body: {},
44
- query: { email: ["x@y.com", "z@y.com"], password: "pw" },
45
- }),
46
- wantBody: { email: "x@y.com", password: "pw" },
47
- },
48
- {
49
- name: "email_or_phone with @ becomes email",
50
- req: makeReq({
51
- body: { email_or_phone: "user@example.com", password: "pw" },
52
- }),
53
- wantBody: { email: "user@example.com", password: "pw" },
54
- },
55
- {
56
- name: "email_or_phone without @ becomes phone",
57
- req: makeReq({
58
- body: { email_or_phone: "+919898120674", password: "pw" },
59
- }),
60
- wantBody: { phone: "+919898120674", password: "pw" },
61
- },
62
- {
63
- name: "email_or_phone trimmed",
64
- req: makeReq({
65
- body: { email_or_phone: " a@b.co ", password: "x" },
66
- }),
67
- wantBody: { email: "a@b.co", password: "x" },
68
- },
69
- {
70
- name: "email_or_phone phone trimmed",
71
- req: makeReq({
72
- body: { email_or_phone: " +15550001 ", password: "x" },
73
- }),
74
- wantBody: { phone: "+15550001", password: "x" },
75
- },
76
- {
77
- name: "query email_or_phone fills when body omits it",
78
- req: makeReq({
79
- body: { password: "secret" },
80
- query: { email_or_phone: "+15551234" },
81
- }),
82
- wantBody: { phone: "+15551234", password: "secret" },
83
- },
84
- {
85
- name: "body email_or_phone overrides query email_or_phone",
86
- req: makeReq({
87
- body: { email_or_phone: "pick@me.com", password: "p1" },
88
- query: { email_or_phone: "+1999", password: "p2" },
89
- }),
90
- wantBody: { email: "pick@me.com", password: "p1" },
91
- },
92
- {
93
- name: "array query email_or_phone takes first string",
94
- req: makeReq({
95
- body: {},
96
- query: { email_or_phone: ["z@w.com", "a@b.com"], password: "pw" },
97
- }),
98
- wantBody: { email: "z@w.com", password: "pw" },
99
- },
100
- ];
101
- vitest_1.it.each(cases)("$name", ({ req, wantBody }) => {
102
- const auth = (0, build_unified_login_auth_data_1.buildUnifiedLoginAuthData)(req);
103
- (0, vitest_1.expect)(auth.body).toEqual(wantBody);
104
- (0, vitest_1.expect)(auth.query).toBe(req.query);
105
- });
106
- const errorCases = [
107
- {
108
- name: "email_or_phone with email",
109
- req: makeReq({
110
- body: {
111
- email_or_phone: "x@y.com",
112
- email: "a@b.co",
113
- password: "p",
114
- },
115
- }),
116
- wantMessageSubstring: "email_or_phone together",
117
- },
118
- {
119
- name: "email_or_phone with phone",
120
- req: makeReq({
121
- body: {
122
- email_or_phone: "+1555",
123
- phone: "+1666",
124
- password: "p",
125
- },
126
- }),
127
- wantMessageSubstring: "email_or_phone together",
128
- },
129
- ];
130
- vitest_1.it.each(errorCases)("$name", ({ req, wantMessageSubstring }) => {
131
- try {
132
- (0, build_unified_login_auth_data_1.buildUnifiedLoginAuthData)(req);
133
- vitest_1.expect.fail("expected MedusaError");
134
- }
135
- catch (e) {
136
- (0, vitest_1.expect)(e).toBeInstanceOf(utils_1.MedusaError);
137
- const err = e;
138
- (0, vitest_1.expect)(err.type).toBe(utils_1.MedusaError.Types.INVALID_DATA);
139
- (0, vitest_1.expect)(err.message).toContain(wantMessageSubstring);
140
- }
141
- });
142
- });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdW5pZmllZC1sb2dpbi1hdXRoLWRhdGEudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYXV0aC9jdXN0b21lci9zaGFyZWQvX190ZXN0c19fL2J1aWxkLXVuaWZpZWQtbG9naW4tYXV0aC1kYXRhLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBNkM7QUFFN0MscURBQXVEO0FBQ3ZELG9GQUE0RTtBQUU1RSxTQUFTLE9BQU8sQ0FBQyxPQUdoQjtJQUNDLE9BQU87UUFDTCxHQUFHLEVBQUUsMEJBQTBCO1FBQy9CLE9BQU8sRUFBRSxFQUFFO1FBQ1gsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtRQUMxQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsUUFBUSxFQUFFLE1BQU07S0FDQSxDQUFBO0FBQ3BCLENBQUM7QUFFRCxJQUFBLGlCQUFRLEVBQUMsMkJBQTJCLEVBQUUsR0FBRyxFQUFFO0lBQ3pDLE1BQU0sS0FBSyxHQUlOO1FBQ0g7WUFDRSxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLEdBQUcsRUFBRSxPQUFPLENBQUM7Z0JBQ1gsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO2FBQ3pDLENBQUM7WUFDRixRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7U0FDN0M7UUFDRDtZQUNFLElBQUksRUFBRSxxQ0FBcUM7WUFDM0MsR0FBRyxFQUFFLE9BQU8sQ0FBQztnQkFDWCxJQUFJLEVBQUUsRUFBRTtnQkFDUixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7YUFDOUMsQ0FBQztZQUNGLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFB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
@@ -1,79 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const utils_1 = require("@medusajs/framework/utils");
5
- const parse_login_body_1 = require("../parse-login-body");
6
- (0, vitest_1.describe)("parseCustomerLoginBody", () => {
7
- const cases = [
8
- {
9
- name: "both config + email only",
10
- body: { email: "a@b.co", password: "x" },
11
- loginIdentifier: "both",
12
- want: { mode: "email" },
13
- },
14
- {
15
- name: "both config + phone only",
16
- body: { phone: "+15550001", password: "x" },
17
- loginIdentifier: "both",
18
- want: { mode: "phone" },
19
- },
20
- {
21
- name: "email config + email (trim)",
22
- body: { email: " u@v.com ", password: "x" },
23
- loginIdentifier: "email",
24
- want: { mode: "email" },
25
- },
26
- {
27
- name: "phone config + phone",
28
- body: { phone: "7428730894", password: "x" },
29
- loginIdentifier: "phone",
30
- want: { mode: "phone" },
31
- },
32
- ];
33
- vitest_1.it.each(cases)("$name", ({ body, loginIdentifier, want }) => {
34
- (0, vitest_1.expect)((0, parse_login_body_1.parseCustomerLoginBody)(body, loginIdentifier)).toEqual(want);
35
- });
36
- const errorCases = [
37
- {
38
- name: "both present",
39
- body: { email: "a@b.co", phone: "+1", password: "x" },
40
- loginIdentifier: "both",
41
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
42
- wantMessageSubstring: "not both",
43
- },
44
- {
45
- name: "neither present",
46
- body: { password: "x" },
47
- loginIdentifier: "both",
48
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
49
- wantMessageSubstring: "Either email or phone",
50
- },
51
- {
52
- name: "email config rejects phone-only body",
53
- body: { phone: "+1555", password: "x" },
54
- loginIdentifier: "email",
55
- wantType: utils_1.MedusaError.Types.UNAUTHORIZED,
56
- wantMessageSubstring: "Email login is not enabled",
57
- },
58
- {
59
- name: "phone config rejects email-only body",
60
- body: { email: "a@b.co", password: "x" },
61
- loginIdentifier: "phone",
62
- wantType: utils_1.MedusaError.Types.UNAUTHORIZED,
63
- wantMessageSubstring: "Phone login is not enabled",
64
- },
65
- ];
66
- vitest_1.it.each(errorCases)("$name", ({ body, loginIdentifier, wantType, wantMessageSubstring }) => {
67
- try {
68
- (0, parse_login_body_1.parseCustomerLoginBody)(body, loginIdentifier);
69
- vitest_1.expect.fail("expected MedusaError");
70
- }
71
- catch (e) {
72
- (0, vitest_1.expect)(e).toBeInstanceOf(utils_1.MedusaError);
73
- const err = e;
74
- (0, vitest_1.expect)(err.type).toBe(wantType);
75
- (0, vitest_1.expect)(err.message).toContain(wantMessageSubstring);
76
- }
77
- });
78
- });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtbG9naW4tYm9keS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9hdXRoL2N1c3RvbWVyL3NoYXJlZC9fX3Rlc3RzX18vcGFyc2UtbG9naW4tYm9keS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQTZDO0FBQzdDLHFEQUF1RDtBQUN2RCwwREFHNEI7QUFFNUIsSUFBQSxpQkFBUSxFQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtJQUN0QyxNQUFNLEtBQUssR0FLTjtRQUNIO1lBQ0UsSUFBSSxFQUFFLDBCQUEwQjtZQUNoQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDeEMsZUFBZSxFQUFFLE1BQU07WUFDdkIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtTQUN4QjtRQUNEO1lBQ0UsSUFBSSxFQUFFLDBCQUEwQjtZQUNoQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDM0MsZUFBZSxFQUFFLE1BQU07WUFDdkIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtTQUN4QjtRQUNEO1lBQ0UsSUFBSSxFQUFFLDZCQUE2QjtZQUNuQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDN0MsZUFBZSxFQUFFLE9BQU87WUFDeEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtTQUN4QjtRQUNEO1lBQ0UsSUFBSSxFQUFFLHNCQUFzQjtZQUM1QixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDNUMsZUFBZSxFQUFFLE9BQU87WUFDeEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFF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
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const utils_1 = require("@medusajs/framework/utils");
5
- const parse_register_body_1 = require("../parse-register-body");
6
- (0, vitest_1.describe)("parseCustomerRegisterBody", () => {
7
- const okCases = [
8
- {
9
- name: "email config",
10
- body: { email: "a@b.co", password: "x" },
11
- registrationIdentifier: "email",
12
- want: { mode: "email" },
13
- },
14
- {
15
- name: "phone config",
16
- body: { phone: "+15551", password: "x" },
17
- registrationIdentifier: "phone",
18
- want: { mode: "phone" },
19
- },
20
- {
21
- name: "both config email only",
22
- body: { email: "u@v.com", password: "Secret1!" },
23
- registrationIdentifier: "both",
24
- want: { mode: "email" },
25
- },
26
- ];
27
- vitest_1.it.each(okCases)("$name", ({ body, registrationIdentifier, want }) => {
28
- (0, vitest_1.expect)((0, parse_register_body_1.parseCustomerRegisterBody)(body, registrationIdentifier)).toEqual(want);
29
- });
30
- const errCases = [
31
- {
32
- name: "missing password",
33
- body: { email: "a@b.co" },
34
- registrationIdentifier: "email",
35
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
36
- wantSubstring: "Password is required",
37
- },
38
- {
39
- name: "both rejects phone-only",
40
- body: { phone: "+1", password: "x" },
41
- registrationIdentifier: "both",
42
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
43
- wantSubstring: "email and password is required first",
44
- },
45
- {
46
- name: "both rejects email+phone",
47
- body: { email: "a@b.co", phone: "+1", password: "x" },
48
- registrationIdentifier: "both",
49
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
50
- wantSubstring: "only email and password",
51
- },
52
- {
53
- name: "email rejects phone-only",
54
- body: { phone: "+1", password: "x" },
55
- registrationIdentifier: "email",
56
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
57
- wantSubstring: "Register with your email",
58
- },
59
- {
60
- name: "phone rejects email-only",
61
- body: { email: "a@b.co", password: "x" },
62
- registrationIdentifier: "phone",
63
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
64
- wantSubstring: "Register with your phone",
65
- },
66
- {
67
- name: "email XOR violated",
68
- body: { email: "a@b.co", phone: "+1", password: "x" },
69
- registrationIdentifier: "email",
70
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
71
- wantSubstring: "not both",
72
- },
73
- ];
74
- vitest_1.it.each(errCases)("$name", ({ body, registrationIdentifier, wantType, wantSubstring }) => {
75
- try {
76
- (0, parse_register_body_1.parseCustomerRegisterBody)(body, registrationIdentifier);
77
- vitest_1.expect.fail("expected MedusaError");
78
- }
79
- catch (e) {
80
- (0, vitest_1.expect)(e).toBeInstanceOf(utils_1.MedusaError);
81
- const err = e;
82
- (0, vitest_1.expect)(err.type).toBe(wantType);
83
- (0, vitest_1.expect)(err.message).toContain(wantSubstring);
84
- }
85
- });
86
- });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtcmVnaXN0ZXItYm9keS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9hdXRoL2N1c3RvbWVyL3NoYXJlZC9fX3Rlc3RzX18vcGFyc2UtcmVnaXN0ZXItYm9keS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQTZDO0FBQzdDLHFEQUF1RDtBQUN2RCxnRUFHK0I7QUFFL0IsSUFBQSxpQkFBUSxFQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtJQUN6QyxNQUFNLE9BQU8sR0FLUjtRQUNIO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQ3hDLHNCQUFzQixFQUFFLE9BQU87WUFDL0IsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtTQUN4QjtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQ3hDLHNCQUFzQixFQUFFLE9BQU87WUFDL0IsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtTQUN4QjtRQUNEO1lBQ0UsSUFBSSxFQUFFLHdCQUF3QjtZQUM5QixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7WUFDaEQsc0JBQXNCLEVBQUUsTUFBTTtZQUM5QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1NBQ3hCO0tBQ0YsQ0FBQTtJQUVELFdBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUNuRSxJQUFBLGVBQU0sRUFB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
@@ -1,144 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const utils_1 = require("@medusajs/framework/utils");
5
- const parse_reset_request_body_1 = require("../parse-reset-request-body");
6
- (0, vitest_1.describe)("parseResetRequestBody", () => {
7
- const happyCases = [
8
- {
9
- name: "both + email only",
10
- body: { email: "A@B.CO", password: "ignored" },
11
- loginIdentifier: "both",
12
- want: { channel: "email", email: "a@b.co" },
13
- },
14
- {
15
- name: "both + identifier as email",
16
- body: { identifier: "u@v.com" },
17
- loginIdentifier: "both",
18
- want: { channel: "email", email: "u@v.com" },
19
- },
20
- {
21
- name: "both + phone",
22
- body: { phone: "+15551234567" },
23
- loginIdentifier: "both",
24
- want: { channel: "phone", phone: "+15551234567" },
25
- },
26
- {
27
- name: "both + email_or_phone email",
28
- body: { email_or_phone: " x@y.z " },
29
- loginIdentifier: "both",
30
- want: { channel: "email", email: "x@y.z" },
31
- },
32
- {
33
- name: "both + email_or_phone phone",
34
- body: { email_or_phone: "9988776655" },
35
- loginIdentifier: "both",
36
- want: { channel: "phone", phone: "9988776655" },
37
- },
38
- {
39
- name: "email login + email",
40
- body: { email: "a@b.co" },
41
- loginIdentifier: "email",
42
- want: { channel: "email", email: "a@b.co" },
43
- },
44
- {
45
- name: "email login + email_or_phone with @",
46
- body: { email_or_phone: "a@b.co" },
47
- loginIdentifier: "email",
48
- want: { channel: "email", email: "a@b.co" },
49
- },
50
- {
51
- name: "phone login + phone",
52
- body: { phone: "+12345678901" },
53
- loginIdentifier: "phone",
54
- want: { channel: "phone", phone: "+12345678901" },
55
- },
56
- {
57
- name: "phone login + email_or_phone digits",
58
- body: { email_or_phone: "+12345678901" },
59
- loginIdentifier: "phone",
60
- want: { channel: "phone", phone: "+12345678901" },
61
- },
62
- ];
63
- vitest_1.it.each(happyCases)("$name", ({ body, loginIdentifier, want }) => {
64
- (0, vitest_1.expect)((0, parse_reset_request_body_1.parseResetRequestBody)(body, loginIdentifier)).toEqual(want);
65
- });
66
- const errorCases = [
67
- {
68
- name: "identifier and email mismatch",
69
- body: { identifier: "a@a.com", email: "b@b.com" },
70
- loginIdentifier: "both",
71
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
72
- wantMessageSubstring: "identifier and email",
73
- },
74
- {
75
- name: "email_or_phone with email",
76
- body: { email_or_phone: "a@b.co", email: "c@d.co" },
77
- loginIdentifier: "both",
78
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
79
- wantMessageSubstring: "email_or_phone together",
80
- },
81
- {
82
- name: "email and phone both",
83
- body: { email: "a@b.co", phone: "+15550001111" },
84
- loginIdentifier: "both",
85
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
86
- wantMessageSubstring: "not both",
87
- },
88
- {
89
- name: "neither identifier",
90
- body: { password: "x" },
91
- loginIdentifier: "both",
92
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
93
- wantMessageSubstring: "Either email, phone, or email_or_phone",
94
- },
95
- {
96
- name: "invalid phone format",
97
- body: { phone: "abc" },
98
- loginIdentifier: "both",
99
- wantType: utils_1.MedusaError.Types.INVALID_DATA,
100
- wantMessageSubstring: "Invalid phone number format",
101
- },
102
- {
103
- name: "email login rejects phone",
104
- body: { phone: "+15550001111" },
105
- loginIdentifier: "email",
106
- wantType: utils_1.MedusaError.Types.UNAUTHORIZED,
107
- wantMessageSubstring: "Email reset is not enabled",
108
- },
109
- {
110
- name: "email login rejects email_or_phone phone",
111
- body: { email_or_phone: "+15550001111" },
112
- loginIdentifier: "email",
113
- wantType: utils_1.MedusaError.Types.UNAUTHORIZED,
114
- wantMessageSubstring: "Email reset is not enabled",
115
- },
116
- {
117
- name: "phone login rejects email",
118
- body: { email: "a@b.co" },
119
- loginIdentifier: "phone",
120
- wantType: utils_1.MedusaError.Types.UNAUTHORIZED,
121
- wantMessageSubstring: "Phone reset is not enabled",
122
- },
123
- {
124
- name: "phone login rejects email_or_phone email",
125
- body: { email_or_phone: "a@b.co" },
126
- loginIdentifier: "phone",
127
- wantType: utils_1.MedusaError.Types.UNAUTHORIZED,
128
- wantMessageSubstring: "Phone reset is not enabled",
129
- },
130
- ];
131
- vitest_1.it.each(errorCases)("$name", ({ body, loginIdentifier, wantType, wantMessageSubstring }) => {
132
- try {
133
- (0, parse_reset_request_body_1.parseResetRequestBody)(body, loginIdentifier);
134
- vitest_1.expect.fail("expected MedusaError");
135
- }
136
- catch (e) {
137
- (0, vitest_1.expect)(e).toBeInstanceOf(utils_1.MedusaError);
138
- const err = e;
139
- (0, vitest_1.expect)(err.type).toBe(wantType);
140
- (0, vitest_1.expect)(err.message).toContain(wantMessageSubstring);
141
- }
142
- });
143
- });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtcmVzZXQtcmVxdWVzdC1ib2R5LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvY3VzdG9tZXIvc2hhcmVkL19fdGVzdHNfXy9wYXJzZS1yZXNldC1yZXF1ZXN0LWJvZHkudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUE2QztBQUM3QyxxREFBdUQ7QUFDdkQsMEVBR29DO0FBR3BDLElBQUEsaUJBQVEsRUFBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7SUFDckMsTUFBTSxVQUFVLEdBS1g7UUFDSDtZQUNFLElBQUksRUFBRSxtQkFBbUI7WUFDekIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO1lBQzlDLGVBQWUsRUFBRSxNQUFNO1lBQ3ZCLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtTQUM1QztRQUNEO1lBQ0UsSUFBSSxFQUFFLDRCQUE0QjtZQUNsQyxJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO1lBQy9CLGVBQWUsRUFBRSxNQUFNO1lBQ3ZCLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtTQUM3QztRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtZQUMvQixlQUFlLEVBQUUsTUFBTTtZQUN2QixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7U0FDbEQ7UUFDRDtZQUNFLElBQUksRUFBRSw2QkFBNkI7WUFDbkMsSUFBSSxFQUFFLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRTtZQUNyQyxlQUFlLEVBQUUsTUFBTTtZQUN2QixJQUFJLEVBQUUs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