Skip to content
This repository has been archived by the owner on Jul 20, 2023. It is now read-only.

fix: better support for fallback mode #135

Merged
merged 2 commits into from
Aug 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions samples/generated/v1/iam_checker.troubleshoot_iam_policy.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
function main() {
// [START policytroubleshooter_v1_generated_IamChecker_TroubleshootIamPolicy_async]
/**
* This snippet has been automatically generated and should be regarded as a code template only.
* It will require modifications to work.
* It may require correct/in-range values for request initialization.
* TODO(developer): Uncomment these variables before running the sample.
*/
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"segments": [
{
"start": 25,
"end": 50,
"end": 53,
"type": "FULL"
}
],
Expand Down
3 changes: 2 additions & 1 deletion src/v1/iam_checker_client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,8 @@ export class IamCheckerClient {
const apiCall = this._gaxModule.createApiCall(
callPromise,
this._defaults[methodName],
descriptor
descriptor,
this._opts.fallback
);

this.innerApiCalls[methodName] = apiCall;
Expand Down
156 changes: 79 additions & 77 deletions test/gapic_iam_checker_v1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,99 +50,101 @@ function stubSimpleCallWithCallback<ResponseType>(
}

describe('v1.IamCheckerClient', () => {
it('has servicePath', () => {
const servicePath = iamcheckerModule.v1.IamCheckerClient.servicePath;
assert(servicePath);
});

it('has apiEndpoint', () => {
const apiEndpoint = iamcheckerModule.v1.IamCheckerClient.apiEndpoint;
assert(apiEndpoint);
});

it('has port', () => {
const port = iamcheckerModule.v1.IamCheckerClient.port;
assert(port);
assert(typeof port === 'number');
});

it('should create a client with no option', () => {
const client = new iamcheckerModule.v1.IamCheckerClient();
assert(client);
});
describe('Common methods', () => {
it('has servicePath', () => {
const servicePath = iamcheckerModule.v1.IamCheckerClient.servicePath;
assert(servicePath);
});

it('should create a client with gRPC fallback', () => {
const client = new iamcheckerModule.v1.IamCheckerClient({
fallback: true,
it('has apiEndpoint', () => {
const apiEndpoint = iamcheckerModule.v1.IamCheckerClient.apiEndpoint;
assert(apiEndpoint);
});
assert(client);
});

it('has initialize method and supports deferred initialization', async () => {
const client = new iamcheckerModule.v1.IamCheckerClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
it('has port', () => {
const port = iamcheckerModule.v1.IamCheckerClient.port;
assert(port);
assert(typeof port === 'number');
});
assert.strictEqual(client.iamCheckerStub, undefined);
await client.initialize();
assert(client.iamCheckerStub);
});

it('has close method for the initialized client', done => {
const client = new iamcheckerModule.v1.IamCheckerClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
it('should create a client with no option', () => {
const client = new iamcheckerModule.v1.IamCheckerClient();
assert(client);
});
client.initialize();
assert(client.iamCheckerStub);
client.close().then(() => {
done();

it('should create a client with gRPC fallback', () => {
const client = new iamcheckerModule.v1.IamCheckerClient({
fallback: true,
});
assert(client);
});
});

it('has close method for the non-initialized client', done => {
const client = new iamcheckerModule.v1.IamCheckerClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
it('has initialize method and supports deferred initialization', async () => {
const client = new iamcheckerModule.v1.IamCheckerClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
assert.strictEqual(client.iamCheckerStub, undefined);
await client.initialize();
assert(client.iamCheckerStub);
});
assert.strictEqual(client.iamCheckerStub, undefined);
client.close().then(() => {
done();

it('has close method for the initialized client', done => {
const client = new iamcheckerModule.v1.IamCheckerClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
client.initialize();
assert(client.iamCheckerStub);
client.close().then(() => {
done();
});
});
});

it('has getProjectId method', async () => {
const fakeProjectId = 'fake-project-id';
const client = new iamcheckerModule.v1.IamCheckerClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
it('has close method for the non-initialized client', done => {
const client = new iamcheckerModule.v1.IamCheckerClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
assert.strictEqual(client.iamCheckerStub, undefined);
client.close().then(() => {
done();
});
});
client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
const result = await client.getProjectId();
assert.strictEqual(result, fakeProjectId);
assert((client.auth.getProjectId as SinonStub).calledWithExactly());
});

it('has getProjectId method with callback', async () => {
const fakeProjectId = 'fake-project-id';
const client = new iamcheckerModule.v1.IamCheckerClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
it('has getProjectId method', async () => {
const fakeProjectId = 'fake-project-id';
const client = new iamcheckerModule.v1.IamCheckerClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
const result = await client.getProjectId();
assert.strictEqual(result, fakeProjectId);
assert((client.auth.getProjectId as SinonStub).calledWithExactly());
});
client.auth.getProjectId = sinon
.stub()
.callsArgWith(0, null, fakeProjectId);
const promise = new Promise((resolve, reject) => {
client.getProjectId((err?: Error | null, projectId?: string | null) => {
if (err) {
reject(err);
} else {
resolve(projectId);
}

it('has getProjectId method with callback', async () => {
const fakeProjectId = 'fake-project-id';
const client = new iamcheckerModule.v1.IamCheckerClient({
credentials: {client_email: 'bogus', private_key: 'bogus'},
projectId: 'bogus',
});
client.auth.getProjectId = sinon
.stub()
.callsArgWith(0, null, fakeProjectId);
const promise = new Promise((resolve, reject) => {
client.getProjectId((err?: Error | null, projectId?: string | null) => {
if (err) {
reject(err);
} else {
resolve(projectId);
}
});
});
const result = await promise;
assert.strictEqual(result, fakeProjectId);
});
const result = await promise;
assert.strictEqual(result, fakeProjectId);
});

describe('troubleshootIamPolicy', () => {
Expand Down