@@ -4,14 +4,11 @@ var MockUrlFetchApp = require('./mocks/urlfetchapp');
44var  MockProperties  =  require ( './mocks/properties' ) ; 
55var  MockCache  =  require ( './mocks/cache' ) ; 
66var  MockLock  =  require ( './mocks/lock' ) ; 
7+ var  MockScriptApp  =  require ( './mocks/script' ) ; 
78var  Future  =  require ( 'fibers/future' ) ; 
89
910var  mocks  =  { 
10-  ScriptApp : { 
11-  getScriptId : function ( )  { 
12-  return  '12345' ; 
13-  } 
14-  } , 
11+  ScriptApp : new  MockScriptApp ( ) , 
1512 UrlFetchApp : new  MockUrlFetchApp ( ) , 
1613 Utilities : { 
1714 base64Encode : function ( data )  { 
@@ -405,6 +402,30 @@ describe('Service', function() {
405402 service . exchangeGrant_ ( ) ; 
406403 } ) ; 
407404 } ) ; 
405+ 
406+  describe ( '#getAuthorizationUrl()' ,  function ( )  { 
407+  it ( 'should add additional parameters to the state token' ,  function ( )  { 
408+  var  service  =  OAuth2 . createService ( 'test' ) 
409+  . setAuthorizationBaseUrl ( 'http://www.example.com' ) 
410+  . setClientId ( 'abc' ) 
411+  . setClientSecret ( 'def' ) 
412+  . setCallbackFunction ( 'authCallback' ) ; 
413+  var  authorizationUrl  =  service . getAuthorizationUrl ( { 
414+  foo : 'bar' 
415+  } ) ; 
416+ 
417+  // Extract the state token from the URL. 
418+  var  querystring  =  authorizationUrl . split ( '?' ) [ 1 ] ; 
419+  var  params  =  querystring . split ( '&' ) . reduce ( function ( result ,  pair )  { 
420+  var  parts  =  pair . split ( '=' ) . map ( decodeURIComponent ) ; 
421+  result [ parts [ 0 ] ]  =  parts [ 1 ] ; 
422+  return  result ; 
423+  } ,  { } ) ; 
424+  var  state  =  JSON . parse ( params . state ) ; 
425+ 
426+  assert . equal ( state . arguments . foo ,  'bar' ) ; 
427+  } ) ; 
428+  } ) ; 
408429} ) ; 
409430
410431describe ( 'Utilities' ,  function ( )  { 
0 commit comments