1
1
'use strict' ;
2
2
3
3
const fs = require ( 'fs' ) ;
4
+ const os = require ( 'os' ) ;
4
5
5
6
const sinon = require ( 'sinon' ) ;
6
7
const google = require ( 'googleapis' ) ;
@@ -13,24 +14,28 @@ describe('GoogleProvider', () => {
13
14
let googleProvider ;
14
15
let serverless ;
15
16
let setProviderStub ;
17
+ let homedirStub ;
16
18
17
19
beforeEach ( ( ) => {
18
20
serverless = new Serverless ( ) ;
19
21
serverless . service = {
20
22
provider : {
21
23
project : 'example-project' ,
22
- credentials : '12345678-abcdefgh ' ,
24
+ credentials : '/root/.gcloud/project-1234.json ' ,
23
25
} ,
24
26
} ;
25
27
setProviderStub = sinon . stub ( serverless , 'setProvider' ) . returns ( ) ;
26
28
readFileSyncStub = sinon . stub ( fs , 'readFileSync' )
27
29
. returns ( '{"client_email": "[email protected] ","private_key": "wasdqwerty"}' ) ;
30
+ homedirStub = sinon . stub ( os , 'homedir' )
31
+ . returns ( '/root' ) ;
28
32
googleProvider = new GoogleProvider ( serverless ) ;
29
33
} ) ;
30
34
31
35
afterEach ( ( ) => {
32
36
serverless . setProvider . restore ( ) ;
33
37
fs . readFileSync . restore ( ) ;
38
+ os . homedir . restore ( ) ;
34
39
} ) ;
35
40
36
41
describe ( '#getProviderName()' , ( ) => {
@@ -65,7 +70,19 @@ describe('GoogleProvider', () => {
65
70
it ( 'should return a new authClient' , ( ) => {
66
71
const authClient = googleProvider . getAuthClient ( ) ;
67
72
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 ) ;
69
86
expect ( authClient ) . toBeInstanceOf ( google . auth . JWT ) ;
70
87
} ) ;
71
88
} ) ;
0 commit comments