diff --git a/src/v1/binauthz_management_service_v1_client.ts b/src/v1/binauthz_management_service_v1_client.ts index d16fbd1..5e0661f 100644 --- a/src/v1/binauthz_management_service_v1_client.ts +++ b/src/v1/binauthz_management_service_v1_client.ts @@ -441,7 +441,7 @@ export class BinauthzManagementServiceV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - name: request.name || '', + name: request.name ?? '', }); this.initialize(); return this.innerApiCalls.getPolicy(request, options, callback); @@ -544,7 +544,7 @@ export class BinauthzManagementServiceV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - 'policy.name': request.policy!.name || '', + 'policy.name': request.policy!.name ?? '', }); this.initialize(); return this.innerApiCalls.updatePolicy(request, options, callback); @@ -650,7 +650,7 @@ export class BinauthzManagementServiceV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - parent: request.parent || '', + parent: request.parent ?? '', }); this.initialize(); return this.innerApiCalls.createAttestor(request, options, callback); @@ -749,7 +749,7 @@ export class BinauthzManagementServiceV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - name: request.name || '', + name: request.name ?? '', }); this.initialize(); return this.innerApiCalls.getAttestor(request, options, callback); @@ -849,7 +849,7 @@ export class BinauthzManagementServiceV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - 'attestor.name': request.attestor!.name || '', + 'attestor.name': request.attestor!.name ?? '', }); this.initialize(); return this.innerApiCalls.updateAttestor(request, options, callback); @@ -948,7 +948,7 @@ export class BinauthzManagementServiceV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - name: request.name || '', + name: request.name ?? '', }); this.initialize(); return this.innerApiCalls.deleteAttestor(request, options, callback); @@ -1052,7 +1052,7 @@ export class BinauthzManagementServiceV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - parent: request.parent || '', + parent: request.parent ?? '', }); this.initialize(); return this.innerApiCalls.listAttestors(request, options, callback); @@ -1094,7 +1094,7 @@ export class BinauthzManagementServiceV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - parent: request.parent || '', + parent: request.parent ?? '', }); const defaultCallSettings = this._defaults['listAttestors']; const callSettings = defaultCallSettings.merge(options); @@ -1145,7 +1145,7 @@ export class BinauthzManagementServiceV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - parent: request.parent || '', + parent: request.parent ?? '', }); const defaultCallSettings = this._defaults['listAttestors']; const callSettings = defaultCallSettings.merge(options); diff --git a/src/v1/system_policy_v1_client.ts b/src/v1/system_policy_v1_client.ts index d7a347f..9acab89 100644 --- a/src/v1/system_policy_v1_client.ts +++ b/src/v1/system_policy_v1_client.ts @@ -413,7 +413,7 @@ export class SystemPolicyV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - name: request.name || '', + name: request.name ?? '', }); this.initialize(); return this.innerApiCalls.getSystemPolicy(request, options, callback); diff --git a/src/v1/validation_helper_v1_client.ts b/src/v1/validation_helper_v1_client.ts index ebbd229..134e605 100644 --- a/src/v1/validation_helper_v1_client.ts +++ b/src/v1/validation_helper_v1_client.ts @@ -426,7 +426,7 @@ export class ValidationHelperV1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - attestor: request.attestor || '', + attestor: request.attestor ?? '', }); this.initialize(); return this.innerApiCalls.validateAttestationOccurrence( diff --git a/src/v1beta1/binauthz_management_service_v1_beta1_client.ts b/src/v1beta1/binauthz_management_service_v1_beta1_client.ts index 4450ba7..0876ed4 100644 --- a/src/v1beta1/binauthz_management_service_v1_beta1_client.ts +++ b/src/v1beta1/binauthz_management_service_v1_beta1_client.ts @@ -447,7 +447,7 @@ export class BinauthzManagementServiceV1Beta1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - name: request.name || '', + name: request.name ?? '', }); this.initialize(); return this.innerApiCalls.getPolicy(request, options, callback); @@ -550,7 +550,7 @@ export class BinauthzManagementServiceV1Beta1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - 'policy.name': request.policy!.name || '', + 'policy.name': request.policy!.name ?? '', }); this.initialize(); return this.innerApiCalls.updatePolicy(request, options, callback); @@ -656,7 +656,7 @@ export class BinauthzManagementServiceV1Beta1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - parent: request.parent || '', + parent: request.parent ?? '', }); this.initialize(); return this.innerApiCalls.createAttestor(request, options, callback); @@ -755,7 +755,7 @@ export class BinauthzManagementServiceV1Beta1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - name: request.name || '', + name: request.name ?? '', }); this.initialize(); return this.innerApiCalls.getAttestor(request, options, callback); @@ -855,7 +855,7 @@ export class BinauthzManagementServiceV1Beta1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - 'attestor.name': request.attestor!.name || '', + 'attestor.name': request.attestor!.name ?? '', }); this.initialize(); return this.innerApiCalls.updateAttestor(request, options, callback); @@ -954,7 +954,7 @@ export class BinauthzManagementServiceV1Beta1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - name: request.name || '', + name: request.name ?? '', }); this.initialize(); return this.innerApiCalls.deleteAttestor(request, options, callback); @@ -1058,7 +1058,7 @@ export class BinauthzManagementServiceV1Beta1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - parent: request.parent || '', + parent: request.parent ?? '', }); this.initialize(); return this.innerApiCalls.listAttestors(request, options, callback); @@ -1100,7 +1100,7 @@ export class BinauthzManagementServiceV1Beta1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - parent: request.parent || '', + parent: request.parent ?? '', }); const defaultCallSettings = this._defaults['listAttestors']; const callSettings = defaultCallSettings.merge(options); @@ -1151,7 +1151,7 @@ export class BinauthzManagementServiceV1Beta1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - parent: request.parent || '', + parent: request.parent ?? '', }); const defaultCallSettings = this._defaults['listAttestors']; const callSettings = defaultCallSettings.merge(options); diff --git a/src/v1beta1/system_policy_v1_beta1_client.ts b/src/v1beta1/system_policy_v1_beta1_client.ts index 3daa3b8..75b01ed 100644 --- a/src/v1beta1/system_policy_v1_beta1_client.ts +++ b/src/v1beta1/system_policy_v1_beta1_client.ts @@ -413,7 +413,7 @@ export class SystemPolicyV1Beta1Client { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - name: request.name || '', + name: request.name ?? '', }); this.initialize(); return this.innerApiCalls.getSystemPolicy(request, options, callback); diff --git a/test/gapic_binauthz_management_service_v1_beta1_v1beta1.ts b/test/gapic_binauthz_management_service_v1_beta1_v1beta1.ts index 6e8197a..baa8f96 100644 --- a/test/gapic_binauthz_management_service_v1_beta1_v1beta1.ts +++ b/test/gapic_binauthz_management_service_v1_beta1_v1beta1.ts @@ -27,6 +27,21 @@ import {PassThrough} from 'stream'; import {protobuf} from 'google-gax'; +// Dynamically loaded proto JSON is needed to get the type information +// to fill in default values for request objects +const root = protobuf.Root.fromJSON( + require('../protos/protos.json') +).resolveAll(); + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function getTypeDefaultValue(typeName: string, fields: string[]) { + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; +} + function generateSampleMessage(instance: T) { const filledObject = ( instance.constructor as typeof protobuf.Message @@ -254,26 +269,23 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetPolicyRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Policy() ); client.innerApiCalls.getPolicy = stubSimpleCall(expectedResponse); const [response] = await client.getPolicy(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getPolicy without error using callback', async () => { @@ -288,15 +300,9 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetPolicyRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Policy() ); @@ -319,11 +325,14 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getPolicy with error', async () => { @@ -338,23 +347,20 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetPolicyRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.getPolicy = stubSimpleCall(undefined, expectedError); await assert.rejects(client.getPolicy(request), expectedError); - assert( - (client.innerApiCalls.getPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getPolicy with closed client', async () => { @@ -369,7 +375,8 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetPolicyRequest() ); - request.name = ''; + const defaultValue1 = getTypeDefaultValue('GetPolicyRequest', ['name']); + request.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.getPolicy(request), expectedError); @@ -389,27 +396,27 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.UpdatePolicyRequest() ); - request.policy = {}; - request.policy.name = ''; - const expectedHeaderRequestParams = 'policy.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.policy ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdatePolicyRequest', [ + 'policy', + 'name', + ]); + request.policy.name = defaultValue1; + const expectedHeaderRequestParams = `policy.name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Policy() ); client.innerApiCalls.updatePolicy = stubSimpleCall(expectedResponse); const [response] = await client.updatePolicy(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.updatePolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updatePolicy without error using callback', async () => { @@ -424,16 +431,13 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.UpdatePolicyRequest() ); - request.policy = {}; - request.policy.name = ''; - const expectedHeaderRequestParams = 'policy.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.policy ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdatePolicyRequest', [ + 'policy', + 'name', + ]); + request.policy.name = defaultValue1; + const expectedHeaderRequestParams = `policy.name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Policy() ); @@ -456,11 +460,14 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.updatePolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updatePolicy with error', async () => { @@ -475,27 +482,27 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.UpdatePolicyRequest() ); - request.policy = {}; - request.policy.name = ''; - const expectedHeaderRequestParams = 'policy.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.policy ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdatePolicyRequest', [ + 'policy', + 'name', + ]); + request.policy.name = defaultValue1; + const expectedHeaderRequestParams = `policy.name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.updatePolicy = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.updatePolicy(request), expectedError); - assert( - (client.innerApiCalls.updatePolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updatePolicy with closed client', async () => { @@ -510,8 +517,12 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.UpdatePolicyRequest() ); - request.policy = {}; - request.policy.name = ''; + request.policy ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdatePolicyRequest', [ + 'policy', + 'name', + ]); + request.policy.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.updatePolicy(request), expectedError); @@ -531,26 +542,25 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.CreateAttestorRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CreateAttestorRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Attestor() ); client.innerApiCalls.createAttestor = stubSimpleCall(expectedResponse); const [response] = await client.createAttestor(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.createAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes createAttestor without error using callback', async () => { @@ -565,15 +575,11 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.CreateAttestorRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CreateAttestorRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Attestor() ); @@ -596,11 +602,14 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.createAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes createAttestor with error', async () => { @@ -615,26 +624,25 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.CreateAttestorRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CreateAttestorRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.createAttestor = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.createAttestor(request), expectedError); - assert( - (client.innerApiCalls.createAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes createAttestor with closed client', async () => { @@ -649,7 +657,10 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.CreateAttestorRequest() ); - request.parent = ''; + const defaultValue1 = getTypeDefaultValue('CreateAttestorRequest', [ + 'parent', + ]); + request.parent = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.createAttestor(request), expectedError); @@ -669,26 +680,23 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetAttestorRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Attestor() ); client.innerApiCalls.getAttestor = stubSimpleCall(expectedResponse); const [response] = await client.getAttestor(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getAttestor without error using callback', async () => { @@ -703,15 +711,9 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetAttestorRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Attestor() ); @@ -734,11 +736,14 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getAttestor with error', async () => { @@ -753,26 +758,23 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetAttestorRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.getAttestor = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.getAttestor(request), expectedError); - assert( - (client.innerApiCalls.getAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getAttestor with closed client', async () => { @@ -787,7 +789,8 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetAttestorRequest() ); - request.name = ''; + const defaultValue1 = getTypeDefaultValue('GetAttestorRequest', ['name']); + request.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.getAttestor(request), expectedError); @@ -807,27 +810,27 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.UpdateAttestorRequest() ); - request.attestor = {}; - request.attestor.name = ''; - const expectedHeaderRequestParams = 'attestor.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.attestor ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdateAttestorRequest', [ + 'attestor', + 'name', + ]); + request.attestor.name = defaultValue1; + const expectedHeaderRequestParams = `attestor.name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Attestor() ); client.innerApiCalls.updateAttestor = stubSimpleCall(expectedResponse); const [response] = await client.updateAttestor(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.updateAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updateAttestor without error using callback', async () => { @@ -842,16 +845,13 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.UpdateAttestorRequest() ); - request.attestor = {}; - request.attestor.name = ''; - const expectedHeaderRequestParams = 'attestor.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.attestor ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdateAttestorRequest', [ + 'attestor', + 'name', + ]); + request.attestor.name = defaultValue1; + const expectedHeaderRequestParams = `attestor.name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Attestor() ); @@ -874,11 +874,14 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.updateAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updateAttestor with error', async () => { @@ -893,27 +896,27 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.UpdateAttestorRequest() ); - request.attestor = {}; - request.attestor.name = ''; - const expectedHeaderRequestParams = 'attestor.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.attestor ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdateAttestorRequest', [ + 'attestor', + 'name', + ]); + request.attestor.name = defaultValue1; + const expectedHeaderRequestParams = `attestor.name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.updateAttestor = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.updateAttestor(request), expectedError); - assert( - (client.innerApiCalls.updateAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updateAttestor with closed client', async () => { @@ -928,8 +931,12 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.UpdateAttestorRequest() ); - request.attestor = {}; - request.attestor.name = ''; + request.attestor ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdateAttestorRequest', [ + 'attestor', + 'name', + ]); + request.attestor.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.updateAttestor(request), expectedError); @@ -949,26 +956,25 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.DeleteAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('DeleteAttestorRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.protobuf.Empty() ); client.innerApiCalls.deleteAttestor = stubSimpleCall(expectedResponse); const [response] = await client.deleteAttestor(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.deleteAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes deleteAttestor without error using callback', async () => { @@ -983,15 +989,11 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.DeleteAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('DeleteAttestorRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.protobuf.Empty() ); @@ -1014,11 +1016,14 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.deleteAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes deleteAttestor with error', async () => { @@ -1033,26 +1038,25 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.DeleteAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('DeleteAttestorRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.deleteAttestor = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.deleteAttestor(request), expectedError); - assert( - (client.innerApiCalls.deleteAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes deleteAttestor with closed client', async () => { @@ -1067,7 +1071,10 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.DeleteAttestorRequest() ); - request.name = ''; + const defaultValue1 = getTypeDefaultValue('DeleteAttestorRequest', [ + 'name', + ]); + request.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.deleteAttestor(request), expectedError); @@ -1087,15 +1094,11 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = [ generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Attestor() @@ -1110,11 +1113,14 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { client.innerApiCalls.listAttestors = stubSimpleCall(expectedResponse); const [response] = await client.listAttestors(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.listAttestors as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes listAttestors without error using callback', async () => { @@ -1129,15 +1135,11 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = [ generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Attestor() @@ -1170,11 +1172,14 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.listAttestors as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes listAttestors with error', async () => { @@ -1189,26 +1194,25 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.listAttestors = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.listAttestors(request), expectedError); - assert( - (client.innerApiCalls.listAttestors as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes listAttestorsStream without error', async () => { @@ -1223,8 +1227,11 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = [ generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Attestor() @@ -1264,11 +1271,12 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { .getCall(0) .calledWith(client.innerApiCalls.listAttestors, request) ); - assert.strictEqual( - ( - client.descriptors.page.listAttestors.createStream as SinonStub - ).getCall(0).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listAttestors.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); @@ -1284,8 +1292,11 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedError = new Error('expected'); client.descriptors.page.listAttestors.createStream = stubPageStreamingCall(undefined, expectedError); @@ -1314,11 +1325,12 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { .getCall(0) .calledWith(client.innerApiCalls.listAttestors, request) ); - assert.strictEqual( - ( - client.descriptors.page.listAttestors.createStream as SinonStub - ).getCall(0).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listAttestors.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); @@ -1334,8 +1346,11 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = [ generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Attestor() @@ -1362,11 +1377,12 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { ).getCall(0).args[1], request ); - assert.strictEqual( - ( - client.descriptors.page.listAttestors.asyncIterate as SinonStub - ).getCall(0).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listAttestors.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); @@ -1382,8 +1398,11 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedError = new Error('expected'); client.descriptors.page.listAttestors.asyncIterate = stubAsyncIterationCall(undefined, expectedError); @@ -1401,11 +1420,12 @@ describe('v1beta1.BinauthzManagementServiceV1Beta1Client', () => { ).getCall(0).args[1], request ); - assert.strictEqual( - ( - client.descriptors.page.listAttestors.asyncIterate as SinonStub - ).getCall(0).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listAttestors.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); }); diff --git a/test/gapic_binauthz_management_service_v1_v1.ts b/test/gapic_binauthz_management_service_v1_v1.ts index bd51794..bc6522b 100644 --- a/test/gapic_binauthz_management_service_v1_v1.ts +++ b/test/gapic_binauthz_management_service_v1_v1.ts @@ -27,6 +27,21 @@ import {PassThrough} from 'stream'; import {protobuf} from 'google-gax'; +// Dynamically loaded proto JSON is needed to get the type information +// to fill in default values for request objects +const root = protobuf.Root.fromJSON( + require('../protos/protos.json') +).resolveAll(); + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function getTypeDefaultValue(typeName: string, fields: string[]) { + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; +} + function generateSampleMessage(instance: T) { const filledObject = ( instance.constructor as typeof protobuf.Message @@ -248,26 +263,23 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetPolicyRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Policy() ); client.innerApiCalls.getPolicy = stubSimpleCall(expectedResponse); const [response] = await client.getPolicy(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getPolicy without error using callback', async () => { @@ -282,15 +294,9 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetPolicyRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Policy() ); @@ -313,11 +319,14 @@ describe('v1.BinauthzManagementServiceV1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getPolicy with error', async () => { @@ -332,23 +341,20 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetPolicyRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.getPolicy = stubSimpleCall(undefined, expectedError); await assert.rejects(client.getPolicy(request), expectedError); - assert( - (client.innerApiCalls.getPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getPolicy with closed client', async () => { @@ -363,7 +369,8 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetPolicyRequest() ); - request.name = ''; + const defaultValue1 = getTypeDefaultValue('GetPolicyRequest', ['name']); + request.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.getPolicy(request), expectedError); @@ -383,27 +390,27 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.UpdatePolicyRequest() ); - request.policy = {}; - request.policy.name = ''; - const expectedHeaderRequestParams = 'policy.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.policy ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdatePolicyRequest', [ + 'policy', + 'name', + ]); + request.policy.name = defaultValue1; + const expectedHeaderRequestParams = `policy.name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Policy() ); client.innerApiCalls.updatePolicy = stubSimpleCall(expectedResponse); const [response] = await client.updatePolicy(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.updatePolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updatePolicy without error using callback', async () => { @@ -418,16 +425,13 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.UpdatePolicyRequest() ); - request.policy = {}; - request.policy.name = ''; - const expectedHeaderRequestParams = 'policy.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.policy ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdatePolicyRequest', [ + 'policy', + 'name', + ]); + request.policy.name = defaultValue1; + const expectedHeaderRequestParams = `policy.name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Policy() ); @@ -450,11 +454,14 @@ describe('v1.BinauthzManagementServiceV1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.updatePolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updatePolicy with error', async () => { @@ -469,27 +476,27 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.UpdatePolicyRequest() ); - request.policy = {}; - request.policy.name = ''; - const expectedHeaderRequestParams = 'policy.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.policy ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdatePolicyRequest', [ + 'policy', + 'name', + ]); + request.policy.name = defaultValue1; + const expectedHeaderRequestParams = `policy.name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.updatePolicy = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.updatePolicy(request), expectedError); - assert( - (client.innerApiCalls.updatePolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updatePolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updatePolicy with closed client', async () => { @@ -504,8 +511,12 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.UpdatePolicyRequest() ); - request.policy = {}; - request.policy.name = ''; + request.policy ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdatePolicyRequest', [ + 'policy', + 'name', + ]); + request.policy.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.updatePolicy(request), expectedError); @@ -525,26 +536,25 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.CreateAttestorRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CreateAttestorRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Attestor() ); client.innerApiCalls.createAttestor = stubSimpleCall(expectedResponse); const [response] = await client.createAttestor(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.createAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes createAttestor without error using callback', async () => { @@ -559,15 +569,11 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.CreateAttestorRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CreateAttestorRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Attestor() ); @@ -590,11 +596,14 @@ describe('v1.BinauthzManagementServiceV1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.createAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes createAttestor with error', async () => { @@ -609,26 +618,25 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.CreateAttestorRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CreateAttestorRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.createAttestor = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.createAttestor(request), expectedError); - assert( - (client.innerApiCalls.createAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes createAttestor with closed client', async () => { @@ -643,7 +651,10 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.CreateAttestorRequest() ); - request.parent = ''; + const defaultValue1 = getTypeDefaultValue('CreateAttestorRequest', [ + 'parent', + ]); + request.parent = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.createAttestor(request), expectedError); @@ -663,26 +674,23 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetAttestorRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Attestor() ); client.innerApiCalls.getAttestor = stubSimpleCall(expectedResponse); const [response] = await client.getAttestor(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getAttestor without error using callback', async () => { @@ -697,15 +705,9 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetAttestorRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Attestor() ); @@ -728,11 +730,14 @@ describe('v1.BinauthzManagementServiceV1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getAttestor with error', async () => { @@ -747,26 +752,23 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetAttestorRequest', ['name']); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.getAttestor = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.getAttestor(request), expectedError); - assert( - (client.innerApiCalls.getAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getAttestor with closed client', async () => { @@ -781,7 +783,8 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetAttestorRequest() ); - request.name = ''; + const defaultValue1 = getTypeDefaultValue('GetAttestorRequest', ['name']); + request.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.getAttestor(request), expectedError); @@ -801,27 +804,27 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.UpdateAttestorRequest() ); - request.attestor = {}; - request.attestor.name = ''; - const expectedHeaderRequestParams = 'attestor.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.attestor ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdateAttestorRequest', [ + 'attestor', + 'name', + ]); + request.attestor.name = defaultValue1; + const expectedHeaderRequestParams = `attestor.name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Attestor() ); client.innerApiCalls.updateAttestor = stubSimpleCall(expectedResponse); const [response] = await client.updateAttestor(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.updateAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updateAttestor without error using callback', async () => { @@ -836,16 +839,13 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.UpdateAttestorRequest() ); - request.attestor = {}; - request.attestor.name = ''; - const expectedHeaderRequestParams = 'attestor.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.attestor ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdateAttestorRequest', [ + 'attestor', + 'name', + ]); + request.attestor.name = defaultValue1; + const expectedHeaderRequestParams = `attestor.name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Attestor() ); @@ -868,11 +868,14 @@ describe('v1.BinauthzManagementServiceV1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.updateAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updateAttestor with error', async () => { @@ -887,27 +890,27 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.UpdateAttestorRequest() ); - request.attestor = {}; - request.attestor.name = ''; - const expectedHeaderRequestParams = 'attestor.name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + request.attestor ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdateAttestorRequest', [ + 'attestor', + 'name', + ]); + request.attestor.name = defaultValue1; + const expectedHeaderRequestParams = `attestor.name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.updateAttestor = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.updateAttestor(request), expectedError); - assert( - (client.innerApiCalls.updateAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes updateAttestor with closed client', async () => { @@ -922,8 +925,12 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.UpdateAttestorRequest() ); - request.attestor = {}; - request.attestor.name = ''; + request.attestor ??= {}; + const defaultValue1 = getTypeDefaultValue('UpdateAttestorRequest', [ + 'attestor', + 'name', + ]); + request.attestor.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.updateAttestor(request), expectedError); @@ -943,26 +950,25 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.DeleteAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('DeleteAttestorRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.protobuf.Empty() ); client.innerApiCalls.deleteAttestor = stubSimpleCall(expectedResponse); const [response] = await client.deleteAttestor(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.deleteAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes deleteAttestor without error using callback', async () => { @@ -977,15 +983,11 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.DeleteAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('DeleteAttestorRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.protobuf.Empty() ); @@ -1008,11 +1010,14 @@ describe('v1.BinauthzManagementServiceV1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.deleteAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes deleteAttestor with error', async () => { @@ -1027,26 +1032,25 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.DeleteAttestorRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('DeleteAttestorRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.deleteAttestor = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.deleteAttestor(request), expectedError); - assert( - (client.innerApiCalls.deleteAttestor as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteAttestor as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes deleteAttestor with closed client', async () => { @@ -1061,7 +1065,10 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.DeleteAttestorRequest() ); - request.name = ''; + const defaultValue1 = getTypeDefaultValue('DeleteAttestorRequest', [ + 'name', + ]); + request.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.deleteAttestor(request), expectedError); @@ -1081,15 +1088,11 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = [ generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Attestor() @@ -1104,11 +1107,14 @@ describe('v1.BinauthzManagementServiceV1Client', () => { client.innerApiCalls.listAttestors = stubSimpleCall(expectedResponse); const [response] = await client.listAttestors(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.listAttestors as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes listAttestors without error using callback', async () => { @@ -1123,15 +1129,11 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = [ generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Attestor() @@ -1164,11 +1166,14 @@ describe('v1.BinauthzManagementServiceV1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.listAttestors as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes listAttestors with error', async () => { @@ -1183,26 +1188,25 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.listAttestors = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.listAttestors(request), expectedError); - assert( - (client.innerApiCalls.listAttestors as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listAttestors as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes listAttestorsStream without error', async () => { @@ -1217,8 +1221,11 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = [ generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Attestor() @@ -1256,11 +1263,12 @@ describe('v1.BinauthzManagementServiceV1Client', () => { .getCall(0) .calledWith(client.innerApiCalls.listAttestors, request) ); - assert.strictEqual( - ( - client.descriptors.page.listAttestors.createStream as SinonStub - ).getCall(0).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listAttestors.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); @@ -1276,8 +1284,11 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedError = new Error('expected'); client.descriptors.page.listAttestors.createStream = stubPageStreamingCall(undefined, expectedError); @@ -1304,11 +1315,12 @@ describe('v1.BinauthzManagementServiceV1Client', () => { .getCall(0) .calledWith(client.innerApiCalls.listAttestors, request) ); - assert.strictEqual( - ( - client.descriptors.page.listAttestors.createStream as SinonStub - ).getCall(0).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listAttestors.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); @@ -1324,8 +1336,11 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedResponse = [ generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Attestor() @@ -1352,11 +1367,12 @@ describe('v1.BinauthzManagementServiceV1Client', () => { ).getCall(0).args[1], request ); - assert.strictEqual( - ( - client.descriptors.page.listAttestors.asyncIterate as SinonStub - ).getCall(0).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listAttestors.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); @@ -1372,8 +1388,11 @@ describe('v1.BinauthzManagementServiceV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ListAttestorsRequest() ); - request.parent = ''; - const expectedHeaderRequestParams = 'parent='; + const defaultValue1 = getTypeDefaultValue('ListAttestorsRequest', [ + 'parent', + ]); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1}`; const expectedError = new Error('expected'); client.descriptors.page.listAttestors.asyncIterate = stubAsyncIterationCall(undefined, expectedError); @@ -1391,11 +1410,12 @@ describe('v1.BinauthzManagementServiceV1Client', () => { ).getCall(0).args[1], request ); - assert.strictEqual( - ( - client.descriptors.page.listAttestors.asyncIterate as SinonStub - ).getCall(0).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listAttestors.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); }); diff --git a/test/gapic_system_policy_v1_beta1_v1beta1.ts b/test/gapic_system_policy_v1_beta1_v1beta1.ts index e54f179..a229182 100644 --- a/test/gapic_system_policy_v1_beta1_v1beta1.ts +++ b/test/gapic_system_policy_v1_beta1_v1beta1.ts @@ -25,6 +25,21 @@ import * as systempolicyv1beta1Module from '../src'; import {protobuf} from 'google-gax'; +// Dynamically loaded proto JSON is needed to get the type information +// to fill in default values for request objects +const root = protobuf.Root.fromJSON( + require('../protos/protos.json') +).resolveAll(); + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function getTypeDefaultValue(typeName: string, fields: string[]) { + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; +} + function generateSampleMessage(instance: T) { const filledObject = ( instance.constructor as typeof protobuf.Message @@ -168,26 +183,25 @@ describe('v1beta1.SystemPolicyV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetSystemPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetSystemPolicyRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Policy() ); client.innerApiCalls.getSystemPolicy = stubSimpleCall(expectedResponse); const [response] = await client.getSystemPolicy(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getSystemPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getSystemPolicy without error using callback', async () => { @@ -200,15 +214,11 @@ describe('v1beta1.SystemPolicyV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetSystemPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetSystemPolicyRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.Policy() ); @@ -231,11 +241,14 @@ describe('v1beta1.SystemPolicyV1Beta1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getSystemPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getSystemPolicy with error', async () => { @@ -248,26 +261,25 @@ describe('v1beta1.SystemPolicyV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetSystemPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetSystemPolicyRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.getSystemPolicy = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.getSystemPolicy(request), expectedError); - assert( - (client.innerApiCalls.getSystemPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getSystemPolicy with closed client', async () => { @@ -280,7 +292,10 @@ describe('v1beta1.SystemPolicyV1Beta1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1beta1.GetSystemPolicyRequest() ); - request.name = ''; + const defaultValue1 = getTypeDefaultValue('GetSystemPolicyRequest', [ + 'name', + ]); + request.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.getSystemPolicy(request), expectedError); diff --git a/test/gapic_system_policy_v1_v1.ts b/test/gapic_system_policy_v1_v1.ts index e8d6283..e6f257c 100644 --- a/test/gapic_system_policy_v1_v1.ts +++ b/test/gapic_system_policy_v1_v1.ts @@ -25,6 +25,21 @@ import * as systempolicyv1Module from '../src'; import {protobuf} from 'google-gax'; +// Dynamically loaded proto JSON is needed to get the type information +// to fill in default values for request objects +const root = protobuf.Root.fromJSON( + require('../protos/protos.json') +).resolveAll(); + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function getTypeDefaultValue(typeName: string, fields: string[]) { + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; +} + function generateSampleMessage(instance: T) { const filledObject = ( instance.constructor as typeof protobuf.Message @@ -159,26 +174,25 @@ describe('v1.SystemPolicyV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetSystemPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetSystemPolicyRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Policy() ); client.innerApiCalls.getSystemPolicy = stubSimpleCall(expectedResponse); const [response] = await client.getSystemPolicy(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getSystemPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getSystemPolicy without error using callback', async () => { @@ -190,15 +204,11 @@ describe('v1.SystemPolicyV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetSystemPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetSystemPolicyRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.Policy() ); @@ -221,11 +231,14 @@ describe('v1.SystemPolicyV1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getSystemPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getSystemPolicy with error', async () => { @@ -237,26 +250,25 @@ describe('v1.SystemPolicyV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetSystemPolicyRequest() ); - request.name = ''; - const expectedHeaderRequestParams = 'name='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetSystemPolicyRequest', [ + 'name', + ]); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.getSystemPolicy = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.getSystemPolicy(request), expectedError); - assert( - (client.innerApiCalls.getSystemPolicy as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getSystemPolicy as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getSystemPolicy with closed client', async () => { @@ -268,7 +280,10 @@ describe('v1.SystemPolicyV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.GetSystemPolicyRequest() ); - request.name = ''; + const defaultValue1 = getTypeDefaultValue('GetSystemPolicyRequest', [ + 'name', + ]); + request.name = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.getSystemPolicy(request), expectedError); diff --git a/test/gapic_validation_helper_v1_v1.ts b/test/gapic_validation_helper_v1_v1.ts index 8b19183..274a39c 100644 --- a/test/gapic_validation_helper_v1_v1.ts +++ b/test/gapic_validation_helper_v1_v1.ts @@ -25,6 +25,21 @@ import * as validationhelperv1Module from '../src'; import {protobuf} from 'google-gax'; +// Dynamically loaded proto JSON is needed to get the type information +// to fill in default values for request objects +const root = protobuf.Root.fromJSON( + require('../protos/protos.json') +).resolveAll(); + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function getTypeDefaultValue(typeName: string, fields: string[]) { + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; +} + function generateSampleMessage(instance: T) { const filledObject = ( instance.constructor as typeof protobuf.Message @@ -159,15 +174,12 @@ describe('v1.ValidationHelperV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ValidateAttestationOccurrenceRequest() ); - request.attestor = ''; - const expectedHeaderRequestParams = 'attestor='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue( + 'ValidateAttestationOccurrenceRequest', + ['attestor'] + ); + request.attestor = defaultValue1; + const expectedHeaderRequestParams = `attestor=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ValidateAttestationOccurrenceResponse() ); @@ -175,11 +187,14 @@ describe('v1.ValidationHelperV1Client', () => { stubSimpleCall(expectedResponse); const [response] = await client.validateAttestationOccurrence(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.validateAttestationOccurrence as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.validateAttestationOccurrence as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.validateAttestationOccurrence as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes validateAttestationOccurrence without error using callback', async () => { @@ -191,15 +206,12 @@ describe('v1.ValidationHelperV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ValidateAttestationOccurrenceRequest() ); - request.attestor = ''; - const expectedHeaderRequestParams = 'attestor='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue( + 'ValidateAttestationOccurrenceRequest', + ['attestor'] + ); + request.attestor = defaultValue1; + const expectedHeaderRequestParams = `attestor=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ValidateAttestationOccurrenceResponse() ); @@ -222,11 +234,14 @@ describe('v1.ValidationHelperV1Client', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.validateAttestationOccurrence as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.validateAttestationOccurrence as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.validateAttestationOccurrence as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes validateAttestationOccurrence with error', async () => { @@ -238,15 +253,12 @@ describe('v1.ValidationHelperV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ValidateAttestationOccurrenceRequest() ); - request.attestor = ''; - const expectedHeaderRequestParams = 'attestor='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue( + 'ValidateAttestationOccurrenceRequest', + ['attestor'] + ); + request.attestor = defaultValue1; + const expectedHeaderRequestParams = `attestor=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.validateAttestationOccurrence = stubSimpleCall( undefined, @@ -256,11 +268,14 @@ describe('v1.ValidationHelperV1Client', () => { client.validateAttestationOccurrence(request), expectedError ); - assert( - (client.innerApiCalls.validateAttestationOccurrence as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.validateAttestationOccurrence as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.validateAttestationOccurrence as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes validateAttestationOccurrence with closed client', async () => { @@ -272,7 +287,11 @@ describe('v1.ValidationHelperV1Client', () => { const request = generateSampleMessage( new protos.google.cloud.binaryauthorization.v1.ValidateAttestationOccurrenceRequest() ); - request.attestor = ''; + const defaultValue1 = getTypeDefaultValue( + 'ValidateAttestationOccurrenceRequest', + ['attestor'] + ); + request.attestor = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(