Skip to content

Commit 6739413

Browse files
committed
e2e/acceptance/api-token: Migrate from mirage to @crates-io/msw
1 parent 5114a79 commit 6739413

File tree

1 file changed

+40
-46
lines changed

1 file changed

+40
-46
lines changed

e2e/acceptance/api-token.spec.ts

Lines changed: 40 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,37 @@
1-
import { test, expect } from '@/e2e/helper';
1+
import { expect, test } from '@/e2e/helper';
2+
import { http, HttpResponse } from 'msw';
23

34
test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {
4-
test.beforeEach(async ({ mirage }) => {
5-
await mirage.addHook(server => {
6-
let user = server.create('user', {
7-
login: 'johnnydee',
8-
name: 'John Doe',
9-
10-
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',
11-
});
12-
server.create('api-token', {
13-
user,
14-
name: 'BAR',
15-
createdAt: '2017-11-19T17:59:22',
16-
lastUsedAt: null,
17-
expiredAt: '2017-12-19T17:59:22',
18-
});
19-
20-
server.create('api-token', {
21-
user,
22-
name: 'recently expired',
23-
createdAt: '2017-08-01T12:34:56',
24-
lastUsedAt: '2017-11-02T01:45:14',
25-
expiredAt: '2017-11-19T17:59:22',
26-
});
27-
server.create('api-token', {
28-
user,
29-
name: 'foo',
30-
createdAt: '2017-08-01T12:34:56',
31-
lastUsedAt: '2017-11-02T01:45:14',
32-
});
33-
34-
globalThis.authenticateAs(user);
5+
test.beforeEach(async ({ msw }) => {
6+
let user = msw.db.user.create({
7+
login: 'johnnydee',
8+
name: 'John Doe',
9+
10+
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',
3511
});
12+
msw.db.apiToken.create({
13+
user,
14+
name: 'BAR',
15+
createdAt: '2017-11-19T17:59:22',
16+
lastUsedAt: null,
17+
expiredAt: '2017-12-19T17:59:22',
18+
});
19+
20+
msw.db.apiToken.create({
21+
user,
22+
name: 'recently expired',
23+
createdAt: '2017-08-01T12:34:56',
24+
lastUsedAt: '2017-11-02T01:45:14',
25+
expiredAt: '2017-11-19T17:59:22',
26+
});
27+
msw.db.apiToken.create({
28+
user,
29+
name: 'foo',
30+
createdAt: '2017-08-01T12:34:56',
31+
lastUsedAt: '2017-11-02T01:45:14',
32+
});
33+
34+
await msw.authenticateAs(user);
3635
});
3736

3837
test('/me is showing the list of active API tokens', async ({ page }) => {
@@ -72,16 +71,13 @@ test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {
7271
await expect(row3.locator('[data-test-token]')).toHaveCount(0);
7372
});
7473

75-
test('API tokens can be revoked', async ({ page }) => {
74+
test('API tokens can be revoked', async ({ page, msw }) => {
7675
await page.goto('/settings/tokens');
7776
await expect(page).toHaveURL('/settings/tokens');
7877
await expect(page.locator('[data-test-api-token]')).toHaveCount(3);
7978

8079
await page.click('[data-test-api-token="1"] [data-test-revoke-token-button]');
81-
expect(
82-
await page.evaluate(() => server.schema['apiTokens'].all().length),
83-
'API token has been deleted from the backend database',
84-
).toBe(2);
80+
expect(msw.db.apiToken.findMany({}).length, 'API token has been deleted from the backend database').toBe(2);
8581

8682
await expect(page.locator('[data-test-api-token]')).toHaveCount(2);
8783
await expect(page.locator('[data-test-api-token="2"]')).toBeVisible();
@@ -97,12 +93,10 @@ test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {
9793
await expect(page).toHaveURL('/settings/tokens/new?from=1');
9894
});
9995

100-
test('failed API tokens revocation shows an error', async ({ page, mirage }) => {
101-
await mirage.addHook(server => {
102-
server.delete('/api/v1/me/tokens/:id', {}, 500);
103-
});
96+
test('failed API tokens revocation shows an error', async ({ page, msw }) => {
97+
await msw.worker.use(http.delete('/api/v1/me/tokens/:id', () => HttpResponse.json({}, { status: 500 })));
10498

105-
await mirage.page.goto('/settings/tokens');
99+
await page.goto('/settings/tokens');
106100
await expect(page).toHaveURL('/settings/tokens');
107101
await expect(page.locator('[data-test-api-token]')).toHaveCount(3);
108102

@@ -115,7 +109,7 @@ test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {
115109
);
116110
});
117111

118-
test('new API tokens can be created', async ({ page, percy }) => {
112+
test('new API tokens can be created', async ({ page, percy, msw }) => {
119113
await page.goto('/settings/tokens');
120114
await expect(page).toHaveURL('/settings/tokens');
121115
await expect(page.locator('[data-test-api-token]')).toHaveCount(3);
@@ -129,7 +123,7 @@ test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {
129123

130124
await page.click('[data-test-generate]');
131125

132-
let token = await page.evaluate(() => server.schema['apiTokens'].findBy({ name: 'the new token' })?.token);
126+
let token = msw.db.apiToken.findFirst({ where: { name: { equals: 'the new token' } } })?.token;
133127
expect(token, 'API token has been created in the backend database').toBeTruthy();
134128

135129
await expect(page.locator('[data-test-api-token="4"] [data-test-name]')).toHaveText('the new token');
@@ -140,14 +134,14 @@ test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {
140134
await expect(page.locator('[data-test-token]')).toHaveText(token);
141135
});
142136

143-
test('API tokens are only visible in plaintext until the page is left', async ({ page }) => {
137+
test('API tokens are only visible in plaintext until the page is left', async ({ page, msw }) => {
144138
await page.goto('/settings/tokens');
145139
await page.click('[data-test-new-token-button]');
146140
await page.fill('[data-test-name]', 'the new token');
147141
await page.click('[data-test-scope="publish-update"]');
148142
await page.click('[data-test-generate]');
149143

150-
let token = await page.evaluate(() => server.schema['apiTokens'].findBy({ name: 'the new token' })?.token);
144+
let token = msw.db.apiToken.findFirst({ where: { name: { equals: 'the new token' } } })?.token;
151145
await expect(page.locator('[data-test-token]')).toHaveText(token);
152146

153147
// leave the API tokens page

0 commit comments

Comments
 (0)