diff --git a/src/lib/assets/defaultTestObjects.ts b/src/lib/assets/defaultTestObjects.ts index adec2f99..884c9a5e 100644 --- a/src/lib/assets/defaultTestObjects.ts +++ b/src/lib/assets/defaultTestObjects.ts @@ -1,8 +1,25 @@ -import { GenericClass } from "kubernetes-fluent-client"; +import { GenericClass, GroupVersionKind } from "kubernetes-fluent-client"; import { Event } from "../enums"; import { Binding, CapabilityExport } from "../types"; import { defaultFilters } from "../filter/adjudicators/defaultTestObjects"; import { V1PolicyRule as PolicyRule } from "@kubernetes/client-node"; +import { AdmissionRequest, GroupVersionResource } from "../types"; +import { Operation } from "../enums"; + +export const createMockAdmissionRequest = ( + kind: GroupVersionKind = { kind: "kind", group: "group", version: "version" }, + resource: GroupVersionResource = { group: "group", version: "version", resource: "resource" }, + object: { metadata: { name: string } } = { metadata: { name: "create-me" } }, + operation: Operation = Operation.CREATE, +): AdmissionRequest => ({ + uid: "uid", + kind, + resource, + name: "", + object, + operation, + userInfo: {}, +}); export const createMockRbacRule = ( apiGroups: string[] = ["pepr.dev"], diff --git a/src/lib/decode-utils.test.ts b/src/lib/processors/decode-utils.test.ts similarity index 84% rename from src/lib/decode-utils.test.ts rename to src/lib/processors/decode-utils.test.ts index e2eb3827..6be065c2 100644 --- a/src/lib/decode-utils.test.ts +++ b/src/lib/processors/decode-utils.test.ts @@ -1,11 +1,12 @@ import { beforeEach, describe, expect, it, jest } from "@jest/globals"; -import { AdmissionRequest } from "./types"; -import { convertFromBase64Map, convertToBase64Map } from "./utils"; -import { Operation } from "./enums"; -import { PeprMutateRequest } from "./mutate-request"; +import { convertFromBase64Map, convertToBase64Map } from "../utils"; +import { PeprMutateRequest } from "../mutate-request"; import { decodeData, reencodeData } from "./decode-utils"; +import { createMockAdmissionRequest } from "../assets/defaultTestObjects"; -jest.mock("./utils"); +jest.mock("../utils"); + +const defaultAdmissionRequest = createMockAdmissionRequest(); const defaultPeprMutateRequest = (admissionRequest = defaultAdmissionRequest) => new PeprMutateRequest(admissionRequest); @@ -13,28 +14,6 @@ const defaultPeprMutateRequest = (admissionRequest = defaultAdmissionRequest) => const mockConvertToBase64Map = jest.mocked(convertToBase64Map); const mockConvertFromBase64Map = jest.mocked(convertFromBase64Map); -const defaultAdmissionRequest: AdmissionRequest = { - uid: "uid", - kind: { - kind: "kind", - group: "group", - version: "version", - }, - resource: { - group: "group", - version: "version", - resource: "resource", - }, - name: "", - object: { - metadata: { - name: "create-me", - }, - }, - operation: Operation.CREATE, - userInfo: {}, -}; - describe("decodeData", () => { const skips = ["convert", "From", "Base64", "Map"]; diff --git a/src/lib/decode-utils.ts b/src/lib/processors/decode-utils.ts similarity index 90% rename from src/lib/decode-utils.ts rename to src/lib/processors/decode-utils.ts index 0a364999..54a6e8be 100644 --- a/src/lib/decode-utils.ts +++ b/src/lib/processors/decode-utils.ts @@ -1,6 +1,6 @@ -import { convertFromBase64Map, convertToBase64Map } from "./utils"; +import { convertFromBase64Map, convertToBase64Map } from "../utils"; import { kind, KubernetesObject } from "kubernetes-fluent-client"; -import { PeprMutateRequest } from "./mutate-request"; +import { PeprMutateRequest } from "../mutate-request"; import { clone } from "ramda"; export function decodeData(wrapped: PeprMutateRequest): { diff --git a/src/lib/processors/mutate-processor.test.ts b/src/lib/processors/mutate-processor.test.ts index 589ea835..4967fe04 100644 --- a/src/lib/processors/mutate-processor.test.ts +++ b/src/lib/processors/mutate-processor.test.ts @@ -22,9 +22,9 @@ import { import { Operation as JSONPatchOperation } from "fast-json-patch"; import { Capability } from "../core/capability"; import { MeasureWebhookTimeout } from "../telemetry/webhookTimeouts"; -import { decodeData } from "../decode-utils"; +import { decodeData } from "./decode-utils"; -jest.mock("../decode-utils", () => ({ +jest.mock("./decode-utils", () => ({ decodeData: jest.fn(), })); diff --git a/src/lib/processors/mutate-processor.ts b/src/lib/processors/mutate-processor.ts index 3c5c7ed6..a35b55dc 100644 --- a/src/lib/processors/mutate-processor.ts +++ b/src/lib/processors/mutate-processor.ts @@ -16,7 +16,7 @@ import { OnError } from "../../cli/init/enums"; import { resolveIgnoreNamespaces } from "../assets/webhooks"; import { Operation } from "fast-json-patch"; import { WebhookType } from "../enums"; -import { decodeData, reencodeData } from "../decode-utils"; +import { decodeData, reencodeData } from "./decode-utils"; export interface Bindable { req: AdmissionRequest; @@ -61,33 +61,6 @@ export function logMutateErrorMessage(e: Error): string { } } -// export function decodeData(wrapped: PeprMutateRequest): { -// skipped: string[]; -// wrapped: PeprMutateRequest; -// } { -// let skipped: string[] = []; - -// const isSecret = wrapped.Request.kind.version === "v1" && wrapped.Request.kind.kind === "Secret"; -// if (isSecret) { -// // convertFromBase64Map modifies it's arg rather than returing a mod'ed copy (ye olde side-effect special, blerg) -// skipped = convertFromBase64Map(wrapped.Raw as unknown as kind.Secret); -// } - -// return { skipped, wrapped }; -// } - -// export function reencodeData(wrapped: PeprMutateRequest, skipped: string[]): KubernetesObject { -// const transformed = clone(wrapped.Raw); - -// const isSecret = wrapped.Request.kind.version === "v1" && wrapped.Request.kind.kind === "Secret"; -// if (isSecret) { -// // convertToBase64Map modifies it's arg rather than returing a mod'ed copy (ye olde side-effect special, blerg) -// convertToBase64Map(transformed as unknown as kind.Secret, skipped); -// } - -// return transformed; -// } - export async function processRequest( bindable: Bindable, wrapped: PeprMutateRequest,