Skip to content

Commit 84fe774

Browse files
authored
mirage: Add crate and endpoint scope fields (#6325)
1 parent ff14a57 commit 84fe774

File tree

4 files changed

+57
-3
lines changed

4 files changed

+57
-3
lines changed

mirage/factories/api-token.js

+2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { Factory } from 'miragejs';
22

33
export default Factory.extend({
4+
crateScopes: null,
45
createdAt: '2017-11-19T17:59:22',
6+
endpointScopes: null,
57
lastUsedAt: null,
68
name: i => `API Token ${i + 1}`,
79
token: () => generateToken(),

mirage/route-handlers/me.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,14 @@ export function register(server) {
3737
return new Response(403, {}, { errors: [{ detail: 'must be logged in to perform that action' }] });
3838
}
3939

40-
let { name } = this.normalizedRequestAttrs('api-token');
41-
let token = server.create('api-token', { user, name, createdAt: new Date().toISOString() });
40+
let { name, crateScopes = null, endpointScopes = null } = this.normalizedRequestAttrs('api-token');
41+
let token = server.create('api-token', {
42+
user,
43+
name,
44+
crateScopes,
45+
endpointScopes,
46+
createdAt: new Date().toISOString(),
47+
});
4248

4349
let json = this.serialize(token);
4450
json.api_token.revoked = false;

tests/mirage/me/tokens/create-test.js

+35
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,42 @@ module('Mirage | PUT /api/v1/me/tokens', function (hooks) {
2525
assert.deepEqual(await response.json(), {
2626
api_token: {
2727
id: 1,
28+
crate_scopes: null,
2829
created_at: '2017-11-20T11:23:45.000Z',
30+
endpoint_scopes: null,
31+
last_used_at: null,
32+
name: 'foooo',
33+
revoked: false,
34+
token: token.token,
35+
},
36+
});
37+
});
38+
39+
test('creates a new API token with scopes', async function (assert) {
40+
this.clock.setSystemTime(new Date('2017-11-20T11:23:45Z'));
41+
42+
let user = this.server.create('user');
43+
this.server.create('mirage-session', { user });
44+
45+
let body = JSON.stringify({
46+
api_token: {
47+
name: 'foooo',
48+
crate_scopes: ['serde', 'serde-*'],
49+
endpoint_scopes: ['publish-update'],
50+
},
51+
});
52+
let response = await fetch('/api/v1/me/tokens', { method: 'PUT', body });
53+
assert.strictEqual(response.status, 200);
54+
55+
let token = this.server.schema.apiTokens.all().models[0];
56+
assert.ok(token);
57+
58+
assert.deepEqual(await response.json(), {
59+
api_token: {
60+
id: 1,
61+
crate_scopes: ['serde', 'serde-*'],
62+
created_at: '2017-11-20T11:23:45.000Z',
63+
endpoint_scopes: ['publish-update'],
2964
last_used_at: null,
3065
name: 'foooo',
3166
revoked: false,

tests/mirage/me/tokens/list-test.js

+12-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ module('Mirage | GET /api/v1/me/tokens', function (hooks) {
1313
let user = this.server.create('user');
1414
this.server.create('mirage-session', { user });
1515

16-
this.server.create('api-token', { user, createdAt: '2017-11-19T12:59:22Z' });
16+
this.server.create('api-token', {
17+
user,
18+
createdAt: '2017-11-19T12:59:22Z',
19+
crateScopes: ['serde', 'serde-*'],
20+
endpointScopes: ['publish-update'],
21+
});
1722
this.server.create('api-token', { user, createdAt: '2017-11-19T13:59:22Z' });
1823
this.server.create('api-token', { user, createdAt: '2017-11-19T14:59:22Z' });
1924

@@ -23,19 +28,25 @@ module('Mirage | GET /api/v1/me/tokens', function (hooks) {
2328
api_tokens: [
2429
{
2530
id: 3,
31+
crate_scopes: null,
2632
created_at: '2017-11-19T14:59:22.000Z',
33+
endpoint_scopes: null,
2734
last_used_at: null,
2835
name: 'API Token 3',
2936
},
3037
{
3138
id: 2,
39+
crate_scopes: null,
3240
created_at: '2017-11-19T13:59:22.000Z',
41+
endpoint_scopes: null,
3342
last_used_at: null,
3443
name: 'API Token 2',
3544
},
3645
{
3746
id: 1,
47+
crate_scopes: ['serde', 'serde-*'],
3848
created_at: '2017-11-19T12:59:22.000Z',
49+
endpoint_scopes: ['publish-update'],
3950
last_used_at: null,
4051
name: 'API Token 1',
4152
},

0 commit comments

Comments
 (0)