Skip to content

Commit 952ca9d

Browse files
committed
msw: Implement DELETE /api/private/session request handler
1 parent d3b80ef commit 952ca9d

File tree

4 files changed

+35
-1
lines changed

4 files changed

+35
-1
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import deleteSession from './sessions/delete.js';
2+
3+
export default [deleteSession];
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { http, HttpResponse } from 'msw';
2+
3+
import { db } from '../../index.js';
4+
5+
export default http.delete('/api/private/session', () => {
6+
db.mswSession.deleteMany({});
7+
return HttpResponse.json({ ok: true });
8+
});
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { assert, test } from 'vitest';
2+
3+
import { db } from '../../index.js';
4+
5+
test('returns 200 when authenticated', async function () {
6+
let user = db.user.create();
7+
db.mswSession.create({ user });
8+
9+
let response = await fetch('/api/private/session', { method: 'DELETE' });
10+
assert.strictEqual(response.status, 200);
11+
assert.deepEqual(await response.json(), { ok: true });
12+
13+
assert.notOk(db.mswSession.findFirst({}));
14+
});
15+
16+
test('returns 200 when unauthenticated', async function () {
17+
let response = await fetch('/api/private/session', { method: 'DELETE' });
18+
assert.strictEqual(response.status, 200);
19+
assert.deepEqual(await response.json(), { ok: true });
20+
21+
assert.notOk(db.mswSession.findFirst({}));
22+
});

packages/crates-io-msw/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import categoryHandlers from './handlers/categories.js';
22
import keywordHandlers from './handlers/keywords.js';
3+
import sessionHandlers from './handlers/sessions.js';
34
import apiToken from './models/api-token.js';
45
import category from './models/category.js';
56
import crateOwnerInvitation from './models/crate-owner-invitation.js';
@@ -14,7 +15,7 @@ import versionDownload from './models/version-download.js';
1415
import version from './models/version.js';
1516
import { factory } from './utils/factory.js';
1617

17-
export const handlers = [...categoryHandlers, ...keywordHandlers];
18+
export const handlers = [...categoryHandlers, ...keywordHandlers, ...sessionHandlers];
1819

1920
export const db = factory({
2021
apiToken,

0 commit comments

Comments
 (0)