pepr 0.38.0-rc → 0.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/cli.js +13 -13
  2. package/dist/controller.js +1 -1
  3. package/dist/fixtures/loader.d.ts +1 -1
  4. package/dist/fixtures/loader.d.ts.map +1 -1
  5. package/dist/lib/controller/index.d.ts +2 -1
  6. package/dist/lib/controller/index.d.ts.map +1 -1
  7. package/dist/lib/k8s.d.ts +1 -77
  8. package/dist/lib/k8s.d.ts.map +1 -1
  9. package/dist/lib.js.map +2 -2
  10. package/package.json +8 -6
  11. package/src/fixtures/loader.ts +1 -1
  12. package/src/lib/assets/pods.ts +6 -6
  13. package/src/lib/assets/yaml.ts +6 -6
  14. package/src/lib/controller/index.ts +2 -2
  15. package/src/lib/k8s.ts +1 -102
  16. package/dist/cli/init/utils.test.d.ts +0 -2
  17. package/dist/cli/init/utils.test.d.ts.map +0 -1
  18. package/dist/cli/init/walkthrough.test.d.ts +0 -2
  19. package/dist/cli/init/walkthrough.test.d.ts.map +0 -1
  20. package/dist/lib/adjudicators.test.d.ts +0 -2
  21. package/dist/lib/adjudicators.test.d.ts.map +0 -1
  22. package/dist/lib/assets/helm.test.d.ts +0 -2
  23. package/dist/lib/assets/helm.test.d.ts.map +0 -1
  24. package/dist/lib/assets/pods.test.d.ts +0 -2
  25. package/dist/lib/assets/pods.test.d.ts.map +0 -1
  26. package/dist/lib/capability.test.d.ts +0 -2
  27. package/dist/lib/capability.test.d.ts.map +0 -1
  28. package/dist/lib/controller/store.test.d.ts +0 -2
  29. package/dist/lib/controller/store.test.d.ts.map +0 -1
  30. package/dist/lib/errors.test.d.ts +0 -2
  31. package/dist/lib/errors.test.d.ts.map +0 -1
  32. package/dist/lib/filter.test.d.ts +0 -3
  33. package/dist/lib/filter.test.d.ts.map +0 -1
  34. package/dist/lib/finalizer.test.d.ts +0 -2
  35. package/dist/lib/finalizer.test.d.ts.map +0 -1
  36. package/dist/lib/helpers.test.d.ts +0 -2
  37. package/dist/lib/helpers.test.d.ts.map +0 -1
  38. package/dist/lib/included-files.test.d.ts +0 -2
  39. package/dist/lib/included-files.test.d.ts.map +0 -1
  40. package/dist/lib/logger.test.d.ts +0 -2
  41. package/dist/lib/logger.test.d.ts.map +0 -1
  42. package/dist/lib/metrics.test.d.ts +0 -2
  43. package/dist/lib/metrics.test.d.ts.map +0 -1
  44. package/dist/lib/module.test.d.ts +0 -2
  45. package/dist/lib/module.test.d.ts.map +0 -1
  46. package/dist/lib/mutate-request.test.d.ts +0 -2
  47. package/dist/lib/mutate-request.test.d.ts.map +0 -1
  48. package/dist/lib/queue.test.d.ts +0 -2
  49. package/dist/lib/queue.test.d.ts.map +0 -1
  50. package/dist/lib/schedule.test.d.ts +0 -15
  51. package/dist/lib/schedule.test.d.ts.map +0 -1
  52. package/dist/lib/storage.test.d.ts +0 -2
  53. package/dist/lib/storage.test.d.ts.map +0 -1
  54. package/dist/lib/tls.test.d.ts +0 -2
  55. package/dist/lib/tls.test.d.ts.map +0 -1
  56. package/dist/lib/utils.test.d.ts +0 -2
  57. package/dist/lib/utils.test.d.ts.map +0 -1
  58. package/dist/lib/validate-request.test.d.ts +0 -2
  59. package/dist/lib/validate-request.test.d.ts.map +0 -1
  60. package/dist/lib/watch-processor.test.d.ts +0 -2
  61. package/dist/lib/watch-processor.test.d.ts.map +0 -1
  62. package/dist/sdk/sdk.test.d.ts +0 -2
  63. package/dist/sdk/sdk.test.d.ts.map +0 -1
  64. package/src/cli/init/utils.test.ts +0 -19
  65. package/src/cli/init/walkthrough.test.ts +0 -102
  66. package/src/lib/adjudicators.test.ts +0 -1236
  67. package/src/lib/assets/helm.test.ts +0 -64
  68. package/src/lib/assets/pods.test.ts +0 -553
  69. package/src/lib/capability.test.ts +0 -655
  70. package/src/lib/controller/store.test.ts +0 -131
  71. package/src/lib/errors.test.ts +0 -85
  72. package/src/lib/filter.test.ts +0 -691
  73. package/src/lib/finalizer.test.ts +0 -236
  74. package/src/lib/helpers.test.ts +0 -1486
  75. package/src/lib/included-files.test.ts +0 -22
  76. package/src/lib/logger.test.ts +0 -18
  77. package/src/lib/metrics.test.ts +0 -132
  78. package/src/lib/module.test.ts +0 -126
  79. package/src/lib/mutate-request.test.ts +0 -187
  80. package/src/lib/queue.test.ts +0 -152
  81. package/src/lib/schedule.test.ts +0 -217
  82. package/src/lib/storage.test.ts +0 -216
  83. package/src/lib/tls.test.ts +0 -18
  84. package/src/lib/utils.test.ts +0 -69
  85. package/src/lib/validate-request.test.ts +0 -121
  86. package/src/lib/watch-processor.test.ts +0 -418
  87. package/src/sdk/sdk.test.ts +0 -276
