Skip to content

Commit 45af034

Browse files
committed
tests/api-token: Add test for token creation
1 parent 3e035b0 commit 45af034

File tree

2 files changed

+55
-2
lines changed

2 files changed

+55
-2
lines changed

app/templates/me/index.hbs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,15 @@
7272
<div class='me-subheading'>
7373
<h2>API Access</h2>
7474
<div class='right'>
75-
<button type="button" class='yellow-button' disabled={{this.disableCreate}} {{action "startNewToken"}}>New Token</button>
75+
<button
76+
type="button"
77+
class='yellow-button'
78+
disabled={{this.disableCreate}}
79+
data-test-new-token-button
80+
{{action "startNewToken"}}
81+
>
82+
New Token
83+
</button>
7684
</div>
7785
</div>
7886

tests/acceptance/api-token-test.js

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { module, test } from 'qunit';
22
import { setupApplicationTest } from 'ember-qunit';
3-
import { currentURL, findAll, click } from '@ember/test-helpers';
3+
import { currentURL, findAll, click, fillIn } from '@ember/test-helpers';
44
import window, { setupWindowMock } from 'ember-window-mock';
55
import { Response } from 'ember-cli-mirage';
66

@@ -101,4 +101,49 @@ module('Acceptance | api-tokens', function(hooks) {
101101
assert.dom('[data-test-api-token="1"]').exists();
102102
assert.dom('[data-test-error]').includesText('An error occurred while revoking this token');
103103
});
104+
105+
test('new API tokens can be created', async function(assert) {
106+
prepare(this);
107+
108+
this.server.put('/api/v1/me/tokens', function(schema, request) {
109+
assert.step('put');
110+
111+
let { api_token } = JSON.parse(request.requestBody);
112+
113+
return {
114+
api_token: {
115+
id: 5,
116+
name: api_token.name,
117+
token: 'zuz6nYcXJOzPDvnA9vucNwccG0lFSGbh',
118+
revoked: false,
119+
created_at: api_token.created_at,
120+
last_used_at: api_token.last_used_at,
121+
},
122+
};
123+
});
124+
125+
await visit('/me');
126+
assert.equal(currentURL(), '/me');
127+
assert.dom('[data-test-api-token]').exists({ count: 2 });
128+
assert.dom('[data-test-focused-input]').doesNotExist();
129+
assert.dom('[data-test-save-token-button]').doesNotExist();
130+
131+
await click('[data-test-new-token-button]');
132+
assert.dom('[data-test-new-token-button]').isDisabled();
133+
assert.dom('[data-test-focused-input]').exists();
134+
assert.dom('[data-test-save-token-button]').exists();
135+
136+
await fillIn('[data-test-focused-input]', 'the new token');
137+
await click('[data-test-save-token-button]');
138+
assert.verifySteps(['put']);
139+
assert.dom('[data-test-focused-input]').doesNotExist();
140+
assert.dom('[data-test-save-token-button]').doesNotExist();
141+
142+
assert.dom('[data-test-api-token="5"] [data-test-name]').hasText('the new token');
143+
assert.dom('[data-test-api-token="5"] [data-test-save-token-button]').doesNotExist();
144+
assert.dom('[data-test-api-token="5"] [data-test-revoke-token-button]').exists();
145+
assert.dom('[data-test-api-token="5"] [data-test-saving-spinner]').doesNotExist();
146+
assert.dom('[data-test-api-token="5"] [data-test-error]').doesNotExist();
147+
assert.dom('[data-test-token]').includesText('cargo login zuz6nYcXJOzPDvnA9vucNwccG0lFSGbh');
148+
});
104149
});

0 commit comments

Comments
 (0)