From 8414f281d2f3526f0ec9736288b893ddc7940b65 Mon Sep 17 00:00:00 2001 From: Sam Mayer Date: Wed, 20 Nov 2024 11:32:12 -0600 Subject: [PATCH] Use consistent enum property names between related enums --- src/lib/assets/rbac.test.ts | 18 ++-- src/lib/assets/webhooks.ts | 4 +- src/lib/capability.test.ts | 4 +- src/lib/capability.ts | 14 +-- src/lib/enums.ts | 10 +- src/lib/filter/adjudicators.test.ts | 98 +++++++++---------- src/lib/filter/adjudicators.ts | 2 +- .../adjudicators/bindingAdjudicators.test.ts | 30 +++--- src/lib/filter/filter.test.ts | 48 ++++----- src/lib/filter/shouldSkipRequest.test.ts | 10 +- src/lib/helpers.test.ts | 2 +- src/lib/watch-processor.ts | 12 +-- 12 files changed, 126 insertions(+), 126 deletions(-) diff --git a/src/lib/assets/rbac.test.ts b/src/lib/assets/rbac.test.ts index 9d0b76603..9a630b84d 100644 --- a/src/lib/assets/rbac.test.ts +++ b/src/lib/assets/rbac.test.ts @@ -22,7 +22,7 @@ const mockCapabilities: CapabilityExport[] = [ { kind: { group: "pepr.dev", version: "v1", kind: "peprstore", plural: "peprstores" }, isWatch: false, - event: Event.Create, + event: Event.CREATE, model: {} as GenericClass, filters: { name: "", @@ -57,7 +57,7 @@ const mockCapabilities: CapabilityExport[] = [ }, isWatch: false, isFinalize: false, - event: Event.Create, + event: Event.CREATE, model: {} as GenericClass, filters: { name: "", @@ -87,7 +87,7 @@ const mockCapabilities: CapabilityExport[] = [ kind: { group: "", version: "v1", kind: "namespace", plural: "namespaces" }, isWatch: true, isFinalize: false, - event: Event.Create, + event: Event.CREATE, model: {} as GenericClass, filters: { name: "", @@ -117,7 +117,7 @@ const mockCapabilities: CapabilityExport[] = [ kind: { group: "", version: "v1", kind: "configmap", plural: "configmaps" }, isWatch: true, isFinalize: false, - event: Event.Create, + event: Event.CREATE, model: {} as GenericClass, filters: { name: "", @@ -211,7 +211,7 @@ describe("RBAC generation", () => { kind: { group: "pepr.dev", version: "v1", kind: "peprstore", plural: "peprstores" }, isWatch: false, isFinalize: true, - event: Event.Create, + event: Event.CREATE, model: {} as GenericClass, filters: { name: "", @@ -265,7 +265,7 @@ describe("RBAC generation", () => { { kind: { group: "pepr.dev", version: "v1", kind: "peprlog", plural: "peprlogs" }, isWatch: false, - event: Event.Create, + event: Event.CREATE, model: {} as GenericClass, filters: { name: "", @@ -294,7 +294,7 @@ describe("RBAC generation", () => { { kind: { group: "pepr.dev", version: "v1", kind: "peprlog", plural: "peprlogs" }, isWatch: false, - event: Event.Create, + event: Event.CREATE, model: {} as GenericClass, filters: { name: "", @@ -526,7 +526,7 @@ describe("clusterRole", () => { { kind: { group: "", version: "v1", kind: "node", plural: "nodes" }, isWatch: false, - event: Event.Create, + event: Event.CREATE, model: {} as GenericClass, filters: { name: "", @@ -582,7 +582,7 @@ describe("clusterRole", () => { { kind: { group: "apps", version: "v1", kind: "deployment", plural: "deployments" }, isWatch: false, - event: Event.Create, + event: Event.CREATE, model: {} as GenericClass, filters: { name: "", diff --git a/src/lib/assets/webhooks.ts b/src/lib/assets/webhooks.ts index b1c665284..3d8d45915 100644 --- a/src/lib/assets/webhooks.ts +++ b/src/lib/assets/webhooks.ts @@ -44,8 +44,8 @@ export async function generateWebhookRules(assets: Assets, isMutateWebhook: bool const operations: string[] = []; // CreateOrUpdate is a Pepr-specific event that is translated to Create and Update - if (event === Event.CreateOrUpdate) { - operations.push(Event.Create, Event.Update); + if (event === Event.CREATE_OR_UPDATE) { + operations.push(Event.CREATE, Event.UPDATE); } else { operations.push(event); } diff --git a/src/lib/capability.test.ts b/src/lib/capability.test.ts index 40e9d965a..0e49c9eff 100644 --- a/src/lib/capability.test.ts +++ b/src/lib/capability.test.ts @@ -606,7 +606,7 @@ describe("Capability", () => { capability.When(a.Pod).IsUpdated().InNamespace("default").Validate(mockValidateCallback); expect(capability.bindings).toHaveLength(1); // Ensure binding is created - expect(capability.bindings[0].event).toBe(Event.Update); + expect(capability.bindings[0].event).toBe(Event.UPDATE); }); it("should bind a delete event", async () => { @@ -624,7 +624,7 @@ describe("Capability", () => { expect(capability.bindings).toHaveLength(1); expect(capability.bindings).toHaveLength(1); // Ensure binding is created - expect(capability.bindings[0].event).toBe(Event.Delete); + expect(capability.bindings[0].event).toBe(Event.DELETE); }); it("should throw an error if neither matchedKind nor kind is provided", () => { diff --git a/src/lib/capability.ts b/src/lib/capability.ts index c1903dfe4..61aa26e9b 100644 --- a/src/lib/capability.ts +++ b/src/lib/capability.ts @@ -193,7 +193,7 @@ export class Capability implements CapabilityExport { model, // If the kind is not specified, use the matched kind from the model kind: kind || matchedKind, - event: Event.Any, + event: Event.ANY, filters: { name: "", namespaces: [], @@ -317,7 +317,7 @@ export class Capability implements CapabilityExport { ...binding, isMutate: true, isFinalize: true, - event: Event.Any, + event: Event.ANY, mutateCallback: addFinalizer, }; bindings.push(mutateBinding); @@ -329,7 +329,7 @@ export class Capability implements CapabilityExport { ...binding, isWatch: true, isFinalize: true, - event: Event.Update, + event: Event.UPDATE, finalizeCallback: async (update: InstanceType, logger = aliasLogger) => { Log.info(`Executing finalize action with alias: ${binding.alias || "no alias provided"}`); return await finalizeCallback(update, logger); @@ -401,10 +401,10 @@ export class Capability implements CapabilityExport { } return { - IsCreatedOrUpdated: () => bindEvent(Event.CreateOrUpdate), - IsCreated: () => bindEvent(Event.Create), - IsUpdated: () => bindEvent(Event.Update), - IsDeleted: () => bindEvent(Event.Delete), + IsCreatedOrUpdated: () => bindEvent(Event.CREATE_OR_UPDATE), + IsCreated: () => bindEvent(Event.CREATE), + IsUpdated: () => bindEvent(Event.UPDATE), + IsDeleted: () => bindEvent(Event.DELETE), }; }; } diff --git a/src/lib/enums.ts b/src/lib/enums.ts index 5e34c5c94..2dee36e2d 100644 --- a/src/lib/enums.ts +++ b/src/lib/enums.ts @@ -13,9 +13,9 @@ export enum Operation { * The type of Kubernetes mutating webhook event that the action is registered for. */ export enum Event { - Create = "CREATE", - Update = "UPDATE", - Delete = "DELETE", - CreateOrUpdate = "CREATEORUPDATE", - Any = "*", + CREATE = "CREATE", + UPDATE = "UPDATE", + DELETE = "DELETE", + CREATE_OR_UPDATE = "CREATEORUPDATE", + ANY = "*", } diff --git a/src/lib/filter/adjudicators.test.ts b/src/lib/filter/adjudicators.test.ts index a34553c14..77ad8e200 100644 --- a/src/lib/filter/adjudicators.test.ts +++ b/src/lib/filter/adjudicators.test.ts @@ -377,32 +377,32 @@ describe("operationMatchesEvent", () => { //[ Operation, Event, result ] it.each([ ["", "", true], - ["", Event.Create, false], + ["", Event.CREATE, false], [Operation.CREATE, "", false], - [Operation.CREATE, Event.Create, true], - [Operation.CREATE, Event.Update, false], - [Operation.CREATE, Event.Delete, false], - [Operation.CREATE, Event.CreateOrUpdate, true], - [Operation.CREATE, Event.Any, true], - - [Operation.UPDATE, Event.Create, false], - [Operation.UPDATE, Event.Update, true], - [Operation.UPDATE, Event.Delete, false], - [Operation.UPDATE, Event.CreateOrUpdate, true], - [Operation.UPDATE, Event.Any, true], - - [Operation.DELETE, Event.Create, false], - [Operation.DELETE, Event.Update, false], - [Operation.DELETE, Event.Delete, true], - [Operation.DELETE, Event.CreateOrUpdate, false], - [Operation.DELETE, Event.Any, true], - - [Operation.CONNECT, Event.Create, false], - [Operation.CONNECT, Event.Update, false], - [Operation.CONNECT, Event.Delete, false], - [Operation.CONNECT, Event.CreateOrUpdate, false], - [Operation.CONNECT, Event.Any, true], + [Operation.CREATE, Event.CREATE, true], + [Operation.CREATE, Event.UPDATE, false], + [Operation.CREATE, Event.DELETE, false], + [Operation.CREATE, Event.CREATE_OR_UPDATE, true], + [Operation.CREATE, Event.ANY, true], + + [Operation.UPDATE, Event.CREATE, false], + [Operation.UPDATE, Event.UPDATE, true], + [Operation.UPDATE, Event.DELETE, false], + [Operation.UPDATE, Event.CREATE_OR_UPDATE, true], + [Operation.UPDATE, Event.ANY, true], + + [Operation.DELETE, Event.CREATE, false], + [Operation.DELETE, Event.UPDATE, false], + [Operation.DELETE, Event.DELETE, true], + [Operation.DELETE, Event.CREATE_OR_UPDATE, false], + [Operation.DELETE, Event.ANY, true], + + [Operation.CONNECT, Event.CREATE, false], + [Operation.CONNECT, Event.UPDATE, false], + [Operation.CONNECT, Event.DELETE, false], + [Operation.CONNECT, Event.CREATE_OR_UPDATE, false], + [Operation.CONNECT, Event.ANY, true], ])("given operation %s and event %s, returns %s", (op, evt, expected) => { const result = sut.operationMatchesEvent(op, evt); @@ -415,31 +415,31 @@ describe("mismatchedEvent", () => { it.each([ [{}, {}, false], [{}, { operation: Operation.CREATE }, true], - [{ event: Event.Create }, {}, true], - - [{ event: Event.Create }, { operation: Operation.CREATE }, false], - [{ event: Event.Update }, { operation: Operation.CREATE }, true], - [{ event: Event.Delete }, { operation: Operation.CREATE }, true], - [{ event: Event.CreateOrUpdate }, { operation: Operation.CREATE }, false], - [{ event: Event.Any }, { operation: Operation.CREATE }, false], - - [{ event: Event.Create }, { operation: Operation.UPDATE }, true], - [{ event: Event.Update }, { operation: Operation.UPDATE }, false], - [{ event: Event.Delete }, { operation: Operation.UPDATE }, true], - [{ event: Event.CreateOrUpdate }, { operation: Operation.UPDATE }, false], - [{ event: Event.Any }, { operation: Operation.UPDATE }, false], - - [{ event: Event.Create }, { operation: Operation.DELETE }, true], - [{ event: Event.Update }, { operation: Operation.DELETE }, true], - [{ event: Event.Delete }, { operation: Operation.DELETE }, false], - [{ event: Event.CreateOrUpdate }, { operation: Operation.DELETE }, true], - [{ event: Event.Any }, { operation: Operation.DELETE }, false], - - [{ event: Event.Create }, { operation: Operation.CONNECT }, true], - [{ event: Event.Update }, { operation: Operation.CONNECT }, true], - [{ event: Event.Delete }, { operation: Operation.CONNECT }, true], - [{ event: Event.CreateOrUpdate }, { operation: Operation.CONNECT }, true], - [{ event: Event.Any }, { operation: Operation.CONNECT }, false], + [{ event: Event.CREATE }, {}, true], + + [{ event: Event.CREATE }, { operation: Operation.CREATE }, false], + [{ event: Event.UPDATE }, { operation: Operation.CREATE }, true], + [{ event: Event.DELETE }, { operation: Operation.CREATE }, true], + [{ event: Event.CREATE_OR_UPDATE }, { operation: Operation.CREATE }, false], + [{ event: Event.ANY }, { operation: Operation.CREATE }, false], + + [{ event: Event.CREATE }, { operation: Operation.UPDATE }, true], + [{ event: Event.UPDATE }, { operation: Operation.UPDATE }, false], + [{ event: Event.DELETE }, { operation: Operation.UPDATE }, true], + [{ event: Event.CREATE_OR_UPDATE }, { operation: Operation.UPDATE }, false], + [{ event: Event.ANY }, { operation: Operation.UPDATE }, false], + + [{ event: Event.CREATE }, { operation: Operation.DELETE }, true], + [{ event: Event.UPDATE }, { operation: Operation.DELETE }, true], + [{ event: Event.DELETE }, { operation: Operation.DELETE }, false], + [{ event: Event.CREATE_OR_UPDATE }, { operation: Operation.DELETE }, true], + [{ event: Event.ANY }, { operation: Operation.DELETE }, false], + + [{ event: Event.CREATE }, { operation: Operation.CONNECT }, true], + [{ event: Event.UPDATE }, { operation: Operation.CONNECT }, true], + [{ event: Event.DELETE }, { operation: Operation.CONNECT }, true], + [{ event: Event.CREATE_OR_UPDATE }, { operation: Operation.CONNECT }, true], + [{ event: Event.ANY }, { operation: Operation.CONNECT }, false], ])("given binding %j and admission request %j, returns %s", (bnd, req, expected) => { const binding = bnd as DeepPartial; const request = req as DeepPartial; diff --git a/src/lib/filter/adjudicators.ts b/src/lib/filter/adjudicators.ts index 5ebe17d12..cacd629c5 100644 --- a/src/lib/filter/adjudicators.ts +++ b/src/lib/filter/adjudicators.ts @@ -245,7 +245,7 @@ export const unbindableNamespaces = allPass([ export const misboundDeleteWithDeletionTimestamp = allPass([definesDelete, definesDeletionTimestamp]); export const operationMatchesEvent = anyPass([ - pipe(nthArg(1), equals(Event.Any)), + pipe(nthArg(1), equals(Event.ANY)), pipe((operation, event) => operation === event), pipe((operation, event) => (operation ? event.includes(operation) : false)), ]); diff --git a/src/lib/filter/adjudicators/bindingAdjudicators.test.ts b/src/lib/filter/adjudicators/bindingAdjudicators.test.ts index ed9eecb96..0c0db0a9a 100644 --- a/src/lib/filter/adjudicators/bindingAdjudicators.test.ts +++ b/src/lib/filter/adjudicators/bindingAdjudicators.test.ts @@ -458,10 +458,10 @@ describe("definedEvent", () => { [{}, ""], [{ event: "" }, ""], [{ event: "nonsense" }, "nonsense"], - [{ event: Event.Create }, Event.Create], - [{ event: Event.CreateOrUpdate }, Event.CreateOrUpdate], - [{ event: Event.Update }, Event.Update], - [{ event: Event.Delete }, Event.Delete], + [{ event: Event.CREATE }, Event.CREATE], + [{ event: Event.CREATE_OR_UPDATE }, Event.CREATE_OR_UPDATE], + [{ event: Event.UPDATE }, Event.UPDATE], + [{ event: Event.DELETE }, Event.DELETE], ])("given %j, returns '%s'", (given, expected) => { const binding = given as DeepPartial; @@ -477,10 +477,10 @@ describe("definesDelete", () => { [{}, false], [{ event: "" }, false], [{ event: "nonsense" }, false], - [{ event: Event.Create }, false], - [{ event: Event.CreateOrUpdate }, false], - [{ event: Event.Update }, false], - [{ event: Event.Delete }, true], + [{ event: Event.CREATE }, false], + [{ event: Event.CREATE_OR_UPDATE }, false], + [{ event: Event.UPDATE }, false], + [{ event: Event.DELETE }, true], ])("given %j, returns %s", (given, expected) => { const binding = given as DeepPartial; @@ -496,13 +496,13 @@ describe("misboundDeleteWithDeletionTimestamp", () => { [{}, false], [{ event: "" }, false], [{ event: "nonsense" }, false], - [{ event: Event.Create }, false], - [{ event: Event.CreateOrUpdate }, false], - [{ event: Event.Update }, false], - [{ event: Event.Delete }, false], - [{ event: Event.Delete, filters: {} }, false], - [{ event: Event.Delete, filters: { deletionTimestamp: false } }, false], - [{ event: Event.Delete, filters: { deletionTimestamp: true } }, true], + [{ event: Event.CREATE }, false], + [{ event: Event.CREATE_OR_UPDATE }, false], + [{ event: Event.UPDATE }, false], + [{ event: Event.DELETE }, false], + [{ event: Event.DELETE, filters: {} }, false], + [{ event: Event.DELETE, filters: { deletionTimestamp: false } }, false], + [{ event: Event.DELETE, filters: { deletionTimestamp: true } }, true], ])("given %j, returns %s", (given, expected) => { const binding = given as DeepPartial; diff --git a/src/lib/filter/filter.test.ts b/src/lib/filter/filter.test.ts index cf4ecdfd4..a008945f3 100644 --- a/src/lib/filter/filter.test.ts +++ b/src/lib/filter/filter.test.ts @@ -109,7 +109,7 @@ describe("Property-Based Testing shouldSkipRequest", () => { test("create: should reject when regex name does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -131,7 +131,7 @@ test("create: should reject when regex name does not match", () => { test("create: should not reject when regex name does match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -151,7 +151,7 @@ test("create: should not reject when regex name does match", () => { test("delete: should reject when regex name does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -173,7 +173,7 @@ test("delete: should reject when regex name does not match", () => { test("delete: should not reject when regex name does match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -193,7 +193,7 @@ test("delete: should not reject when regex name does match", () => { test("create: should not reject when regex namespace does match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -213,7 +213,7 @@ test("create: should not reject when regex namespace does match", () => { test("create: should reject when regex namespace does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -235,7 +235,7 @@ test("create: should reject when regex namespace does not match", () => { test("delete: should reject when regex namespace does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -257,7 +257,7 @@ test("delete: should reject when regex namespace does not match", () => { test("delete: should not reject when regex namespace does match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -277,7 +277,7 @@ test("delete: should not reject when regex namespace does match", () => { test("delete: should reject when name does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "bleh", @@ -299,7 +299,7 @@ test("delete: should reject when name does not match", () => { test("should reject when kind does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: { group: "", version: "v1", @@ -326,7 +326,7 @@ test("should reject when kind does not match", () => { test("should reject when group does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: { group: "Nope", version: "v1", @@ -353,7 +353,7 @@ test("should reject when group does not match", () => { test("should reject when version does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: { group: "", version: "Nope", @@ -380,7 +380,7 @@ test("should reject when version does not match", () => { test("should allow when group, version, and kind match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -401,7 +401,7 @@ test("should allow when group, version, and kind match", () => { test("should allow when kind match and others are empty", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: { group: "", version: "", @@ -426,7 +426,7 @@ test("should allow when kind match and others are empty", () => { test("should reject when the capability namespace does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -449,7 +449,7 @@ test("should reject when the capability namespace does not match", () => { test("should reject when namespace does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -472,7 +472,7 @@ test("should reject when namespace does not match", () => { test("should allow when namespace is match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -493,7 +493,7 @@ test("should allow when namespace is match", () => { test("should reject when label does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -518,7 +518,7 @@ test("should reject when label does not match", () => { test("should allow when label is match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -549,7 +549,7 @@ test("should allow when label is match", () => { test("should reject when annotation does not match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -574,7 +574,7 @@ test("should reject when annotation does not match", () => { test("should allow when annotation is match", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -605,7 +605,7 @@ test("should allow when annotation is match", () => { test("should use `oldObject` when the operation is `DELETE`", () => { const binding = { model: kind.Pod, - event: Event.Delete, + event: Event.DELETE, kind: podKind, filters: { name: "", @@ -629,7 +629,7 @@ test("should use `oldObject` when the operation is `DELETE`", () => { test("should allow when deletionTimestamp is present on pod", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", @@ -661,7 +661,7 @@ test("should allow when deletionTimestamp is present on pod", () => { test("should reject when deletionTimestamp is not present on pod", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: podKind, filters: { name: "", diff --git a/src/lib/filter/shouldSkipRequest.test.ts b/src/lib/filter/shouldSkipRequest.test.ts index 714a58025..0c432300c 100644 --- a/src/lib/filter/shouldSkipRequest.test.ts +++ b/src/lib/filter/shouldSkipRequest.test.ts @@ -31,7 +31,7 @@ const defaultFilters = { }; const defaultBinding = { callback, - event: Event.Any, + event: Event.ANY, filters: defaultFilters, kind: podKind, model: kind.Pod, @@ -39,7 +39,7 @@ const defaultBinding = { export const groupBinding = { callback, - event: Event.Create, + event: Event.CREATE, filters: defaultFilters, kind: deploymentKind, model: kind.Deployment, @@ -47,7 +47,7 @@ export const groupBinding = { export const clusterScopedBinding = { callback, - event: Event.Delete, + event: Event.DELETE, filters: defaultFilters, kind: clusterRoleKind, model: kind.ClusterRole, @@ -172,7 +172,7 @@ describe("when a capability defines namespaces and the admission request object it("should skip request when the capability namespace does not exist on the object", () => { const binding = { ...clusterScopedBinding, - event: Event.Create, + event: Event.CREATE, filters: { ...clusterScopedBinding.filters, regexName: "", @@ -190,7 +190,7 @@ describe("when a binding contains a cluster scoped object", () => { it("should skip request when the binding defines a namespace on a cluster scoped object", () => { const clusterScopedBindingWithNamespace = { ...clusterScopedBinding, - event: Event.Create, + event: Event.CREATE, filters: { ...clusterScopedBinding.filters, namespaces: ["namespace"], diff --git a/src/lib/helpers.test.ts b/src/lib/helpers.test.ts index d2a49fee4..a960adb2c 100644 --- a/src/lib/helpers.test.ts +++ b/src/lib/helpers.test.ts @@ -1331,7 +1331,7 @@ describe("filterNoMatchReason", () => { test("returns capability namespace error when object is not in capability namespaces", () => { const binding = { model: kind.Pod, - event: Event.Any, + event: Event.ANY, kind: { group: "", version: "v1", diff --git a/src/lib/watch-processor.ts b/src/lib/watch-processor.ts index 9712595fe..884b9b4fe 100644 --- a/src/lib/watch-processor.ts +++ b/src/lib/watch-processor.ts @@ -62,11 +62,11 @@ const watchCfg: WatchCfg = { // Map the event to the watch phase const eventToPhaseMap = { - [Event.Create]: [WatchPhase.Added], - [Event.Update]: [WatchPhase.Modified], - [Event.CreateOrUpdate]: [WatchPhase.Added, WatchPhase.Modified], - [Event.Delete]: [WatchPhase.Deleted], - [Event.Any]: [WatchPhase.Added, WatchPhase.Modified, WatchPhase.Deleted], + [Event.CREATE]: [WatchPhase.Added], + [Event.UPDATE]: [WatchPhase.Modified], + [Event.CREATE_OR_UPDATE]: [WatchPhase.Added, WatchPhase.Modified], + [Event.DELETE]: [WatchPhase.Deleted], + [Event.ANY]: [WatchPhase.Added, WatchPhase.Modified, WatchPhase.Deleted], }; /** @@ -90,7 +90,7 @@ export function setupWatch(capabilities: Capability[], ignoredNamespaces?: strin */ async function runBinding(binding: Binding, capabilityNamespaces: string[], ignoredNamespaces?: string[]) { // Get the phases to match, fallback to any - const phaseMatch: WatchPhase[] = eventToPhaseMap[binding.event] || eventToPhaseMap[Event.Any]; + const phaseMatch: WatchPhase[] = eventToPhaseMap[binding.event] || eventToPhaseMap[Event.ANY]; // The watch callback is run when an object is received or dequeued Log.debug({ watchCfg }, "Effective WatchConfig");