|
| 1 | +/* |
| 2 | + * This Source Code Form is subject to the terms of the Mozilla Public |
| 3 | + * License, v. 2.0. If a copy of the MPL was not distributed with this |
| 4 | + * file, you can obtain one at https://mozilla.org/MPL/2.0/. |
| 5 | + * |
| 6 | + * Copyright Oxide Computer Company |
| 7 | + */ |
| 8 | + |
| 9 | +import { expect, test } from '@playwright/test' |
| 10 | + |
| 11 | +import { clickRowAction, expectRowVisible } from './utils' |
| 12 | + |
| 13 | +const token1 = '6e762538-dd89-454e-b6e7-82a199b6e51a' |
| 14 | +const token2 = '9c858b30-bb11-4596-8c5e-c2bf1a26843e' |
| 15 | +const token3 = '29b1d980-e0d3-4318-b714-4a1f3e7b191f' |
| 16 | + |
| 17 | +test('Access tokens', async ({ page }) => { |
| 18 | + await page.goto('/') |
| 19 | + |
| 20 | + await page.getByLabel('User menu').click() |
| 21 | + await page.getByRole('menuitem', { name: 'Settings' }).click() |
| 22 | + await page.getByRole('link', { name: 'Access Tokens' }).click() |
| 23 | + |
| 24 | + await expect(page.getByRole('heading', { name: 'Access Tokens' })).toBeVisible() |
| 25 | + |
| 26 | + const table = page.getByRole('table') |
| 27 | + await expectRowVisible(table, { |
| 28 | + ID: token1, |
| 29 | + created: expect.stringContaining('May 27, 2025'), |
| 30 | + Expires: expect.stringContaining('Jul 3, 2025'), |
| 31 | + }) |
| 32 | + await expectRowVisible(table, { |
| 33 | + ID: token2, |
| 34 | + created: expect.stringContaining('May 20, 2025'), |
| 35 | + Expires: expect.stringContaining('Aug 2, 2025'), |
| 36 | + }) |
| 37 | + await expectRowVisible(table, { |
| 38 | + ID: token3, |
| 39 | + created: expect.stringContaining('May 31, 2025'), |
| 40 | + Expires: 'Never', |
| 41 | + }) |
| 42 | + |
| 43 | + // Delete a token |
| 44 | + await clickRowAction(page, token1, 'Delete') |
| 45 | + await expect(page.getByRole('dialog').getByText('Cannot be undone')).toBeVisible() |
| 46 | + await page.getByRole('button', { name: 'Confirm' }).click() |
| 47 | + |
| 48 | + // Token should be gone |
| 49 | + await expect(page.getByRole('cell', { name: token1 })).toBeHidden() |
| 50 | + |
| 51 | + // Other two tokens should still be there |
| 52 | + await expectRowVisible(table, { ID: token2 }) |
| 53 | + await expectRowVisible(table, { ID: token3 }) |
| 54 | +}) |
0 commit comments