11'use strict' ;
22
33const fs = require ( 'fs' ) ;
4+ const os = require ( 'os' ) ;
45
56const sinon = require ( 'sinon' ) ;
67const google = require ( 'googleapis' ) ;
@@ -13,24 +14,28 @@ describe('GoogleProvider', () => {
1314 let googleProvider ;
1415 let serverless ;
1516 let setProviderStub ;
17+ let homedirStub ;
1618
1719 beforeEach ( ( ) => {
1820 serverless = new Serverless ( ) ;
1921 serverless . service = {
2022 provider : {
2123 project : 'example-project' ,
22- credentials : '12345678-abcdefgh ' ,
24+ credentials : '/root/.gcloud/project-1234.json ' ,
2325 } ,
2426 } ;
2527 setProviderStub = sinon . stub ( serverless , 'setProvider' ) . returns ( ) ;
2628 readFileSyncStub = sinon . stub ( fs , 'readFileSync' )
2729 . returns ( '{"client_email": "foo@bar.de","private_key": "wasdqwerty"}' ) ;
30+ homedirStub = sinon . stub ( os , 'homedir' )
31+ . returns ( '/root' ) ;
2832 googleProvider = new GoogleProvider ( serverless ) ;
2933 } ) ;
3034
3135 afterEach ( ( ) => {
3236 serverless . setProvider . restore ( ) ;
3337 fs . readFileSync . restore ( ) ;
38+ os . homedir . restore ( ) ;
3439 } ) ;
3540
3641 describe ( '#getProviderName()' , ( ) => {
@@ -65,7 +70,19 @@ describe('GoogleProvider', () => {
6570 it ( 'should return a new authClient' , ( ) => {
6671 const authClient = googleProvider . getAuthClient ( ) ;
6772
68- expect ( readFileSyncStub . calledOnce ) . toEqual ( true ) ;
73+ expect ( readFileSyncStub . calledWithExactly ( '/root/.gcloud/project-1234.json' ) )
74+ . toEqual ( true ) ;
75+ expect ( authClient ) . toBeInstanceOf ( google . auth . JWT ) ;
76+ } ) ;
77+
78+ it ( 'should expand tilde characters in credentials file paths' , ( ) => {
79+ googleProvider . serverless . service . provider . credentials = '~/.gcloud/project-1234.json' ;
80+
81+ const authClient = googleProvider . getAuthClient ( ) ;
82+
83+ expect ( homedirStub . calledOnce ) . toEqual ( true ) ;
84+ expect ( readFileSyncStub . calledWithExactly ( '/root/.gcloud/project-1234.json' ) )
85+ . toEqual ( true ) ;
6986 expect ( authClient ) . toBeInstanceOf ( google . auth . JWT ) ;
7087 } ) ;
7188 } ) ;
0 commit comments