Apply suggestions from code review

Co-authored-by: Joe Porpeglia <josephp@spotify.com>
Signed-off-by: Vincenzo Scamporlino <me@vinzscam.dev>
This commit is contained in:
Vincenzo Scamporlino
2022-03-30 14:58:51 +02:00
parent e7f28d8152
commit a119dfbbd5
5 changed files with 25 additions and 20 deletions
@@ -27,7 +27,7 @@ describe('AuthorizedLocationService', () => {
};
const fakePermissionApi = {
authorize: jest.fn(),
policyDecision: jest.fn(),
query: jest.fn(),
};
const mockAllow = () => {
@@ -25,7 +25,7 @@ describe('AuthorizedRefreshService', () => {
};
const permissionApi = {
authorize: jest.fn(),
policyDecision: jest.fn(),
query: jest.fn(),
};
afterEach(() => {
@@ -49,7 +49,7 @@ const fakePermissionApi = {
result: AuthorizeResult.ALLOW,
},
]),
policyDecision: jest.fn(),
query: jest.fn(),
};
describe('JenkinsApi', () => {
@@ -57,26 +57,27 @@ const permissionCriteriaSchema: z.ZodSchema<
.or(z.object({ not: permissionCriteriaSchema }).strict()),
);
const authorizeDecisionSchema: z.ZodSchema<AuthorizePermissionResponse> =
const authorizePermissionResponseSchema: z.ZodSchema<AuthorizePermissionResponse> =
z.object({
result: z
.literal(AuthorizeResult.ALLOW)
.or(z.literal(AuthorizeResult.DENY)),
});
const policyDecisionSchema: z.ZodSchema<QueryPermissionResponse> = z.union([
z.object({
result: z
.literal(AuthorizeResult.ALLOW)
.or(z.literal(AuthorizeResult.DENY)),
}),
z.object({
result: z.literal(AuthorizeResult.CONDITIONAL),
pluginId: z.string(),
resourceType: z.string(),
conditions: permissionCriteriaSchema,
}),
]);
const queryPermissionResponseSchema: z.ZodSchema<QueryPermissionResponse> =
z.union([
z.object({
result: z
.literal(AuthorizeResult.ALLOW)
.or(z.literal(AuthorizeResult.DENY)),
}),
z.object({
result: z.literal(AuthorizeResult.CONDITIONAL),
pluginId: z.string(),
resourceType: z.string(),
conditions: permissionCriteriaSchema,
}),
]);
const responseSchema = <T>(
itemSchema: z.ZodSchema<T>,
@@ -122,7 +123,11 @@ export class PermissionClient implements PermissionEvaluator {
requests: AuthorizePermissionRequest[],
options?: EvaluatorRequestOptions,
): Promise<AuthorizePermissionResponse[]> {
return this.makeRequest(requests, authorizeDecisionSchema, options);
return this.makeRequest(
requests,
authorizePermissionResponseSchema,
options,
);
}
/**
@@ -132,7 +137,7 @@ export class PermissionClient implements PermissionEvaluator {
queries: QueryPermissionRequest[],
options?: EvaluatorRequestOptions,
): Promise<QueryPermissionResponse[]> {
return this.makeRequest(queries, policyDecisionSchema, options);
return this.makeRequest(queries, queryPermissionResponseSchema, options);
}
private async makeRequest<TQuery, TResult>(