Do not fetched owned_paths if codeOwners is disabled.
Google-Bug-Id: b/249101768
Release-Notes: skip
Change-Id: I13a4997a0bdcd5d65d8777703ce188f881e82e2e
diff --git a/web/code-owners-api.ts b/web/code-owners-api.ts
index 117fe13..109de1a 100644
--- a/web/code-owners-api.ts
+++ b/web/code-owners-api.ts
@@ -72,6 +72,7 @@
required_approval?: Array<RequiredApprovalInfo>;
override_approval?: Array<RequiredApprovalInfo>;
}
+
export interface RequiredApprovalInfo {
label: string;
value: number;
diff --git a/web/code-owners-service.ts b/web/code-owners-service.ts
index 599c49b..17b16ba 100644
--- a/web/code-owners-service.ts
+++ b/web/code-owners-service.ts
@@ -229,6 +229,10 @@
* Gets which files are owned by the given user.
*/
async getOwnedPaths() {
+ const enabled = await this.isCodeOwnerEnabled();
+ if (!enabled) {
+ return Promise.resolve(undefined);
+ }
return this.codeOwnersCacheApi.listOwnedPaths();
}
@@ -360,7 +364,7 @@
) {
return false;
}
- const config = await this.codeOwnersCacheApi.getBranchConfig();
+ const config = await this.getBranchConfig();
return config && !config.disabled;
}
diff --git a/web/code-owners-service_test.ts b/web/code-owners-service_test.ts
index b1648a3..e9abbb1 100644
--- a/web/code-owners-service_test.ts
+++ b/web/code-owners-service_test.ts
@@ -29,7 +29,10 @@
return Promise.resolve({});
},
getLoggedIn() {
- return Promise.resolve(undefined);
+ return Promise.resolve(true);
+ },
+ getAccount() {
+ return Promise.resolve({email: 'someone@google.com'});
},
} as unknown as RestPluginApi;
@@ -165,6 +168,45 @@
});
});
+ suite('getOwnedPaths', () => {
+ async function setupBranchConfig(disabled: boolean | undefined) {
+ getApiStub
+ .withArgs(
+ sinon.match.any,
+ `/projects/${fakeChange.project}/branches/` +
+ `${fakeChange.branch}/code_owners.branch_config`,
+ sinon.match.any,
+ sinon.match.any
+ )
+ .returns(Promise.resolve({disabled}));
+ codeOwnersService = CodeOwnerService.getOwnerService(fakeRestApi, {
+ ...fakeChange,
+ });
+ await flush();
+ getApiStub.resetHistory();
+ }
+ test('should not fetch if disabled', async () => {
+ await setupBranchConfig(true);
+
+ await codeOwnersService.getOwnedPaths();
+ assert.equal(getApiStub.callCount, 0);
+ });
+
+ test('should fetch if enabled', async () => {
+ await setupBranchConfig(false);
+
+ await codeOwnersService.getOwnedPaths();
+ assert.equal(getApiStub.callCount, 1);
+ });
+
+ test('should fetch if enabled by default', async () => {
+ await setupBranchConfig(undefined);
+
+ await codeOwnersService.getOwnedPaths();
+ assert.equal(getApiStub.callCount, 1);
+ });
+ });
+
suite('all approved case', () => {
setup(async () => {
getApiStub