Skip to content

Commit 4ba746b

Browse files
committed
mirage: Add authentication checks to add/remove owner endpoints
1 parent 5a93a54 commit 4ba746b

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

mirage/route-handlers/crates.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,11 @@ export function register(server) {
227227
});
228228

229229
server.put('/api/v1/crates/:name/owners', (schema, request) => {
230+
let { user } = getSession(schema);
231+
if (!user) {
232+
return new Response(403, {}, { errors: [{ detail: 'must be logged in to perform that action' }] });
233+
}
234+
230235
let { name } = request.params;
231236
let crate = schema.crates.findBy({ name });
232237

@@ -236,16 +241,21 @@ export function register(server) {
236241

237242
const body = JSON.parse(request.requestBody);
238243
const [ownerId] = body.owners;
239-
const user = schema.users.findBy({ login: ownerId });
244+
const invitee = schema.users.findBy({ login: ownerId });
240245

241-
if (!user) {
246+
if (!invitee) {
242247
return { errors: [{ detail: `could not find user with login \`${ownerId}\`` }] };
243248
}
244249

245250
return { ok: true };
246251
});
247252

248253
server.delete('/api/v1/crates/:name/owners', (schema, request) => {
254+
let { user } = getSession(schema);
255+
if (!user) {
256+
return new Response(403, {}, { errors: [{ detail: 'must be logged in to perform that action' }] });
257+
}
258+
249259
let { name } = request.params;
250260
let crate = schema.crates.findBy({ name });
251261

tests/models/crate-test.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,23 @@ module('Model | Crate', function (hooks) {
1515
module('inviteOwner()', function () {
1616
test('happy path', async function (assert) {
1717
let user = this.server.create('user');
18+
this.authenticateAs(user);
1819

1920
let crate = this.server.create('crate');
2021
this.server.create('version', { crate });
2122

23+
let user2 = this.server.create('user');
24+
2225
let crateRecord = await this.store.findRecord('crate', crate.name);
2326

24-
let result = await crateRecord.inviteOwner(user.login);
27+
let result = await crateRecord.inviteOwner(user2.login);
2528
assert.deepEqual(result, { ok: true });
2629
});
2730

2831
test('error handling', async function (assert) {
32+
let user = this.server.create('user');
33+
this.authenticateAs(user);
34+
2935
let crate = this.server.create('crate');
3036
this.server.create('version', { crate });
3137

@@ -41,17 +47,23 @@ module('Model | Crate', function (hooks) {
4147
module('removeOwner()', function () {
4248
test('happy path', async function (assert) {
4349
let user = this.server.create('user');
50+
this.authenticateAs(user);
4451

4552
let crate = this.server.create('crate');
4653
this.server.create('version', { crate });
4754

55+
let user2 = this.server.create('user');
56+
4857
let crateRecord = await this.store.findRecord('crate', crate.name);
4958

50-
let result = await crateRecord.removeOwner(user.login);
59+
let result = await crateRecord.removeOwner(user2.login);
5160
assert.deepEqual(result, { ok: true, msg: 'owners successfully removed' });
5261
});
5362

5463
test('error handling', async function (assert) {
64+
let user = this.server.create('user');
65+
this.authenticateAs(user);
66+
5567
let crate = this.server.create('crate');
5668
this.server.create('version', { crate });
5769

0 commit comments

Comments
 (0)