@@ -1,236 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // SPDX-FileCopyrightText: 2023-Present The Pepr Authors
3
-
4
- import { beforeEach, describe, expect, it, jest } from "@jest/globals";
5
- import { addFinalizer, removeFinalizer } from "./finalizer";
6
- import { KubernetesObject, K8s, GenericClass, RegisterKind } from "kubernetes-fluent-client";
7
- import { K8sInit } from "kubernetes-fluent-client/dist/fluent/types";
8
- import { AdmissionRequest, Operation } from "./types";
9
- import { PeprMutateRequest } from "./mutate-request";
10
- import { Binding } from "./types";
11
-
12
- jest.mock("kubernetes-fluent-client");
13
- const mockK8s = jest.mocked(K8s);
14
- const mockRegisterKind = jest.mocked(RegisterKind);
15
-
16
- const PEPR_FINALIZER = "pepr.dev/finalizer";
17
-
18
- describe("addFinalizer", () => {
19
- let request: PeprMutateRequest<KubernetesObject>;
20
-
21
- const fakeAdmissionRequest = (op: Operation): AdmissionRequest<KubernetesObject> => {
22
- const obj = {
23
- apiVersion: "v1",
24
- kind: "Pod",
25
- metadata: {
26
- name: "test-pod",
27
- labels: {
28
- "existing-label": "true",
29
- },
30
- annotations: {
31
- "existing-annotation": "true",
32
- },
33
- },
34
- };
35
-
36
- return {
37
- operation: op,
38
- object: obj,
39
- oldObject: obj,
40
- dryRun: false,
41
- uid: "uid",
42
- name: "name",
43
- kind: { group: "", version: "v1", kind: "Pod" },
44
- resource: { group: "", version: "v1", resource: "pods" },
45
- userInfo: {},
46
- };
47
- };
48
-
49
- describe("on create", () => {
50
- const op = Operation.CREATE;
51
-
52
- beforeEach(() => {
53
- request = new PeprMutateRequest(fakeAdmissionRequest(op));
54
- });
55
-
56
- it("adds pepr finalizer when no other finalizers are present", () => {
57
- expect(request.Raw.metadata?.finalizers).toBeUndefined();
58
-
59
- // impure function (acts via side effect instead of return result) --
60
- // i.e. it directly modifies the passed-in request object
61
- addFinalizer(request);
62
-
63
- expect(request.Raw.metadata!.finalizers).toContain(PEPR_FINALIZER);
64
- });
65
-
66
- it("adds pepr finalizer when other finalizers are present", () => {
67
- const original = ["i.am.a/macguffin", "i.am.one/too"];
68
- request.Raw.metadata!.finalizers = [...original];
69
-
70
- addFinalizer(request);
71
-
72
- const expected = [...original, PEPR_FINALIZER];
73
- expect(request.Raw.metadata!.finalizers).toHaveLength(expected.length);
74
- expect(request.Raw.metadata!.finalizers).toEqual(expect.arrayContaining(expected));
75
- });
76
-
77
- it("does not add another pepr finalizer when one is already present", () => {
78
- const original = ["i.am.a/macguffin", "i.am.one/too", PEPR_FINALIZER];
79
- request.Raw.metadata!.finalizers = [...original];
80
-
81
- addFinalizer(request);
82
-
83
- const expected = [...original];
84
- expect(request.Raw.metadata!.finalizers).toHaveLength(expected.length);
85
- expect(request.Raw.metadata!.finalizers).toEqual(expect.arrayContaining(expected));
86
- });
87
- });
88
-
89
- describe("on update", () => {
90
- const op = Operation.UPDATE;
91
-
92
- beforeEach(() => {
93
- request = new PeprMutateRequest(fakeAdmissionRequest(op));
94
- });
95
-
96
- it("adds pepr finalizer when no other finalizers are present", () => {
97
- expect(request.Raw.metadata?.finalizers).toBeUndefined();
98
-
99
- addFinalizer(request);
100
-
101
- expect(request.Raw.metadata!.finalizers).toContain(PEPR_FINALIZER);
102
- });
103
-
104
- it("adds pepr finalizer when other finalizers are present", () => {
105
- const original = ["i.am.a/macguffin", "i.am.one/too"];
106
- request.Raw.metadata!.finalizers = [...original];
107
-
108
- addFinalizer(request);
109
-
110
- const expected = [...original, PEPR_FINALIZER];
111
- expect(request.Raw.metadata!.finalizers).toHaveLength(expected.length);
112
- expect(request.Raw.metadata!.finalizers).toEqual(expect.arrayContaining(expected));
113
- });
114
-
115
- it("does not add another pepr finalizer when one is already present", () => {
116
- const original = ["i.am.a/macguffin", "i.am.one/too", PEPR_FINALIZER];
117
- request.Raw.metadata!.finalizers = [...original];
118
-
119
- addFinalizer(request);
120
-
121
- const expected = [...original];
122
- expect(request.Raw.metadata!.finalizers).toHaveLength(expected.length);
123
- expect(request.Raw.metadata!.finalizers).toEqual(expect.arrayContaining(expected));
124
- });
125
-
126
- it("does not add pepr finalizer if a deletetionTimestamp is present", () => {
127
- const original = ["i.am.a/macguffin", "i.am.one/too"];
128
- request.Raw.metadata!.finalizers = [...original];
129
- request.Raw.metadata!.deletionTimestamp = new Date();
130
-
131
- addFinalizer(request);
132
-
133
- const expected = [...original];
134
- expect(request.Raw.metadata!.finalizers).toHaveLength(expected.length);
135
- expect(request.Raw.metadata!.finalizers).toEqual(expect.arrayContaining(expected));
136
- });
137
- });
138
-
139
- describe("on delete", () => {
140
- const op = Operation.DELETE;
141
-
142
- beforeEach(() => {
143
- request = new PeprMutateRequest(fakeAdmissionRequest(op));
144
- });
145
-
146
- it("does not add pepr finalizer", () => {
147
- const original = ["i.am.a/macguffin", "i.am.one/too"];
148
- request.Raw.metadata!.finalizers = [...original];
149
-
150
- addFinalizer(request);
151
-
152
- const expected = [...original];
153
- expect(request.Raw.metadata!.finalizers).toHaveLength(expected.length);
154
- expect(request.Raw.metadata!.finalizers).toEqual(expect.arrayContaining(expected));
155
- });
156
- });
157
- });
158
-
159
- describe("removeFinalizer", () => {
160
- const mockPatch = jest.fn();
161
-
162
- const fakeBinding = () =>
163
- ({
164
- model: {},
165
- kind: {},
166
- }) as unknown as Binding;
167
-
168
- const fakeObject = () =>
169
- ({
170
- metadata: {
171
- namespace: "test-namespace",
172
- name: "test-name",
173
- },
174
- }) as KubernetesObject;
175
-
176
- describe("when RegisterKind fails", () => {
177
- beforeEach(() => {
178
- jest.resetAllMocks();
179
-
180
- mockK8s.mockImplementation(<T extends GenericClass, K extends KubernetesObject>() => {
181
- return { Patch: mockPatch } as unknown as K8sInit<T, K>;
182
- });
183
-
184
- mockRegisterKind.mockImplementation(() => {
185
- throw "oops";
186
- });
187
- });
188
-
189
- it("does NOT send a JSON Patch to remove pepr finalizers", async () => {
190
- const object = fakeObject();
191
- const binding = fakeBinding();
192
-
193
- await removeFinalizer(binding, object);
194
-
195
- expect(mockPatch.mock.calls).toHaveLength(0);
196
- });
197
- });
198
-
199
- describe("when RegisterKind succeeds", () => {
200
- beforeEach(() => {
201
- jest.resetAllMocks();
202
-
203
- mockPatch.mockImplementation(ops => {
204
- return { ops };
205
- });
206
-
207
- mockK8s.mockImplementation(<T extends GenericClass, K extends KubernetesObject>() => {
208
- return { Patch: mockPatch } as unknown as K8sInit<T, K>;
209
- });
210
-
211
- mockRegisterKind.mockImplementation(() => {});
212
- });
213
-
214
- it("sends a JSON Patch to remove pepr finalizers", async () => {
215
- const originalFinalizers = ["ignore.me/now", "ignore.me/too", PEPR_FINALIZER];
216
- const adjustedFinalizers = originalFinalizers.filter(f => f !== PEPR_FINALIZER);
217
-
218
- const object = fakeObject();
219
- object.metadata!.finalizers = [...originalFinalizers];
220
- const binding = fakeBinding();
221
-
222
- await removeFinalizer(binding, object);
223
-
224
- const expected = [
225
- {
226
- op: "replace",
227
- path: `/metadata/finalizers`,
228
- value: adjustedFinalizers,
229
- },
230
- ];
231
- expect(mockPatch.mock.calls).toHaveLength(1);
232
- expect(mockPatch.mock.calls[0]).toHaveLength(1);
233
- expect(mockPatch.mock.calls[0][0]).toEqual(expected);
234
- });
235
- });
236
- });