Skip to content

Commit c773e65

Browse files
committed
tests/acceptance/login: Migrate from mirage to @crates-io/msw
1 parent c3a2c10 commit c773e65

File tree

1 file changed

+35
-29
lines changed

1 file changed

+35
-29
lines changed

tests/acceptance/login-test.js

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@ import { defer } from 'rsvp';
55

66
import window from 'ember-window-mock';
77
import { setupWindowMock } from 'ember-window-mock/test-support';
8+
import { http, HttpResponse } from 'msw';
89

910
import { setupApplicationTest } from 'crates-io/tests/helpers';
1011

1112
module('Acceptance | Login', function (hooks) {
12-
setupApplicationTest(hooks);
13+
setupApplicationTest(hooks, { msw: true });
1314
setupWindowMock(hooks);
1415

1516
test('successful login', async function (assert) {
17+
let { db } = this;
1618
let deferred = defer();
1719

1820
window.open = (url, target, features) => {
@@ -26,30 +28,32 @@ module('Acceptance | Login', function (hooks) {
2628
return { document: { write() {}, close() {} }, close() {} };
2729
};
2830

29-
this.server.get('/api/private/session/begin', { url: 'url-to-github-including-state-secret' });
30-
31-
this.server.get('/api/private/session/authorize', (schema, request) => {
32-
assert.deepEqual(request.queryParams, {
33-
code: '901dd10e07c7e9fa1cd5',
34-
state: 'fYcUY3FMdUUz00FC7vLT7A',
35-
});
36-
37-
let user = this.server.create('user');
38-
this.server.create('mirage-session', { user });
39-
return { ok: true };
40-
});
41-
42-
this.server.get('/api/v1/me', () => ({
43-
user: {
44-
id: 42,
45-
login: 'johnnydee',
46-
name: 'John Doe',
47-
48-
avatar: 'https://avatars2.githubusercontent.com/u/12345?v=4',
49-
url: 'https://github.com/johnnydee',
50-
},
51-
owned_crates: [],
52-
}));
31+
this.worker.use(
32+
http.get('/api/private/session/begin', () => HttpResponse.json({ url: 'url-to-github-including-state-secret' })),
33+
http.get('/api/private/session/authorize', ({ request }) => {
34+
let url = new URL(request.url);
35+
assert.deepEqual([...url.searchParams.keys()], ['code', 'state']);
36+
assert.strictEqual(url.searchParams.get('code'), '901dd10e07c7e9fa1cd5');
37+
assert.strictEqual(url.searchParams.get('state'), 'fYcUY3FMdUUz00FC7vLT7A');
38+
39+
let user = db.user.create();
40+
db.mswSession.create({ user });
41+
return HttpResponse.json({ ok: true });
42+
}),
43+
http.get('/api/v1/me', () =>
44+
HttpResponse.json({
45+
user: {
46+
id: 42,
47+
login: 'johnnydee',
48+
name: 'John Doe',
49+
50+
avatar: 'https://avatars2.githubusercontent.com/u/12345?v=4',
51+
url: 'https://github.com/johnnydee',
52+
},
53+
owned_crates: [],
54+
}),
55+
),
56+
);
5357

5458
await visit('/');
5559
assert.strictEqual(currentURL(), '/');
@@ -78,10 +82,12 @@ module('Acceptance | Login', function (hooks) {
7882
return { document: { write() {}, close() {} }, close() {} };
7983
};
8084

81-
this.server.get('/api/private/session/begin', { url: 'url-to-github-including-state-secret' });
82-
83-
let payload = { errors: [{ detail: 'Forbidden' }] };
84-
this.server.get('/api/private/session/authorize', payload, 403);
85+
this.worker.use(
86+
http.get('/api/private/session/begin', () => HttpResponse.json({ url: 'url-to-github-including-state-secret' })),
87+
http.get('/api/private/session/authorize', () =>
88+
HttpResponse.json({ errors: [{ detail: 'Forbidden' }] }, { status: 403 }),
89+
),
90+
);
8591

8692
await visit('/');
8793
assert.strictEqual(currentURL(), '/');

0 commit comments

Comments
 (0)