1
- import { click , currentURL , fillIn , waitFor } from '@ember/test-helpers' ;
1
+ import { click , currentURL , fillIn , select , waitFor } from '@ember/test-helpers' ;
2
2
import { module , test } from 'qunit' ;
3
3
4
4
import { defer } from 'rsvp' ;
@@ -60,6 +60,7 @@ module('/settings/tokens/new', function (hooks) {
60
60
let token = this . server . schema . apiTokens . findBy ( { name : 'token-name' } ) ;
61
61
assert . ok ( Boolean ( token ) , 'API token has been created in the backend database' ) ;
62
62
assert . strictEqual ( token . name , 'token-name' ) ;
63
+ assert . strictEqual ( token . expiredAt , null ) ;
63
64
assert . strictEqual ( token . crateScopes , null ) ;
64
65
assert . deepEqual ( token . endpointScopes , [ 'publish-update' ] ) ;
65
66
@@ -68,6 +69,7 @@ module('/settings/tokens/new', function (hooks) {
68
69
assert . dom ( '[data-test-api-token="1"] [data-test-token]' ) . hasText ( token . token ) ;
69
70
assert . dom ( '[data-test-api-token="1"] [data-test-endpoint-scopes]' ) . hasText ( 'Scopes: publish-update' ) ;
70
71
assert . dom ( '[data-test-api-token="1"] [data-test-crate-scopes]' ) . doesNotExist ( ) ;
72
+ assert . dom ( '[data-test-api-token="1"] [data-test-expired-at]' ) . doesNotExist ( ) ;
71
73
} ) ;
72
74
73
75
test ( 'crate scopes' , async function ( assert ) {
@@ -138,6 +140,75 @@ module('/settings/tokens/new', function (hooks) {
138
140
assert . dom ( '[data-test-api-token="1"] [data-test-token]' ) . hasText ( token . token ) ;
139
141
assert . dom ( '[data-test-api-token="1"] [data-test-endpoint-scopes]' ) . hasText ( 'Scopes: publish-update and yank' ) ;
140
142
assert . dom ( '[data-test-api-token="1"] [data-test-crate-scopes]' ) . hasText ( 'Crates: serde-* and serde' ) ;
143
+ assert . dom ( '[data-test-api-token="1"] [data-test-expired-at]' ) . doesNotExist ( ) ;
144
+ } ) ;
145
+
146
+ test ( 'token expiry' , async function ( assert ) {
147
+ prepare ( this ) ;
148
+
149
+ await visit ( '/settings/tokens/new' ) ;
150
+ assert . strictEqual ( currentURL ( ) , '/settings/tokens/new' ) ;
151
+ assert . dom ( '[data-test-expiry-description]' ) . hasText ( 'The token will never expire' ) ;
152
+
153
+ await fillIn ( '[data-test-name]' , 'token-name' ) ;
154
+ await select ( '[data-test-expiry]' , '30' ) ;
155
+
156
+ let expiryDate = new Date ( '2017-12-20' ) ;
157
+ let expectedDate = expiryDate . toLocaleDateString ( undefined , { dateStyle : 'long' } ) ;
158
+ let expectedDescription = `The token will expire on ${ expectedDate } ` ;
159
+ assert . dom ( '[data-test-expiry-description]' ) . hasText ( expectedDescription ) ;
160
+
161
+ await click ( '[data-test-scope="publish-update"]' ) ;
162
+ await click ( '[data-test-generate]' ) ;
163
+
164
+ let token = this . server . schema . apiTokens . findBy ( { name : 'token-name' } ) ;
165
+ assert . ok ( Boolean ( token ) , 'API token has been created in the backend database' ) ;
166
+ assert . strictEqual ( token . name , 'token-name' ) ;
167
+ assert . strictEqual ( token . expiredAt . slice ( 0 , 19 ) , '2017-12-20T11:00:00' ) ;
168
+ assert . strictEqual ( token . crateScopes , null ) ;
169
+ assert . deepEqual ( token . endpointScopes , [ 'publish-update' ] ) ;
170
+
171
+ assert . strictEqual ( currentURL ( ) , '/settings/tokens' ) ;
172
+ assert . dom ( '[data-test-api-token="1"] [data-test-name]' ) . hasText ( 'token-name' ) ;
173
+ assert . dom ( '[data-test-api-token="1"] [data-test-token]' ) . hasText ( token . token ) ;
174
+ assert . dom ( '[data-test-api-token="1"] [data-test-endpoint-scopes]' ) . hasText ( 'Scopes: publish-update' ) ;
175
+ assert . dom ( '[data-test-api-token="1"] [data-test-crate-scopes]' ) . doesNotExist ( ) ;
176
+ assert . dom ( '[data-test-api-token="1"] [data-test-expired-at]' ) . hasText ( 'Expires in about 1 month' ) ;
177
+ } ) ;
178
+
179
+ test ( 'token expiry with custom date' , async function ( assert ) {
180
+ prepare ( this ) ;
181
+
182
+ await visit ( '/settings/tokens/new' ) ;
183
+ assert . strictEqual ( currentURL ( ) , '/settings/tokens/new' ) ;
184
+ assert . dom ( '[data-test-expiry-description]' ) . hasText ( 'The token will never expire' ) ;
185
+
186
+ await fillIn ( '[data-test-name]' , 'token-name' ) ;
187
+ await select ( '[data-test-expiry]' , 'custom' ) ;
188
+ assert . dom ( '[data-test-expiry-description]' ) . doesNotExist ( ) ;
189
+
190
+ await click ( '[data-test-scope="publish-update"]' ) ;
191
+ await click ( '[data-test-generate]' ) ;
192
+ assert . dom ( '[data-test-expiry-date]' ) . hasAria ( 'invalid' , 'true' ) ;
193
+
194
+ await fillIn ( '[data-test-expiry-date]' , '2024-05-04' ) ;
195
+ assert . dom ( '[data-test-expiry-description]' ) . doesNotExist ( ) ;
196
+
197
+ await click ( '[data-test-generate]' ) ;
198
+
199
+ let token = this . server . schema . apiTokens . findBy ( { name : 'token-name' } ) ;
200
+ assert . ok ( Boolean ( token ) , 'API token has been created in the backend database' ) ;
201
+ assert . strictEqual ( token . name , 'token-name' ) ;
202
+ assert . strictEqual ( token . expiredAt . slice ( 0 , 10 ) , '2024-05-04' ) ;
203
+ assert . strictEqual ( token . crateScopes , null ) ;
204
+ assert . deepEqual ( token . endpointScopes , [ 'publish-update' ] ) ;
205
+
206
+ assert . strictEqual ( currentURL ( ) , '/settings/tokens' ) ;
207
+ assert . dom ( '[data-test-api-token="1"] [data-test-name]' ) . hasText ( 'token-name' ) ;
208
+ assert . dom ( '[data-test-api-token="1"] [data-test-token]' ) . hasText ( token . token ) ;
209
+ assert . dom ( '[data-test-api-token="1"] [data-test-endpoint-scopes]' ) . hasText ( 'Scopes: publish-update' ) ;
210
+ assert . dom ( '[data-test-api-token="1"] [data-test-crate-scopes]' ) . doesNotExist ( ) ;
211
+ assert . dom ( '[data-test-api-token="1"] [data-test-expired-at]' ) . hasText ( 'Expires in over 6 years' ) ;
141
212
} ) ;
142
213
143
214
test ( 'loading and error state' , async function ( assert ) {
0 commit comments