import React from 'react'; import { describe, it, expect, vi } from 'vitest'; import { render, screen, waitFor } from '@testing-library/react'; import AccountPage from '../app/account/page'; // Account page only needs next/navigation stubbed; firebase-client initialises under the // staging test env and reports a signed-out user (onAuthStateChanged -> null). vi.mock('next/navigation', () => ({ usePathname: () => '/account', useRouter: () => ({ push: vi.fn(), replace: vi.fn(), back: vi.fn() }), })); describe('WEB-W1b/W-2FA/W-devices: account page truthful states', () => { it('does not fabricate a connected mobile device, paired comms, or sync status', async () => { render(); await waitFor(() => { expect(screen.getByText('App Connections & Sync')).toBeDefined(); }); // Fabricated device/pairing claims must be gone. expect(screen.queryByText(/iPhone 16 Pro/)).toBeNull(); expect(screen.queryByText(/Cardo Packtalk Edge/)).toBeNull(); expect(screen.queryByText(/^Paired$/)).toBeNull(); expect(screen.queryByText(/^14m ago$/)).toBeNull(); expect(screen.queryByText(/^All Synced$/)).toBeNull(); // Truthful states are present instead. expect(screen.getByText('Authenticated Devices')).toBeDefined(); expect(screen.getByText('Helmet Comms & Accessories')).toBeDefined(); expect(screen.getAllByText(/Unavailable on web/i).length).toBeGreaterThan(0); }); it('never shows 2FA as ENABLED unless a factor is actually enrolled (signed-out = NOT ENABLED)', async () => { render(); await waitFor(() => { expect(screen.getByText('Two-Factor Authentication (2FA)')).toBeDefined(); }); // Exact-match: the badge node reads "NOT ENABLED" for a user with no enrolled factor, // so an exact "ENABLED" node must not exist. expect(screen.getByText('NOT ENABLED')).toBeDefined(); expect(screen.queryByText('ENABLED')).toBeNull(); }); });