feat: add duplicate account import prevention #189
Merged
jose
merged 10 commits from account-import-duplicate-prevention
into master
3 days ago
5 changed files with 215 additions and 41 deletions
@ -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(); |
|||
}); |
|||
}); |
Loading…
Reference in new issue