Skip to content

Commit adb9e4f

Browse files
committed
msw: Implement PUT /api/v1/users/:user_id/resend request handler
1 parent 28fa907 commit adb9e4f

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import getUser from './users/get.js';
2+
import resend from './users/resend.js';
23
import updateUser from './users/update.js';
34

4-
export default [getUser, updateUser];
5+
export default [getUser, updateUser, resend];
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { http, HttpResponse } from 'msw';
2+
3+
import { getSession } from '../../utils/session.js';
4+
5+
export default http.put('/api/v1/users/:user_id/resend', ({ params }) => {
6+
let { user } = getSession();
7+
if (!user) {
8+
return HttpResponse.json({ errors: [{ detail: 'must be logged in to perform that action' }] }, { status: 403 });
9+
}
10+
11+
if (user.id.toString() !== params.user_id) {
12+
return HttpResponse.json({ errors: [{ detail: 'current user does not match requested user' }] }, { status: 400 });
13+
}
14+
15+
// let's pretend that we're sending an email here... :D
16+
17+
return HttpResponse.json({ ok: true });
18+
});
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { assert, test } from 'vitest';
2+
3+
import { db } from '../../index.js';
4+
5+
test('returns `ok`', async function () {
6+
let user = db.user.create();
7+
db.mswSession.create({ user });
8+
9+
let response = await fetch(`/api/v1/users/${user.id}/resend`, { method: 'PUT' });
10+
assert.strictEqual(response.status, 200);
11+
assert.deepEqual(await response.json(), { ok: true });
12+
});
13+
14+
test('returns 403 when not logged in', async function () {
15+
let user = db.user.create();
16+
17+
let response = await fetch(`/api/v1/users/${user.id}/resend`, { method: 'PUT' });
18+
assert.strictEqual(response.status, 403);
19+
assert.deepEqual(await response.json(), { errors: [{ detail: 'must be logged in to perform that action' }] });
20+
});
21+
22+
test('returns 400 when requesting the wrong user id', async function () {
23+
let user = db.user.create();
24+
db.mswSession.create({ user });
25+
26+
let response = await fetch(`/api/v1/users/wrong-id/resend`, { method: 'PUT' });
27+
assert.strictEqual(response.status, 400);
28+
assert.deepEqual(await response.json(), { errors: [{ detail: 'current user does not match requested user' }] });
29+
});

0 commit comments

Comments
 (0)