@@ -6,6 +6,8 @@ var express = require('express')
66var bodyParser = require ( 'body-parser' )
77var Grant = require ( '../../' ) . express ( )
88var oauth1 = require ( '../../lib/flow/oauth1' )
9+ var oauth = require ( '../../config/oauth' )
10+ var reserved = require ( '../../config/reserved' )
911
1012
1113describe ( 'oauth1' , ( ) => {
@@ -266,75 +268,74 @@ describe('oauth1', () => {
266268 } )
267269
268270 describe ( 'authorize' , ( ) => {
269- var grant
270-
271- before ( ( ) => {
272- var config = {
273- flickr : { } , freshbooks : { } , getpocket : { } , ravelry : { } , trello : { } ,
274- tripit : { }
275- }
276- grant = Grant ( config )
277- } )
278-
279271 describe ( 'custom_parameters' , ( ) => {
280- it ( 'trello' , async ( ) => {
281- grant . config . trello . custom_params = { expiration : 'never' , name : 'Grant' }
282- var url = await oauth1 . authorize ( grant . config . trello , { oauth_token : 'token' } )
283- var query = qs . parse ( url . split ( '?' ) [ 1 ] )
284- t . deepEqual (
285- query ,
286- { oauth_token : 'token' , expiration : 'never' , name : 'Grant' }
287- )
272+ var config = { }
273+ for ( var key in oauth ) {
274+ var provider = oauth [ key ]
275+ if ( provider . oauth === 1 && provider . custom_parameters ) {
276+ config [ key ] = { }
277+ provider . custom_parameters . forEach ( ( param , index ) => {
278+ if ( reserved . includes ( param ) ) {
279+ config [ key ] . custom_params = config [ key ] . custom_params || { }
280+ config [ key ] . custom_params [ param ] = index . toString ( )
281+ }
282+ else {
283+ config [ key ] [ param ] = index . toString ( )
284+ }
285+ } )
286+ }
287+ }
288+ var grant = Grant ( config )
289+
290+ Object . keys ( config ) . forEach ( ( key ) => {
291+ it ( key , async ( ) => {
292+ var url = await oauth1 . authorize ( grant . config [ key ] , { oauth_token : 'token' } )
293+ var query = qs . parse ( url . split ( '?' ) [ 1 ] )
294+ delete query . oauth_token
295+ if ( config [ key ] . custom_params ) {
296+ Object . assign ( config [ key ] , config [ key ] . custom_params )
297+ delete config [ key ] . custom_params
298+ }
299+ t . deepEqual ( query , config [ key ] )
300+ } )
288301 } )
289302 } )
290303
291304 describe ( 'scope' , ( ) => {
305+ var grant = Grant ( {
306+ flickr : { scope : [ '1' , '2' ] } ,
307+ ravelry : { scope : [ '1' , '2' ] } ,
308+ trello : { scope : [ '1' , '2' ] } ,
309+ } )
292310 it ( 'flickr' , async ( ) => {
293- grant . config . flickr . scope = [ 'read' , 'write' ]
294311 var url = await oauth1 . authorize ( grant . config . flickr , { oauth_token : 'token' } )
295312 var query = qs . parse ( url . split ( '?' ) [ 1 ] )
296- t . deepEqual (
297- query ,
298- { oauth_token : 'token' , perms : [ 'read' , 'write' ] }
299- )
313+ t . equal ( query . perms , '1,2' )
300314 } )
301-
302315 it ( 'ravelry' , async ( ) => {
303- grant . config . ravelry . scope = [ 'read' , 'write' ]
304316 var url = await oauth1 . authorize ( grant . config . ravelry , { oauth_token : 'token' } )
305317 var query = qs . parse ( url . split ( '?' ) [ 1 ] )
306- t . deepEqual (
307- query ,
308- { oauth_token : 'token' , scope : [ 'read' , 'write' ] }
309- )
318+ t . equal ( query . scope , '1 2' )
310319 } )
311-
312320 it ( 'trello' , async ( ) => {
313- grant . config . trello . custom_params = { expiration : 'never' , name : 'Grant' }
314- grant . config . trello . scope = [ 'read' , 'write' ]
315321 var url = await oauth1 . authorize ( grant . config . trello , { oauth_token : 'token' } )
316322 var query = qs . parse ( url . split ( '?' ) [ 1 ] )
317- t . deepEqual (
318- query ,
319- { oauth_token : 'token' , scope : [ 'read' , 'write' ] , expiration : 'never' , name : 'Grant' }
320- )
323+ t . equal ( query . scope , '1,2' )
321324 } )
322325 } )
323326
324327 describe ( 'oauth_callback' , ( ) => {
325328 it ( 'tripit' , async ( ) => {
326- grant . config . tripit . redirect_uri = url ( '/connect/tripit/callback' )
329+ var grant = Grant ( { tripit : { redirect_uri : url ( '/connect/tripit/callback' ) } } )
327330 var uri = await oauth1 . authorize ( grant . config . tripit , { oauth_token : 'token' } )
328331 var query = qs . parse ( uri . split ( '?' ) [ 1 ] )
329- t . deepEqual (
330- query ,
331- { oauth_token : 'token' , oauth_callback : url ( '/connect/tripit/callback' ) }
332- )
332+ t . equal ( query . oauth_callback , url ( '/connect/tripit/callback' ) )
333333 } )
334334 } )
335335
336336 describe ( 'getpocket' , ( ) => {
337337 it ( 'authorize' , async ( ) => {
338+ var grant = Grant ( { getpocket : { } } )
338339 var url = await oauth1 . authorize ( grant . config . getpocket , { code : 'code' } )
339340 var query = qs . parse ( url . split ( '?' ) [ 1 ] )
340341 t . deepEqual ( query , { request_token : 'code' } )
@@ -343,7 +344,7 @@ describe('oauth1', () => {
343344
344345 describe ( 'subdomain' , ( ) => {
345346 it ( 'freshbooks' , async ( ) => {
346- grant . config . freshbooks . subdomain = 'grant'
347+ var grant = Grant ( { freshbooks : { subdomain : 'grant' } } )
347348 var url = await oauth1 . authorize ( grant . config . freshbooks , { oauth_token : 'token' } )
348349 t . equal ( url . indexOf ( 'https://grant.freshbooks.com' ) , 0 )
349350 } )
0 commit comments