@@ -71,35 +71,6 @@ class FakeMetadata {
7171// tslint:disable-next-line:variable-name
7272let GrpcMetadataOverride ;
7373let grpcProtoLoadOverride : ( typeof grpcProtoLoader . loadSync ) | null = null ;
74- const fakeGrpc = {
75- Metadata : FakeMetadata ,
76- credentials : {
77- combineChannelCredentials ( ) {
78- return {
79- name : 'combineChannelCredentials' ,
80- args : arguments ,
81- } ;
82- } ,
83- createSsl ( ) {
84- return {
85- name : 'createSsl' ,
86- args : arguments ,
87- } ;
88- } ,
89- createFromGoogleCredential ( ) {
90- return {
91- name : 'createFromGoogleCredential' ,
92- args : arguments ,
93- } ;
94- } ,
95- createInsecure ( ) {
96- return {
97- name : 'createInsecure' ,
98- args : arguments ,
99- } ;
100- } ,
101- } ,
102- } ;
10374
10475const fakeGrpcProtoLoader = {
10576 loadSync ( filename : string , options ?: grpcProtoLoader . Options ) {
@@ -146,10 +117,12 @@ describe('GrpcService', () => {
146117 maxRetries : 3 ,
147118 } ;
148119
120+ const grpcJsVersion = require ( '@grpc/grpc-js/package.json' ) . version ;
121+
149122 const EXPECTED_API_CLIENT_HEADER = [
150123 'gl-node/' + process . versions . node ,
151124 'gccl/' + CONFIG . packageJson . version ,
152- 'grpc-js/' + require ( '@grpc/grpc-js/package.json' ) . version ,
125+ 'grpc-js/' + grpcJsVersion ,
153126 ] . join ( ' ' ) ;
154127
155128 const MOCK_GRPC_API : grpcProtoLoader . PackageDefinition = {
@@ -162,7 +135,6 @@ describe('GrpcService', () => {
162135 Service : FakeService ,
163136 util : fakeUtil ,
164137 } ,
165- grpc : fakeGrpc ,
166138 '@google-cloud/projectify' : {
167139 replaceProjectIdToken : fakeReplaceProjectIdTokenOverride ,
168140 } ,
@@ -192,6 +164,61 @@ describe('GrpcService', () => {
192164 sinon . restore ( ) ;
193165 } ) ;
194166
167+ it ( 'should use grpc from config object' , ( ) => {
168+ let metadataUsed = 0 ;
169+ let credentialsUsed = 0 ;
170+ class Credentials {
171+ createInsecure ( ) {
172+ ++ credentialsUsed ;
173+ }
174+ }
175+ class Metadata {
176+ add ( ) {
177+ ++ metadataUsed ;
178+ }
179+ }
180+ const fakeGrpc = {
181+ Metadata,
182+ credentials : new Credentials ( ) ,
183+ } ;
184+ const grpcService = new GrpcService (
185+ Object . assign (
186+ {
187+ grpc : fakeGrpc ,
188+ grpcVersion : 'grpc-foo/1.2.3' ,
189+ customEndpoint : 'endpoint' ,
190+ } ,
191+ CONFIG
192+ ) ,
193+ OPTIONS
194+ ) ;
195+ assert . strictEqual ( grpcService . grpc , fakeGrpc ) ;
196+ assert . strictEqual ( grpcService . grpcVersion , 'grpc-foo/1.2.3' ) ;
197+ assert ( metadataUsed > 0 ) ;
198+ assert ( credentialsUsed > 0 ) ;
199+ } ) ;
200+
201+ it ( 'should not use @grpc/grpc-js version if grpc object is passed' , ( ) => {
202+ class Metadata {
203+ add ( ) { }
204+ }
205+ const fakeGrpc = {
206+ Metadata,
207+ } ;
208+ const grpcService = new GrpcService (
209+ Object . assign ( { grpc : fakeGrpc } , CONFIG ) ,
210+ OPTIONS
211+ ) ;
212+ assert . strictEqual ( grpcService . grpc , fakeGrpc ) ;
213+ assert . strictEqual ( grpcService . grpcVersion , 'grpc/unknown' ) ;
214+ } ) ;
215+
216+ it ( 'should use @grpc/grpc-js by default' , ( ) => {
217+ const grpcService = new GrpcService ( CONFIG , OPTIONS ) ;
218+ assert . strictEqual ( grpcService . grpcVersion , 'grpc-js/' + grpcJsVersion ) ;
219+ assert . strictEqual ( grpcService . grpc , grpc ) ;
220+ } ) ;
221+
195222 describe ( 'grpc error to http error map' , ( ) => {
196223 it ( 'should export grpc error map' , ( ) => {
197224 assert . deepStrictEqual ( GrpcService . GRPC_ERROR_CODE_TO_HTTP , {
0 commit comments