1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

more tests

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen 2023-03-06 08:59:11 +02:00
parent b13e4bc2d8
commit de10bb61ee

View File

@ -9,9 +9,9 @@ import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
import type { RequestNamespaceListPermissionsFor } from "./request-namespace-list-permissions.injectable"; import type { RequestNamespaceListPermissionsFor } from "./request-namespace-list-permissions.injectable";
import requestNamespaceListPermissionsForInjectable from "./request-namespace-list-permissions.injectable"; import requestNamespaceListPermissionsForInjectable from "./request-namespace-list-permissions.injectable";
const createFakeProxyConfig = (statusResponse: Promise<V1SubjectRulesReviewStatus>) => ({ const createFakeProxyConfig = (statusResponse: Promise<{ body: { status: V1SubjectRulesReviewStatus }}>) => ({
makeApiClient: () => ({ makeApiClient: () => ({
createSelfSubjectRulesReview: (): Promise<V1SubjectRulesReviewStatus> => statusResponse, createSelfSubjectRulesReview: (): Promise<{ body: { status: V1SubjectRulesReviewStatus }}> => statusResponse,
}), }),
}); });
@ -28,9 +28,13 @@ describe("requestNamespaceListPermissions", () => {
it("returns truthy function", async () => { it("returns truthy function", async () => {
const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig( const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig(
new Promise((resolve) => resolve({ new Promise((resolve) => resolve({
incomplete: true, body: {
resourceRules: [], status: {
nonResourceRules: [], incomplete: true,
resourceRules: [],
nonResourceRules: [],
},
},
})), })),
) as any); ) as any);
@ -66,18 +70,22 @@ describe("requestNamespaceListPermissions", () => {
it("return truthy function", async () => { it("return truthy function", async () => {
const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig( const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig(
new Promise((resolve) => resolve({ new Promise((resolve) => resolve({
incomplete: false, body: {
resourceRules: [ status: {
{ incomplete: false,
apiGroups: ["*"], resourceRules: [
verbs: ["*"], {
apiGroups: ["*"],
verbs: ["*"],
},
{
apiGroups: ["*"],
verbs: ["get"],
},
],
nonResourceRules: [],
}, },
{ },
apiGroups: ["*"],
verbs: ["get"],
},
],
nonResourceRules: [],
})), })),
) as any); ) as any);
@ -96,18 +104,22 @@ describe("requestNamespaceListPermissions", () => {
it("return truthy function", async () => { it("return truthy function", async () => {
const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig( const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig(
new Promise((resolve) => resolve({ new Promise((resolve) => resolve({
incomplete: false, body: {
resourceRules: [ status: {
{ incomplete: false,
apiGroups: ["*"], resourceRules: [
verbs: ["list"], {
apiGroups: ["*"],
verbs: ["list"],
},
{
apiGroups: ["*"],
verbs: ["get"],
},
],
nonResourceRules: [],
}, },
{ },
apiGroups: ["*"],
verbs: ["get"],
},
],
nonResourceRules: [],
})), })),
) as any); ) as any);
@ -126,19 +138,23 @@ describe("requestNamespaceListPermissions", () => {
it("return truthy function", async () => { it("return truthy function", async () => {
const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig( const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig(
new Promise((resolve) => resolve({ new Promise((resolve) => resolve({
incomplete: false, body: {
resourceRules: [ status: {
{ incomplete: false,
apiGroups: [""], resourceRules: [
resources: ["pods"], {
verbs: ["list"], apiGroups: [""],
resources: ["pods"],
verbs: ["list"],
},
{
apiGroups: ["*"],
verbs: ["get"],
},
],
nonResourceRules: [],
}, },
{ },
apiGroups: ["*"],
verbs: ["get"],
},
],
nonResourceRules: [],
})), })),
) as any); ) as any);
@ -157,18 +173,22 @@ describe("requestNamespaceListPermissions", () => {
it("return truthy function", async () => { it("return truthy function", async () => {
const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig( const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig(
new Promise((resolve) => resolve({ new Promise((resolve) => resolve({
incomplete: false, body: {
resourceRules: [ status: {
{ incomplete: false,
apiGroups: ["*"], resourceRules: [
verbs: ["get"], {
apiGroups: ["*"],
verbs: ["get"],
},
{
apiGroups: ["*"],
verbs: ["*"],
},
],
nonResourceRules: [],
}, },
{ },
apiGroups: ["*"],
verbs: ["*"],
},
],
nonResourceRules: [],
})), })),
) as any); ) as any);
@ -187,18 +207,22 @@ describe("requestNamespaceListPermissions", () => {
it("return truthy function", async () => { it("return truthy function", async () => {
const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig( const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig(
new Promise((resolve) => resolve({ new Promise((resolve) => resolve({
incomplete: false, body: {
resourceRules: [ status: {
{ incomplete: false,
apiGroups: ["*"], resourceRules: [
verbs: ["get"], {
apiGroups: ["*"],
verbs: ["get"],
},
{
apiGroups: ["*"],
verbs: ["list"],
},
],
nonResourceRules: [],
}, },
{ },
apiGroups: ["*"],
verbs: ["list"],
},
],
nonResourceRules: [],
})), })),
) as any); ) as any);
@ -217,19 +241,23 @@ describe("requestNamespaceListPermissions", () => {
it("return truthy function", async () => { it("return truthy function", async () => {
const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig( const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig(
new Promise((resolve) => resolve({ new Promise((resolve) => resolve({
incomplete: false, body: {
resourceRules: [ status: {
{ incomplete: false,
apiGroups: ["*"], resourceRules: [
verbs: ["get"], {
apiGroups: ["*"],
verbs: ["get"],
},
{
apiGroups: [""],
resources: ["pods"],
verbs: ["list"],
},
],
nonResourceRules: [],
}, },
{ },
apiGroups: [""],
resources: ["pods"],
verbs: ["list"],
},
],
nonResourceRules: [],
})), })),
) as any); ) as any);
@ -243,4 +271,66 @@ describe("requestNamespaceListPermissions", () => {
})).toBeTruthy(); })).toBeTruthy();
}); });
}); });
describe("when resourceRules has matching resource without list verb", () => {
it("return truthy function", async () => {
const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig(
new Promise((resolve) => resolve({
body: {
status: {
incomplete: false,
resourceRules: [
{
apiGroups: [""],
resources: ["pods"],
verbs: ["get"],
},
],
nonResourceRules: [],
},
},
})),
) as any);
const permissionCheck = await requestPermissions("fake-namespace");
expect(permissionCheck({
apiName: "pods",
group: "",
kind: "Pod",
namespaced: true,
})).toBeFalsy();
});
});
describe("when resourceRules has no matching resource with list verb", () => {
it("return truthy function", async () => {
const requestPermissions = requestNamespaceListPermissions(createFakeProxyConfig(
new Promise((resolve) => resolve({
body: {
status: {
incomplete: false,
resourceRules: [
{
apiGroups: [""],
resources: ["services"],
verbs: ["list"],
},
],
nonResourceRules: [],
},
},
})),
) as any);
const permissionCheck = await requestPermissions("fake-namespace");
expect(permissionCheck({
apiName: "pods",
group: "",
kind: "Pod",
namespaced: true,
})).toBeFalsy();
});
});
}); });