forked from jsnbuchanan/crowd-funder-for-time-pwa
Merge branch 'master' into active_did_redux
This commit is contained in:
@@ -69,8 +69,7 @@
|
||||
*/
|
||||
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { UNNAMED_ENTITY_NAME } from '../src/constants/entities';
|
||||
import { deleteContact, generateAndRegisterEthrUser, importUser } from './testUtils';
|
||||
import { createContactName, generateNewEthrUser, importUser, importUserFromAccount } from './testUtils';
|
||||
import { NOTIFY_CONTACT_INVALID_DID } from '../src/constants/notifications';
|
||||
|
||||
test('Check activity feed - check that server is running', async ({ page }) => {
|
||||
|
||||
63
test-playwright/03-duplicate-import-test.spec.ts
Normal file
63
test-playwright/03-duplicate-import-test.spec.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { importUserFromAccount, getTestUserData } from './testUtils';
|
||||
import { NOTIFY_DUPLICATE_ACCOUNT_IMPORT } from '../src/constants/notifications';
|
||||
|
||||
/**
|
||||
* Test duplicate account import functionality
|
||||
*
|
||||
* This test verifies that:
|
||||
* 1. A user can successfully import an account the first time
|
||||
* 2. Attempting to import the same account again shows a warning message
|
||||
* 3. The duplicate import is prevented
|
||||
*/
|
||||
test.describe('Duplicate Account Import', () => {
|
||||
test('should prevent importing the same account twice', async ({ page }) => {
|
||||
const userData = getTestUserData("00");
|
||||
|
||||
// First import - should succeed
|
||||
await page.goto("./start");
|
||||
await page.getByText("You have a seed").click();
|
||||
await page.getByPlaceholder("Seed Phrase").fill(userData.seedPhrase);
|
||||
await page.getByRole("button", { name: "Import" }).click();
|
||||
|
||||
// Verify first import was successful
|
||||
await expect(page.getByRole("code")).toContainText(userData.did);
|
||||
|
||||
// Navigate back to start page for second import attempt
|
||||
await page.goto("./start");
|
||||
await page.getByText("You have a seed").click();
|
||||
await page.getByPlaceholder("Seed Phrase").fill(userData.seedPhrase);
|
||||
await page.getByRole("button", { name: "Import" }).click();
|
||||
|
||||
// Verify duplicate import shows warning message
|
||||
// The warning can appear either from the pre-check or from the saveNewIdentity error handling
|
||||
await expect(page.getByText(NOTIFY_DUPLICATE_ACCOUNT_IMPORT.message)).toBeVisible();
|
||||
|
||||
// Verify we're still on the import page (not redirected to account)
|
||||
await expect(page.getByPlaceholder("Seed Phrase")).toBeVisible();
|
||||
});
|
||||
|
||||
test('should allow importing different accounts', async ({ page }) => {
|
||||
const userZeroData = getTestUserData("00");
|
||||
const userOneData = getTestUserData("01");
|
||||
|
||||
// Import first user
|
||||
await page.goto("./start");
|
||||
await page.getByText("You have a seed").click();
|
||||
await page.getByPlaceholder("Seed Phrase").fill(userZeroData.seedPhrase);
|
||||
await page.getByRole("button", { name: "Import" }).click();
|
||||
|
||||
// Verify first import was successful
|
||||
await expect(page.getByRole("code")).toContainText(userZeroData.did);
|
||||
|
||||
// Navigate back to start page for second user import
|
||||
await page.goto("./start");
|
||||
await page.getByText("You have a seed").click();
|
||||
await page.getByPlaceholder("Seed Phrase").fill(userOneData.seedPhrase);
|
||||
await page.getByRole("button", { name: "Import" }).click();
|
||||
|
||||
// Verify second import was successful (should not show duplicate warning)
|
||||
await expect(page.getByRole("code")).toContainText(userOneData.did);
|
||||
await expect(page.getByText(NOTIFY_DUPLICATE_ACCOUNT_IMPORT.message)).not.toBeVisible();
|
||||
});
|
||||
});
|
||||
@@ -109,7 +109,7 @@ export async function switchToUser(page: Page, did: string): Promise<void> {
|
||||
await page.getByTestId("didWrapper").locator('code:has-text("did:")');
|
||||
}
|
||||
|
||||
function createContactName(did: string): string {
|
||||
export function createContactName(did: string): string {
|
||||
return "User " + did.slice(11, 14);
|
||||
}
|
||||
|
||||
@@ -144,30 +144,6 @@ export async function generateNewEthrUser(page: Page): Promise<string> {
|
||||
return newDid;
|
||||
}
|
||||
|
||||
// Generate a new random user and register them.
|
||||
// Note that this makes 000 the active user. Use switchToUser to switch to this DID.
|
||||
export async function generateAndRegisterEthrUser(page: Page): Promise<string> {
|
||||
const newDid = await generateNewEthrUser(page);
|
||||
|
||||
await importUser(page, "000"); // switch to user 000
|
||||
|
||||
await page.goto("./contacts");
|
||||
const contactName = createContactName(newDid);
|
||||
await page
|
||||
.getByPlaceholder("URL or DID, Name, Public Key")
|
||||
.fill(`${newDid}, ${contactName}`);
|
||||
await page.locator("button > svg.fa-plus").click();
|
||||
// register them
|
||||
await page.locator('div[role="alert"] button:text-is("Yes")').click();
|
||||
// wait for it to disappear because the next steps may depend on alerts being gone
|
||||
await expect(
|
||||
page.locator('div[role="alert"] button:text-is("Yes")')
|
||||
).toBeHidden();
|
||||
await expect(page.locator("li", { hasText: contactName })).toBeVisible();
|
||||
|
||||
return newDid;
|
||||
}
|
||||
|
||||
// Function to generate a random string of specified length
|
||||
export async function generateRandomString(length: number): Promise<string> {
|
||||
return Math.random()
|
||||
|
||||
Reference in New Issue
Block a user