create-m5kdev 0.38.13 → 0.38.15
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
CHANGED
|
@@ -494,6 +494,7 @@ test("admin creates, bans, unbans, and authenticates a user", async ({ page, req
|
|
|
494
494
|
|
|
495
495
|
const createdRow = page.getByRole("row").filter({ hasText: email });
|
|
496
496
|
await expect(createdRow).toBeVisible();
|
|
497
|
+
await expect(createdRow.getByText(/^verified$/i)).toBeVisible();
|
|
497
498
|
await createdRow.getByLabel("User actions").click();
|
|
498
499
|
await page.getByRole("menuitem", { name: /^ban$/i }).click();
|
|
499
500
|
|
|
@@ -551,6 +552,65 @@ test("admin creates, bans, unbans, and authenticates a user", async ({ page, req
|
|
|
551
552
|
).toBe(true);
|
|
552
553
|
});
|
|
553
554
|
|
|
555
|
+
test("admin verifies email, changes user role, and sets password from users list", async ({
|
|
556
|
+
page,
|
|
557
|
+
request,
|
|
558
|
+
}) => {
|
|
559
|
+
const email = `admin-user-actions.${Date.now()}@auth-e2e.local`;
|
|
560
|
+
const password = "password1234";
|
|
561
|
+
const newPassword = "password5678";
|
|
562
|
+
|
|
563
|
+
await signUp(page, email, password);
|
|
564
|
+
const before = await getUserState(request, profile, email);
|
|
565
|
+
expect(before.user.emailVerified).toBe(false);
|
|
566
|
+
expect(before.user.role).toBe("user");
|
|
567
|
+
|
|
568
|
+
await login(page, profiles.standard.adminEmail, profiles.standard.adminPassword);
|
|
569
|
+
await page.goto("/admin/users");
|
|
570
|
+
await page.locator('input[name="search"]').fill(email);
|
|
571
|
+
|
|
572
|
+
const row = page.getByRole("row").filter({ hasText: email });
|
|
573
|
+
await expect(row).toBeVisible();
|
|
574
|
+
await expect(row.getByText(/^unverified$/i)).toBeVisible();
|
|
575
|
+
|
|
576
|
+
await row.getByLabel("User actions").click();
|
|
577
|
+
await page.getByRole("menuitem", { name: /^verify email$/i }).click();
|
|
578
|
+
await expect(row.getByText(/^verified$/i)).toBeVisible();
|
|
579
|
+
await expect
|
|
580
|
+
.poll(async () => {
|
|
581
|
+
const state = await getUserState(request, profile, email);
|
|
582
|
+
return state.user.emailVerified;
|
|
583
|
+
})
|
|
584
|
+
.toBe(true);
|
|
585
|
+
|
|
586
|
+
await row.getByRole("button", { name: `Role for ${email}` }).click();
|
|
587
|
+
await page.getByRole("option", { name: /^admin$/i }).click();
|
|
588
|
+
await expect
|
|
589
|
+
.poll(async () => {
|
|
590
|
+
const state = await getUserState(request, profile, email);
|
|
591
|
+
return state.user.role;
|
|
592
|
+
})
|
|
593
|
+
.toBe("admin");
|
|
594
|
+
|
|
595
|
+
await row.getByLabel("User actions").click();
|
|
596
|
+
await expect(page.getByRole("menuitem", { name: /^verify email$/i })).toHaveCount(0);
|
|
597
|
+
await page.getByRole("menuitem", { name: /^set password$/i }).click();
|
|
598
|
+
const passwordDialog = page.getByRole("dialog");
|
|
599
|
+
await passwordDialog.getByPlaceholder(/enter password/i).fill(newPassword);
|
|
600
|
+
await passwordDialog.getByRole("button", { name: /^set password$/i }).click();
|
|
601
|
+
await expect(passwordDialog).toBeHidden();
|
|
602
|
+
|
|
603
|
+
await page.locator('input[name="search"]').fill(profiles.standard.adminEmail);
|
|
604
|
+
const adminRow = page.getByRole("row").filter({ hasText: profiles.standard.adminEmail });
|
|
605
|
+
await expect(adminRow).toBeVisible();
|
|
606
|
+
await expect(
|
|
607
|
+
adminRow.getByRole("button", { name: `Role for ${profiles.standard.adminEmail}` })
|
|
608
|
+
).toBeDisabled();
|
|
609
|
+
|
|
610
|
+
await logout(page);
|
|
611
|
+
await login(page, email, newPassword);
|
|
612
|
+
});
|
|
613
|
+
|
|
554
614
|
test("admin manages organization members from organization admin", async ({ page, request }) => {
|
|
555
615
|
const email = `admin-org-member.${Date.now()}@auth-e2e.local`;
|
|
556
616
|
const password = "password1234";
|
|
@@ -7,18 +7,18 @@ catalogs:
|
|
|
7
7
|
"@heroui/react": 3.0.3
|
|
8
8
|
"@heroui/styles": 3.0.3
|
|
9
9
|
"@libsql/client": 0.17.4
|
|
10
|
-
"@m5kdev/backend": 0.38.
|
|
11
|
-
"@m5kdev/commons": 0.38.
|
|
12
|
-
"@m5kdev/config": 0.38.
|
|
13
|
-
"@m5kdev/email": 0.38.
|
|
14
|
-
"@m5kdev/expo": 0.38.
|
|
15
|
-
"@m5kdev/frontend": 0.38.
|
|
16
|
-
"@m5kdev/module-clay": 0.38.
|
|
17
|
-
"@m5kdev/module-docx": 0.38.
|
|
18
|
-
"@m5kdev/module-pdf": 0.38.
|
|
19
|
-
"@m5kdev/module-social": 0.38.
|
|
20
|
-
"@m5kdev/module-video": 0.38.
|
|
21
|
-
"@m5kdev/web-ui": 0.38.
|
|
10
|
+
"@m5kdev/backend": 0.38.15
|
|
11
|
+
"@m5kdev/commons": 0.38.15
|
|
12
|
+
"@m5kdev/config": 0.38.15
|
|
13
|
+
"@m5kdev/email": 0.38.15
|
|
14
|
+
"@m5kdev/expo": 0.38.15
|
|
15
|
+
"@m5kdev/frontend": 0.38.15
|
|
16
|
+
"@m5kdev/module-clay": 0.38.15
|
|
17
|
+
"@m5kdev/module-docx": 0.38.15
|
|
18
|
+
"@m5kdev/module-pdf": 0.38.15
|
|
19
|
+
"@m5kdev/module-social": 0.38.15
|
|
20
|
+
"@m5kdev/module-video": 0.38.15
|
|
21
|
+
"@m5kdev/web-ui": 0.38.15
|
|
22
22
|
"@mastra/core": 1.51.0
|
|
23
23
|
"@openrouter/ai-sdk-provider": 3.0.0
|
|
24
24
|
"@opentelemetry/api": 1.9.0
|