@@ -16,7 +16,7 @@ test('get', t => {
16
16
return [ auth ? 200 : 401 , '' , { } ]
17
17
} )
18
18
return profile . get ( ) . then ( result => {
19
- t . fail ( 'GET w/o auth should fail' )
19
+ return t . fail ( 'GET w/o auth should fail' )
20
20
} , err => {
21
21
t . equal ( err . code , 'E401' , 'auth errors are passed through' )
22
22
} ) . then ( ( ) => {
@@ -27,7 +27,7 @@ test('get', t => {
27
27
} )
28
28
return profile . get ( { '//registry.npmjs.org/:_authToken' : 'deadbeef' } )
29
29
} ) . then ( result => {
30
- t . match ( result , { auth : 'bearer' } )
30
+ return t . match ( result , { auth : 'bearer' } )
31
31
} ) . then ( ( ) => {
32
32
srv . get ( getUrl ) . reply ( function ( ) {
33
33
const auth = this . req . headers . authorization
@@ -46,7 +46,7 @@ test('get', t => {
46
46
'//registry.npmjs.org/:_password' : Buffer . from ( '123' , 'utf8' ) . toString ( 'base64' ) ,
47
47
} )
48
48
} ) . then ( result => {
49
- t . match ( result , { auth : 'basic' } )
49
+ return t . match ( result , { auth : 'basic' } )
50
50
} ) . then ( ( ) => {
51
51
srv . get ( getUrl ) . reply ( function ( ) {
52
52
const auth = this . req . headers . authorization
@@ -60,7 +60,7 @@ test('get', t => {
60
60
'//registry.npmjs.org/:_authToken' : 'deadbeef' ,
61
61
} )
62
62
} ) . then ( result => {
63
- t . match ( result , { auth : 'bearer' , otp : true } )
63
+ return t . match ( result , { auth : 'bearer' , otp : true } )
64
64
} )
65
65
// with otp, with token, with basic
66
66
// prob should make w/o token 401
@@ -76,7 +76,7 @@ test('set', t => {
76
76
github : 'zkat' ,
77
77
email : '' ,
78
78
} ) . then ( json => {
79
- t . same ( json , prof , 'got the profile data in return' )
79
+ return t . same ( json , prof , 'got the profile data in return' )
80
80
} )
81
81
} )
82
82
@@ -125,6 +125,42 @@ test('login fallback to couch', t => {
125
125
} )
126
126
} )
127
127
128
+ test ( 'login fallback to couch when web login fails cancels opener promise' , t => {
129
+ const loginUrl = 'https://www.npmjs.com/login?next=/login/cli/123'
130
+ tnock ( t , registry )
131
+ . put ( '/-/user/org.couchdb.user:blerp' )
132
+ . reply ( 201 , {
133
+ ok : true ,
134
+ } )
135
+ . post ( '/-/v1/login' )
136
+ . reply ( 200 , {
137
+ loginUrl,
138
+ doneUrl : 'https://registry.npmjs.org:443/-/v1/done?sessionId=123' ,
139
+ } )
140
+ . get ( '/-/v1/done?sessionId=123' )
141
+ . reply ( 404 , { error : 'Not found' } )
142
+
143
+ let cancelled = false
144
+ const opener = ( url , doneEmitter ) => {
145
+ t . equal ( url , loginUrl )
146
+ doneEmitter . on ( 'abort' , ( ) => {
147
+ cancelled = true
148
+ } )
149
+ }
150
+
151
+ const prompter = creds => Promise . resolve ( {
152
+ username : 'blerp' ,
153
+ password : 'prelb' ,
154
+ email : 'blerp@blerp.blerp' ,
155
+ } )
156
+ return t . resolveMatch ( profile . login ( opener , prompter ) , {
157
+ ok : true ,
158
+ username : 'blerp' ,
159
+ } ) . then ( ( ) => {
160
+ return t . equal ( cancelled , true )
161
+ } )
162
+ } )
163
+
128
164
test ( 'adduserCouch happy path' , t => {
129
165
tnock ( t , registry )
130
166
. put ( '/-/user/org.couchdb.user:blerp' )
@@ -222,7 +258,7 @@ test('listTokens multipage', t => {
222
258
urls : { } ,
223
259
} )
224
260
return profile . listTokens ( ) . then ( tok => {
225
- t . same (
261
+ return t . same (
226
262
tok ,
227
263
tokens1 . concat ( tokens2 ) . concat ( tokens3 ) ,
228
264
'supports multi-URL token requests and concats them'
@@ -233,7 +269,7 @@ test('listTokens multipage', t => {
233
269
test ( 'removeToken' , t => {
234
270
tnock ( t , registry ) . delete ( '/-/npm/v1/tokens/token/deadbeef' ) . reply ( 200 )
235
271
return profile . removeToken ( 'deadbeef' ) . then ( ret => {
236
- t . equal ( ret , null , 'null return value on success' )
272
+ return t . equal ( ret , null , 'null return value on success' )
237
273
} )
238
274
} )
239
275
0 commit comments