@@ -5,14 +5,16 @@ import { defer } from 'rsvp';
55
66import window from 'ember-window-mock' ;
77import { setupWindowMock } from 'ember-window-mock/test-support' ;
8+ import { http , HttpResponse } from 'msw' ;
89
910import { setupApplicationTest } from 'crates-io/tests/helpers' ;
1011
1112module ( 'Acceptance | Login' , function ( hooks ) {
12- setupApplicationTest ( hooks ) ;
13+ setupApplicationTest ( hooks , { msw : true } ) ;
1314 setupWindowMock ( hooks ) ;
1415
1516 test ( 'successful login' , async function ( assert ) {
17+ let { db } = this ;
1618 let deferred = defer ( ) ;
1719
1820 window . open = ( url , target , features ) => {
@@ -26,30 +28,32 @@ module('Acceptance | Login', function (hooks) {
2628 return { document : { write ( ) { } , close ( ) { } } , close ( ) { } } ;
2729 } ;
2830
29- this . server . get ( '/api/private/session/begin' , { url : 'url-to-github-including-state-secret' } ) ;
30-
31- this . server . get ( '/api/private/session/authorize' , ( schema , request ) => {
32- assert . deepEqual ( request . queryParams , {
33- code : '901dd10e07c7e9fa1cd5' ,
34- state : 'fYcUY3FMdUUz00FC7vLT7A' ,
35- } ) ;
36-
37- let user = this . server . create ( 'user' ) ;
38- this . server . create ( 'mirage-session' , { user } ) ;
39- return { ok : true } ;
40- } ) ;
41-
42- this . server . get ( '/api/v1/me' , ( ) => ( {
43- user : {
44- id : 42 ,
45- login : 'johnnydee' ,
46- name : 'John Doe' ,
47- 48- avatar : 'https://avatars2.githubusercontent.com/u/12345?v=4' ,
49- url : 'https://github.com/johnnydee' ,
50- } ,
51- owned_crates : [ ] ,
52- } ) ) ;
31+ this . worker . use (
32+ http . get ( '/api/private/session/begin' , ( ) => HttpResponse . json ( { url : 'url-to-github-including-state-secret' } ) ) ,
33+ http . get ( '/api/private/session/authorize' , ( { request } ) => {
34+ let url = new URL ( request . url ) ;
35+ assert . deepEqual ( [ ...url . searchParams . keys ( ) ] , [ 'code' , 'state' ] ) ;
36+ assert . strictEqual ( url . searchParams . get ( 'code' ) , '901dd10e07c7e9fa1cd5' ) ;
37+ assert . strictEqual ( url . searchParams . get ( 'state' ) , 'fYcUY3FMdUUz00FC7vLT7A' ) ;
38+
39+ let user = db . user . create ( ) ;
40+ db . mswSession . create ( { user } ) ;
41+ return HttpResponse . json ( { ok : true } ) ;
42+ } ) ,
43+ http . get ( '/api/v1/me' , ( ) =>
44+ HttpResponse . json ( {
45+ user : {
46+ id : 42 ,
47+ login : 'johnnydee' ,
48+ name : 'John Doe' ,
49+ 50+ avatar : 'https://avatars2.githubusercontent.com/u/12345?v=4' ,
51+ url : 'https://github.com/johnnydee' ,
52+ } ,
53+ owned_crates : [ ] ,
54+ } ) ,
55+ ) ,
56+ ) ;
5357
5458 await visit ( '/' ) ;
5559 assert . strictEqual ( currentURL ( ) , '/' ) ;
@@ -78,10 +82,12 @@ module('Acceptance | Login', function (hooks) {
7882 return { document : { write ( ) { } , close ( ) { } } , close ( ) { } } ;
7983 } ;
8084
81- this . server . get ( '/api/private/session/begin' , { url : 'url-to-github-including-state-secret' } ) ;
82-
83- let payload = { errors : [ { detail : 'Forbidden' } ] } ;
84- this . server . get ( '/api/private/session/authorize' , payload , 403 ) ;
85+ this . worker . use (
86+ http . get ( '/api/private/session/begin' , ( ) => HttpResponse . json ( { url : 'url-to-github-including-state-secret' } ) ) ,
87+ http . get ( '/api/private/session/authorize' , ( ) =>
88+ HttpResponse . json ( { errors : [ { detail : 'Forbidden' } ] } , { status : 403 } ) ,
89+ ) ,
90+ ) ;
8591
8692 await visit ( '/' ) ;
8793 assert . strictEqual ( currentURL ( ) , '/' ) ;
0 commit comments