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,1236 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // SPDX-FileCopyrightText: 2023-Present The Pepr Authors
3
-
4
- import { expect, describe, it } from "@jest/globals";
5
- import * as sut from "./adjudicators";
6
- import { KubernetesObject } from "kubernetes-fluent-client";
7
- import { AdmissionRequest, Binding, DeepPartial, Event, Operation } from "./types";
8
-
9
- describe("definesDeletionTimestamp", () => {
10
- //[ Binding, result ]
11
- it.each([
12
- [{}, false],
13
- [{ filters: {} }, false],
14
- [{ filters: { deletionTimestamp: null } }, false],
15
- [{ filters: { deletionTimestamp: false } }, false],
16
- [{ filters: { deletionTimestamp: true } }, true],
17
- ])("given %j, returns %s", (given, expected) => {
18
- const binding = given as DeepPartial<Binding>;
19
-
20
- const result = sut.definesDeletionTimestamp(binding);
21
-
22
- expect(result).toBe(expected);
23
- });
24
- });
25
-
26
- describe("ignoresDeletionTimestamp", () => {
27
- //[ Binding, result ]
28
- it.each([
29
- [{}, true],
30
- [{ filters: {} }, true],
31
- [{ filters: { deletionTimestamp: null } }, true],
32
- [{ filters: { deletionTimestamp: false } }, true],
33
- [{ filters: { deletionTimestamp: true } }, false],
34
- ])("given %j, returns %s", (given, expected) => {
35
- const binding = given as DeepPartial<Binding>;
36
-
37
- const result = sut.ignoresDeletionTimestamp(binding);
38
-
39
- expect(result).toBe(expected);
40
- });
41
- });
42
-
43
- describe("carriesDeletionTimestamp", () => {
44
- //[ KubernetesObject, result ]
45
- it.each([
46
- [{}, false],
47
- [{ metadata: {} }, false],
48
- [{ metadata: { deletionTimestamp: null } }, false],
49
- [{ metadata: { deletionTimestamp: new Date() } }, true],
50
- ])("given %j, returns %s", (given, expected) => {
51
- const ko = given as DeepPartial<KubernetesObject>;
52
-
53
- const result = sut.carriesDeletionTimestamp(ko);
54
-
55
- expect(result).toBe(expected);
56
- });
57
- });
58
-
59
- describe("missingDeletionTimestamp", () => {
60
- //[ KubernetesObject, result ]
61
- it.each([
62
- [{}, true],
63
- [{ metadata: {} }, true],
64
- [{ metadata: { deletionTimestamp: null } }, true],
65
- [{ metadata: { deletionTimestamp: new Date() } }, false],
66
- ])("given %j, returns %s", (given, expected) => {
67
- const ko = given as DeepPartial<KubernetesObject>;
68
-
69
- const result = sut.missingDeletionTimestamp(ko);
70
-
71
- expect(result).toBe(expected);
72
- });
73
- });
74
-
75
- describe("mismatchedDeletionTimestamp", () => {
76
- //[ Binding, KubernetesObject, result ]
77
- it.each([
78
- [{}, {}, false],
79
- [{}, { metadata: { deletionTimestamp: new Date() } }, false],
80
- [{ filters: { deletionTimestamp: true } }, {}, true],
81
- [{ filters: { deletionTimestamp: true } }, { metadata: { deletionTimestamp: new Date() } }, false],
82
- ])("given binding %j and object %j, returns %s", (bnd, obj, expected) => {
83
- const binding = bnd as DeepPartial<Binding>;
84
- const object = obj as DeepPartial<KubernetesObject>;
85
-
86
- const result = sut.mismatchedDeletionTimestamp(binding, object);
87
-
88
- expect(result).toBe(expected);
89
- });
90
- });
91
-
92
- describe("definedName", () => {
93
- //[ Binding, result ]
94
- it.each([
95
- [{}, ""],
96
- [{ filters: {} }, ""],
97
- [{ filters: { name: null } }, ""],
98
- [{ filters: { name: "name" } }, "name"],
99
- ])("given %j, returns '%s'", (given, expected) => {
100
- const binding = given as DeepPartial<Binding>;
101
-
102
- const result = sut.definedName(binding);
103
-
104
- expect(result).toBe(expected);
105
- });
106
- });
107
-
108
- describe("definesName", () => {
109
- //[ Binding, result ]
110
- it.each([
111
- [{}, false],
112
- [{ filters: {} }, false],
113
- [{ filters: { name: null } }, false],
114
- [{ filters: { name: "name" } }, true],
115
- ])("given %j, returns %s", (given, expected) => {
116
- const binding = given as DeepPartial<Binding>;
117
-
118
- const result = sut.definesName(binding);
119
-
120
- expect(result).toBe(expected);
121
- });
122
- });
123
-
124
- describe("ignoresName", () => {
125
- //[ Binding, result ]
126
- it.each([
127
- [{}, true],
128
- [{ filters: {} }, true],
129
- [{ filters: { name: null } }, true],
130
- [{ filters: { name: "name" } }, false],
131
- ])("given %j, returns %s", (given, expected) => {
132
- const binding = given as DeepPartial<Binding>;
133
-
134
- const result = sut.ignoresName(binding);
135
-
136
- expect(result).toBe(expected);
137
- });
138
- });
139
-
140
- describe("definedNameRegex", () => {
141
- //[ Binding, result ]
142
- it.each([
143
- [{}, ""],
144
- [{ filters: {} }, ""],
145
- [{ filters: { regexName: null } }, ""],
146
- [{ filters: { regexName: "n.me" } }, "n.me"],
147
- ])("given %j, returns '%s'", (given, expected) => {
148
- const binding = given as DeepPartial<Binding>;
149
-
150
- const result = sut.definedNameRegex(binding);
151
-
152
- expect(result).toBe(expected);
153
- });
154
- });
155
-
156
- describe("definesNameRegex", () => {
157
- //[ Binding, result ]
158
- it.each([
159
- [{}, false],
160
- [{ filters: {} }, false],
161
- [{ filters: { regexName: null } }, false],
162
- [{ filters: { regexName: "n.me" } }, true],
163
- ])("given %j, returns %s", (given, expected) => {
164
- const binding = given as DeepPartial<Binding>;
165
-
166
- const result = sut.definesNameRegex(binding);
167
-
168
- expect(result).toBe(expected);
169
- });
170
- });
171
-
172
- describe("carriedName", () => {
173
- //[ KubernetesObject, result ]
174
- it.each([
175
- [{}, ""],
176
- [{ metadata: {} }, ""],
177
- [{ metadata: { name: null } }, ""],
178
- [{ metadata: { name: "name" } }, "name"],
179
- ])("given %j, returns '%s'", (given, expected) => {
180
- const binding = given as DeepPartial<Binding>;
181
-
182
- const result = sut.carriedName(binding);
183
-
184
- expect(result).toBe(expected);
185
- });
186
- });
187
-
188
- describe("carriesName", () => {
189
- //[ KubernetesObject, result ]
190
- it.each([
191
- [{}, false],
192
- [{ metadata: {} }, false],
193
- [{ metadata: { name: null } }, false],
194
- [{ metadata: { name: "name" } }, true],
195
- ])("given %j, returns %s", (given, expected) => {
196
- const binding = given as DeepPartial<Binding>;
197
-
198
- const result = sut.carriesName(binding);
199
-
200
- expect(result).toBe(expected);
201
- });
202
- });
203
-
204
- describe("missingName", () => {
205
- //[ Binding, result ]
206
- it.each([
207
- [{}, true],
208
- [{ metadata: {} }, true],
209
- [{ metadata: { name: null } }, true],
210
- [{ metadata: { name: "name" } }, false],
211
- ])("given %j, returns %s", (given, expected) => {
212
- const binding = given as DeepPartial<Binding>;
213
-
214
- const result = sut.missingName(binding);
215
-
216
- expect(result).toBe(expected);
217
- });
218
- });
219
-
220
- describe("mismatchedName", () => {
221
- //[ Binding, KubernetesObject, result ]
222
- it.each([
223
- [{}, {}, false],
224
- [{}, { metadata: { name: "name" } }, false],
225
- [{ filters: { name: "name" } }, {}, true],
226
- [{ filters: { name: "name" } }, { metadata: { name: "name" } }, false],
227
- ])("given binding %j and object %j, returns %s", (bnd, obj, expected) => {
228
- const binding = bnd as DeepPartial<Binding>;
229
- const object = obj as DeepPartial<KubernetesObject>;
230
-
231
- const result = sut.mismatchedName(binding, object);
232
-
233
- expect(result).toBe(expected);
234
- });
235
- });
236
-
237
- describe("mismatchedNameRegex", () => {
238
- //[ Binding, KubernetesObject, result ]
239
- it.each([
240
- [{}, {}, false],
241
- [{}, { metadata: { name: "name" } }, false],
242
- [{ filters: { regexName: "^n[aeiou]me$" } }, {}, true],
243
- [{ filters: { regexName: "^n[aeiou]me$" } }, { metadata: { name: "name" } }, false],
244
- [{ filters: { regexName: "^n[aeiou]me$" } }, { metadata: { name: "neme" } }, false],
245
- [{ filters: { regexName: "^n[aeiou]me$" } }, { metadata: { name: "nime" } }, false],
246
- [{ filters: { regexName: "^n[aeiou]me$" } }, { metadata: { name: "nome" } }, false],
247
- [{ filters: { regexName: "^n[aeiou]me$" } }, { metadata: { name: "nume" } }, false],
248
- [{ filters: { regexName: "^n[aeiou]me$" } }, { metadata: { name: "n3me" } }, true],
249
- ])("given binding %j and object %j, returns %s", (bnd, obj, expected) => {
250
- const binding = bnd as DeepPartial<Binding>;
251
- const object = obj as DeepPartial<KubernetesObject>;
252
-
253
- const result = sut.mismatchedNameRegex(binding, object);
254
-
255
- expect(result).toBe(expected);
256
- });
257
- });
258
-
259
- describe("bindsToKind", () => {
260
- //[ Binding, Kind, result ]
261
- it.each([
262
- [{}, "", false],
263
- [{ kind: {} }, "", false],
264
- [{ kind: { kind: null } }, "", false],
265
- [{ kind: { kind: "" } }, "", false],
266
- [{}, "Kind", false],
267
- [{ kind: {} }, "Kind", false],
268
- [{ kind: { kind: null } }, "Kind", false],
269
- [{ kind: { kind: "" } }, "Kind", false],
270
- [{ kind: { kind: "Kind" } }, "Kind", true],
271
- ])("given binding %j, and kind '%s', returns %s", (bnd, knd, expected) => {
272
- const binding = bnd as DeepPartial<Binding>;
273
- const kind = knd as string;
274
-
275
- const result = sut.bindsToKind(binding, kind);
276
-
277
- expect(result).toBe(expected);
278
- });
279
- });
280
-
281
- describe("bindsToNamespace", () => {
282
- //[ Binding, result ]
283
- it.each([
284
- [{}, false],
285
- [{ kind: {} }, false],
286
- [{ kind: { kind: null } }, false],
287
- [{ kind: { kind: "" } }, false],
288
- [{ kind: { kind: "Namespace" } }, true],
289
- ])("given binding %j returns %s", (bnd, expected) => {
290
- const binding = bnd as DeepPartial<Binding>;
291
-
292
- const result = sut.bindsToNamespace(binding);
293
-
294
- expect(result).toBe(expected);
295
- });
296
- });
297
-
298
- describe("definedNamespaces", () => {
299
- //[ Binding, result ]
300
- it.each([
301
- [{}, []],
302
- [{ filters: {} }, []],
303
- [{ filters: { namespaces: null } }, []],
304
- [{ filters: { namespaces: [] } }, []],
305
- [{ filters: { namespaces: ["namespace"] } }, ["namespace"]],
306
- [{ filters: { namespaces: ["name", "space"] } }, ["name", "space"]],
307
- ])("given %j, returns %j", (given, expected) => {
308
- const binding = given as DeepPartial<Binding>;
309
-
310
- const result = sut.definedNamespaces(binding);
311
-
312
- expect(result).toEqual(expected);
313
- });
314
- });
315
-
316
- describe("definesNamespaces", () => {
317
- //[ Binding, result ]
318
- it.each([
319
- [{}, false],
320
- [{ filters: {} }, false],
321
- [{ filters: { namespaces: null } }, false],
322
- [{ filters: { namespaces: [] } }, false],
323
- [{ filters: { namespaces: ["namespace"] } }, true],
324
- [{ filters: { namespaces: ["name", "space"] } }, true],
325
- ])("given %j, returns %s", (given, expected) => {
326
- const binding = given as DeepPartial<Binding>;
327
-
328
- const result = sut.definesNamespaces(binding);
329
-
330
- expect(result).toBe(expected);
331
- });
332
- });
333
-
334
- describe("definedNamespaceRegexes", () => {
335
- //[ Binding, result ]
336
- it.each([
337
- [{}, []],
338
- [{ filters: {} }, []],
339
- [{ filters: { regexNamespaces: null } }, []],
340
- [{ filters: { regexNamespaces: [] } }, []],
341
- [{ filters: { regexNamespaces: ["n.mesp.ce"] } }, ["n.mesp.ce"]],
342
- [{ filters: { regexNamespaces: ["n.me", "sp.ce"] } }, ["n.me", "sp.ce"]],
343
- ])("given %j, returns %j", (given, expected) => {
344
- const binding = given as DeepPartial<Binding>;
345
-
346
- const result = sut.definedNamespaceRegexes(binding);
347
-
348
- expect(result).toEqual(expected);
349
- });
350
- });
351
-
352
- describe("definesNamespaceRegexes", () => {
353
- //[ Binding, result ]
354
- it.each([
355
- [{}, false],
356
- [{ filters: {} }, false],
357
- [{ filters: { regexNamespaces: null } }, false],
358
- [{ filters: { regexNamespaces: [] } }, false],
359
- [{ filters: { regexNamespaces: ["n.mesp.ce"] } }, true],
360
- [{ filters: { regexNamespaces: ["n.me", "sp.ce"] } }, true],
361
- ])("given %j, returns %s", (given, expected) => {
362
- const binding = given as DeepPartial<Binding>;
363
-
364
- const result = sut.definesNamespaceRegexes(binding);
365
-
366
- expect(result).toBe(expected);
367
- });
368
- });
369
-
370
- describe("carriedNamespace", () => {
371
- //[ KubernetesObject, result ]
372
- it.each([
373
- [{}, ""],
374
- [{ metadata: {} }, ""],
375
- [{ metadata: { namespace: null } }, ""],
376
- [{ metadata: { namespace: "" } }, ""],
377
- [{ metadata: { namespace: "namespace" } }, "namespace"],
378
- ])("given %j, returns %j", (given, expected) => {
379
- const binding = given as DeepPartial<Binding>;
380
-
381
- const result = sut.carriedNamespace(binding);
382
-
383
- expect(result).toEqual(expected);
384
- });
385
- });
386
-
387
- describe("carriesNamespace", () => {
388
- //[ KubernetesObject, result ]
389
- it.each([
390
- [{}, false],
391
- [{ metadata: {} }, false],
392
- [{ metadata: { namespace: null } }, false],
393
- [{ metadata: { namespace: "" } }, false],
394
- [{ metadata: { namespace: "namespace" } }, true],
395
- ])("given %j, returns %s", (given, expected) => {
396
- const binding = given as DeepPartial<Binding>;
397
-
398
- const result = sut.carriesNamespace(binding);
399
-
400
- expect(result).toBe(expected);
401
- });
402
- });
403
-
404
- describe("mismatchedNamespace", () => {
405
- //[ Binding, KubernetesObject, result ]
406
- it.each([
407
- [{}, {}, false],
408
- [{}, { metadata: { namespace: "namespace" } }, false],
409
- [{ filters: { namespaces: ["namespace"] } }, {}, true],
410
- [{ filters: { namespaces: ["namespace"] } }, { metadata: { namespace: "nopesause" } }, true],
411
- [{ filters: { namespaces: ["namespace"] } }, { metadata: { namespace: "namespace" } }, false],
412
- ])("given binding %j and object %j, returns %s", (bnd, obj, expected) => {
413
- const binding = bnd as DeepPartial<Binding>;
414
- const object = obj as DeepPartial<Binding>;
415
-
416
- const result = sut.mismatchedNamespace(binding, object);
417
-
418
- expect(result).toBe(expected);
419
- });
420
- });
421
-
422
- describe("mismatchedNamespaceRegex", () => {
423
- //[ Binding, KubernetesObject, result ]
424
- it.each([
425
- [{}, {}, false],
426
- [{}, { metadata: { namespace: "namespace" } }, false],
427
- [{ filters: { regexNamespaces: ["^n.mespace$"] } }, {}, true],
428
-
429
- [{ filters: { regexNamespaces: ["^n[aeiou]mespace$"] } }, { metadata: { namespace: "namespace" } }, false],
430
- [{ filters: { regexNamespaces: ["^n[aeiou]mespace$"] } }, { metadata: { namespace: "nemespace" } }, false],
431
- [{ filters: { regexNamespaces: ["^n[aeiou]mespace$"] } }, { metadata: { namespace: "nimespace" } }, false],
432
- [{ filters: { regexNamespaces: ["^n[aeiou]mespace$"] } }, { metadata: { namespace: "nomespace" } }, false],
433
- [{ filters: { regexNamespaces: ["^n[aeiou]mespace$"] } }, { metadata: { namespace: "numespace" } }, false],
434
- [{ filters: { regexNamespaces: ["^n[aeiou]mespace$"] } }, { metadata: { namespace: "n3mespace" } }, true],
435
-
436
- [{ filters: { regexNamespaces: ["^n[aeiou]me$", "^sp[aeiou]ce$"] } }, { metadata: { namespace: "name" } }, false],
437
- [{ filters: { regexNamespaces: ["^n[aeiou]me$", "^sp[aeiou]ce$"] } }, { metadata: { namespace: "space" } }, false],
438
- [
439
- { filters: { regexNamespaces: ["^n[aeiou]me$", "^sp[aeiou]ce$"] } },
440
- { metadata: { namespace: "namespace" } },
441
- true,
442
- ],
443
- ])("given binding %j and object %j, returns %s", (bnd, obj, expected) => {
444
- const binding = bnd as DeepPartial<Binding>;
445
- const object = obj as DeepPartial<Binding>;
446
-
447
- const result = sut.mismatchedNamespaceRegex(binding, object);
448
-
449
- expect(result).toBe(expected);
450
- });
451
- });
452
-
453
- describe("misboundNamespace", () => {
454
- //[ Binding, result ]
455
- it.each([
456
- [{ kind: { kind: "Kind" }, filters: { namespaces: [] } }, false],
457
- [{ kind: { kind: "Kind" }, filters: { namespaces: ["namespace"] } }, false],
458
- [{ kind: { kind: "Namespace" }, filters: { namespaces: [] } }, false],
459
- [{ kind: { kind: "Namespace" }, filters: { namespaces: ["namespace"] } }, true],
460
- ])("given %j, returns %s", (given, expected) => {
461
- const binding = given as DeepPartial<Binding>;
462
-
463
- const result = sut.misboundNamespace(binding);
464
-
465
- expect(result).toBe(expected);
466
- });
467
- });
468
-
469
- describe("definedAnnotations", () => {
470
- //[ Binding, result ]
471
- it.each([
472
- [{}, {}],
473
- [{ filters: {} }, {}],
474
- [{ filters: { annotations: null } }, {}],
475
- [{ filters: { annotations: {} } }, {}],
476
- [{ filters: { annotations: { annotation: "" } } }, { annotation: "" }],
477
- [{ filters: { annotations: { anno: "tation" } } }, { anno: "tation" }],
478
- ])("given %j, returns %j", (given, expected) => {
479
- const binding = given as DeepPartial<Binding>;
480
-
481
- const result = sut.definedAnnotations(binding);
482
-
483
- expect(result).toEqual(expected);
484
- });
485
- });
486
-
487
- describe("definesAnnotations", () => {
488
- //[ Binding, result ]
489
- it.each([
490
- [{}, false],
491
- [{ filters: {} }, false],
492
- [{ filters: { annotations: null } }, false],
493
- [{ filters: { annotations: {} } }, false],
494
- [{ filters: { annotations: { annotation: "" } } }, true],
495
- [{ filters: { annotations: { anno: "tation" } } }, true],
496
- ])("given %j, returns %s", (given, expected) => {
497
- const binding = given as DeepPartial<Binding>;
498
-
499
- const result = sut.definesAnnotations(binding);
500
-
501
- expect(result).toBe(expected);
502
- });
503
- });
504
-
505
- describe("carriedAnnotations", () => {
506
- //[ KuberneteObject, result ]
507
- it.each([
508
- [{}, {}],
509
- [{ metadata: {} }, {}],
510
- [{ metadata: { annotations: null } }, {}],
511
- [{ metadata: { annotations: {} } }, {}],
512
- [{ metadata: { annotations: { annotation: "" } } }, { annotation: "" }],
513
- [{ metadata: { annotations: { anno: "tation" } } }, { anno: "tation" }],
514
- ])("given %j, returns %j", (given, expected) => {
515
- const binding = given as DeepPartial<KubernetesObject>;
516
-
517
- const result = sut.carriedAnnotations(binding);
518
-
519
- expect(result).toEqual(expected);
520
- });
521
- });
522
-
523
- describe("carriesAnnotations", () => {
524
- //[ KubernetesObject, result ]
525
- it.each([
526
- [{}, false],
527
- [{ metadata: {} }, false],
528
- [{ metadata: { annotations: null } }, false],
529
- [{ metadata: { annotations: {} } }, false],
530
- [{ metadata: { annotations: { annotation: "" } } }, true],
531
- [{ metadata: { annotations: { anno: "tation" } } }, true],
532
- ])("given %j, returns %s", (given, expected) => {
533
- const binding = given as DeepPartial<KubernetesObject>;
534
-
535
- const result = sut.carriesAnnotations(binding);
536
-
537
- expect(result).toBe(expected);
538
- });
539
- });
540
-
541
- describe("metasMismatch", () => {
542
- it.each([
543
- [{}, {}, false],
544
- [{}, { anno: "tate" }, false],
545
-
546
- [{ anno: "" }, {}, true],
547
- [{ anno: "" }, { anno: "" }, false],
548
- [{ anno: "" }, { anno: "tate" }, false],
549
-
550
- [{ anno: "tate" }, {}, true],
551
- [{ anno: "tate" }, { anno: "" }, true],
552
- [{ anno: "tate" }, { anno: "tate" }, false],
553
- [{ anno: "tate" }, { anno: "tato" }, true],
554
-
555
- [{ an: "no", ta: "te" }, { an: "" }, true],
556
- [{ an: "no", ta: "te" }, { an: "no" }, true],
557
- [{ an: "no", ta: "te" }, { an: "no", ta: "" }, true],
558
- [{ an: "no", ta: "te" }, { an: "no", ta: "te" }, false],
559
- [{ an: "no", ta: "te" }, { an: "no", ta: "to" }, true],
560
- ])("given left %j and right %j, returns %s", (bnd, obj, expected) => {
561
- const result = sut.metasMismatch(bnd, obj);
562
-
563
- expect(result).toBe(expected);
564
- });
565
- });
566
-
567
- describe("mismatchedAnnotations", () => {
568
- //[ Binding, KubernetesObject, result ]
569
- it.each([
570
- [{}, {}, false],
571
- [{}, { metadata: { annotations: { anno: "tate" } } }, false],
572
-
573
- [{ filters: { annotations: { anno: "" } } }, {}, true],
574
- [{ filters: { annotations: { anno: "" } } }, { metadata: { annotations: { anno: "" } } }, false],
575
- [{ filters: { annotations: { anno: "" } } }, { metadata: { annotations: { anno: "tate" } } }, false],
576
-
577
- [{ filters: { annotations: { anno: "tate" } } }, {}, true],
578
- [{ filters: { annotations: { anno: "tate" } } }, { metadata: { annotations: { anno: "" } } }, true],
579
- [{ filters: { annotations: { anno: "tate" } } }, { metadata: { annotations: { anno: "tate" } } }, false],
580
- [{ filters: { annotations: { anno: "tate" } } }, { metadata: { annotations: { anno: "tato" } } }, true],
581
-
582
- [{ filters: { annotations: { an: "no", ta: "te" } } }, { metadata: { annotations: { an: "" } } }, true],
583
- [{ filters: { annotations: { an: "no", ta: "te" } } }, { metadata: { annotations: { an: "no" } } }, true],
584
- [{ filters: { annotations: { an: "no", ta: "te" } } }, { metadata: { annotations: { an: "no", ta: "" } } }, true],
585
- [{ filters: { annotations: { an: "no", ta: "te" } } }, { metadata: { annotations: { an: "no", ta: "to" } } }, true],
586
- [
587
- { filters: { annotations: { an: "no", ta: "te" } } },
588
- { metadata: { annotations: { an: "no", ta: "te" } } },
589
- false,
590
- ],
591
- ])("given binding %j and object %j, returns %s", (bnd, obj, expected) => {
592
- const binding = bnd as DeepPartial<Binding>;
593
- const object = obj as DeepPartial<Binding>;
594
-
595
- const result = sut.mismatchedAnnotations(binding, object);
596
-
597
- expect(result).toBe(expected);
598
- });
599
- });
600
-
601
- describe("definedLabels", () => {
602
- //[ Binding, result ]
603
- it.each([
604
- [{}, {}],
605
- [{ filters: {} }, {}],
606
- [{ filters: { labels: null } }, {}],
607
- [{ filters: { labels: {} } }, {}],
608
- [{ filters: { labels: { label: "" } } }, { label: "" }],
609
- [{ filters: { labels: { lab: "el" } } }, { lab: "el" }],
610
- ])("given %j, returns %j", (given, expected) => {
611
- const binding = given as DeepPartial<Binding>;
612
-
613
- const result = sut.definedLabels(binding);
614
-
615
- expect(result).toEqual(expected);
616
- });
617
- });
618
-
619
- describe("definesLabels", () => {
620
- //[ Binding, result ]
621
- it.each([
622
- [{}, false],
623
- [{ filters: {} }, false],
624
- [{ filters: { labels: null } }, false],
625
- [{ filters: { labels: {} } }, false],
626
- [{ filters: { labels: { label: "" } } }, true],
627
- [{ filters: { labels: { lab: "el" } } }, true],
628
- ])("given %j, returns %s", (given, expected) => {
629
- const binding = given as DeepPartial<Binding>;
630
-
631
- const result = sut.definesLabels(binding);
632
-
633
- expect(result).toBe(expected);
634
- });
635
- });
636
-
637
- describe("carriedLabels", () => {
638
- //[ KubernetesObject, result ]
639
- it.each([
640
- [{}, {}],
641
- [{ metadata: {} }, {}],
642
- [{ metadata: { labels: null } }, {}],
643
- [{ metadata: { labels: {} } }, {}],
644
- [{ metadata: { labels: { label: "" } } }, { label: "" }],
645
- [{ metadata: { labels: { lab: "el" } } }, { lab: "el" }],
646
- ])("given %j, returns %j", (given, expected) => {
647
- const binding = given as DeepPartial<KubernetesObject>;
648
-
649
- const result = sut.carriedLabels(binding);
650
-
651
- expect(result).toEqual(expected);
652
- });
653
- });
654
-
655
- describe("carriesLabels", () => {
656
- //[ KubernetesObject, result ]
657
- it.each([
658
- [{}, false],
659
- [{ metadata: {} }, false],
660
- [{ metadata: { labels: null } }, false],
661
- [{ metadata: { labels: {} } }, false],
662
- [{ metadata: { labels: { label: "" } } }, true],
663
- [{ metadata: { labels: { lab: "el" } } }, true],
664
- ])("given %j, returns %s", (given, expected) => {
665
- const binding = given as DeepPartial<KubernetesObject>;
666
-
667
- const result = sut.carriesLabels(binding);
668
-
669
- expect(result).toBe(expected);
670
- });
671
- });
672
-
673
- describe("mismatchedLabels", () => {
674
- //[ Binding, KubernetesObject, result ]
675
- it.each([
676
- [{}, {}, false],
677
- [{}, { metadata: { labels: { la: "ble" } } }, false],
678
-
679
- [{ filters: { labels: { la: "" } } }, {}, true],
680
- [{ filters: { labels: { la: "" } } }, { metadata: { labels: { la: "" } } }, false],
681
- [{ filters: { labels: { la: "" } } }, { metadata: { labels: { la: "ble" } } }, false],
682
-
683
- [{ filters: { labels: { la: "ble" } } }, {}, true],
684
- [{ filters: { labels: { la: "ble" } } }, { metadata: { labels: { la: "" } } }, true],
685
- [{ filters: { labels: { la: "ble" } } }, { metadata: { labels: { la: "ble" } } }, false],
686
-
687
- [{ filters: { labels: { l: "a", b: "le" } } }, { metadata: { labels: { l: "" } } }, true],
688
- [{ filters: { labels: { l: "a", b: "le" } } }, { metadata: { labels: { l: "a" } } }, true],
689
- [{ filters: { labels: { l: "a", b: "le" } } }, { metadata: { labels: { l: "a", b: "" } } }, true],
690
- [{ filters: { labels: { l: "a", b: "le" } } }, { metadata: { labels: { l: "a", b: "le" } } }, false],
691
- ])("given binding %j and object %j, returns %s", (bnd, obj, expected) => {
692
- const binding = bnd as DeepPartial<Binding>;
693
- const object = obj as DeepPartial<Binding>;
694
-
695
- const result = sut.mismatchedLabels(binding, object);
696
-
697
- expect(result).toBe(expected);
698
- });
699
- });
700
-
701
- describe("uncarryableNamespace", () => {
702
- //[ capa ns's, KubernetesObject, result ]
703
- it.each([
704
- [[], {}, false],
705
- [[], { metadata: { namespace: "namespace" } }, false],
706
-
707
- [["namespace"], {}, false],
708
- [["namespace"], { metadata: {} }, false],
709
- [["namespace"], { metadata: { namespace: null } }, false],
710
- [["namespace"], { metadata: { namespace: "" } }, false],
711
- [["namespace"], { metadata: { namespace: "incorrect" } }, true],
712
- [["namespace"], { metadata: { namespace: "namespace" } }, false],
713
-
714
- [["name", "space"], {}, false],
715
- [["name", "space"], { metadata: {} }, false],
716
- [["name", "space"], { metadata: { namespace: null } }, false],
717
- [["name", "space"], { metadata: { namespace: "" } }, false],
718
- [["name", "space"], { metadata: { namespace: "incorrect" } }, true],
719
- [["name", "space"], { metadata: { namespace: "name" } }, false],
720
- [["name", "space"], { metadata: { namespace: "space" } }, false],
721
- ])("given capabilityNamespaces %j and object %j, returns %s", (nss, obj, expected) => {
722
- const object = obj as DeepPartial<Binding>;
723
-
724
- const result = sut.uncarryableNamespace(nss, object);
725
-
726
- expect(result).toBe(expected);
727
- });
728
- });
729
-
730
- describe("carriesIgnoredNamespace", () => {
731
- //[ ignored ns's, KubernetesObject, result ]
732
- it.each([
733
- [[], {}, false],
734
- [[], { metadata: { namespace: "whatever" } }, false],
735
-
736
- [["ignored"], {}, false],
737
- [["ignored"], { metadata: {} }, false],
738
- [["ignored"], { metadata: { namespace: null } }, false],
739
- [["ignored"], { metadata: { namespace: "" } }, false],
740
- [["ignored"], { metadata: { namespace: "namespace" } }, false],
741
- [["ignored"], { metadata: { namespace: "ignored" } }, true],
742
-
743
- [["ign", "ored"], {}, false],
744
- [["ign", "ored"], { metadata: {} }, false],
745
- [["ign", "ored"], { metadata: { namespace: null } }, false],
746
- [["ign", "ored"], { metadata: { namespace: "" } }, false],
747
- [["ign", "ored"], { metadata: { namespace: "ign" } }, true],
748
- [["ign", "ored"], { metadata: { namespace: "ored" } }, true],
749
- [["ign", "ored"], { metadata: { namespace: "namespace" } }, false],
750
- ])("given capabilityNamespaces %j and object %j, returns %s", (nss, obj, expected) => {
751
- const object = obj as DeepPartial<Binding>;
752
-
753
- const result = sut.carriesIgnoredNamespace(nss, object);
754
-
755
- expect(result).toBe(expected);
756
- });
757
- });
758
-
759
- describe("unbindableNamespaces", () => {
760
- //[ capa ns's, Binding, result ]
761
- it.each([
762
- [[], {}, false],
763
- [[], { metadata: { namespace: "namespace" } }, false],
764
-
765
- [["namespace"], {}, false],
766
- [["namespace"], { filters: {} }, false],
767
- [["namespace"], { filters: { namespaces: null } }, false],
768
- [["namespace"], { filters: { namespaces: [] } }, false],
769
- [["namespace"], { filters: { namespaces: ["incorrect"] } }, true],
770
- [["namespace"], { filters: { namespaces: ["namespace"] } }, false],
771
-
772
- [["name", "space"], {}, false],
773
- [["name", "space"], { filters: {} }, false],
774
- [["name", "space"], { filters: { namespaces: null } }, false],
775
- [["name", "space"], { filters: { namespaces: [] } }, false],
776
- [["name", "space"], { filters: { namespaces: ["namespace"] } }, true],
777
- [["name", "space"], { filters: { namespaces: ["name"] } }, false],
778
- [["name", "space"], { filters: { namespaces: ["space"] } }, false],
779
- [["name", "space"], { filters: { namespaces: ["incorrect", "space"] } }, true],
780
- ])("given capabilityNamespaces %j and binding %j, returns %s", (nss, bnd, expected) => {
781
- const binding = bnd as DeepPartial<Binding>;
782
-
783
- const result = sut.unbindableNamespaces(nss, binding);
784
-
785
- expect(result).toBe(expected);
786
- });
787
- });
788
-
789
- describe("definedEvent", () => {
790
- //[ Binding, result ]
791
- it.each([
792
- [{}, ""],
793
- [{ event: "" }, ""],
794
- [{ event: "nonsense" }, "nonsense"],
795
- [{ event: Event.Create }, Event.Create],
796
- [{ event: Event.CreateOrUpdate }, Event.CreateOrUpdate],
797
- [{ event: Event.Update }, Event.Update],
798
- [{ event: Event.Delete }, Event.Delete],
799
- ])("given %j, returns '%s'", (given, expected) => {
800
- const binding = given as DeepPartial<Binding>;
801
-
802
- const result = sut.definedEvent(binding);
803
-
804
- expect(result).toEqual(expected);
805
- });
806
- });
807
-
808
- describe("definesDelete", () => {
809
- //[ Binding, result ]
810
- it.each([
811
- [{}, false],
812
- [{ event: "" }, false],
813
- [{ event: "nonsense" }, false],
814
- [{ event: Event.Create }, false],
815
- [{ event: Event.CreateOrUpdate }, false],
816
- [{ event: Event.Update }, false],
817
- [{ event: Event.Delete }, true],
818
- ])("given %j, returns %s", (given, expected) => {
819
- const binding = given as DeepPartial<Binding>;
820
-
821
- const result = sut.definesDelete(binding);
822
-
823
- expect(result).toEqual(expected);
824
- });
825
- });
826
-
827
- describe("misboundDeleteWithDeletionTimestamp", () => {
828
- //[ Binding, result ]
829
- it.each([
830
- [{}, false],
831
- [{ event: "" }, false],
832
- [{ event: "nonsense" }, false],
833
- [{ event: Event.Create }, false],
834
- [{ event: Event.CreateOrUpdate }, false],
835
- [{ event: Event.Update }, false],
836
- [{ event: Event.Delete }, false],
837
- [{ event: Event.Delete, filters: {} }, false],
838
- [{ event: Event.Delete, filters: { deletionTimestamp: false } }, false],
839
- [{ event: Event.Delete, filters: { deletionTimestamp: true } }, true],
840
- ])("given %j, returns %s", (given, expected) => {
841
- const binding = given as DeepPartial<Binding>;
842
-
843
- const result = sut.misboundDeleteWithDeletionTimestamp(binding);
844
-
845
- expect(result).toEqual(expected);
846
- });
847
- });
848
-
849
- describe("operationMatchesEvent", () => {
850
- //[ Operation, Event, result ]
851
- it.each([
852
- ["", "", true],
853
- ["", Event.Create, false],
854
- [Operation.CREATE, "", false],
855
-
856
- [Operation.CREATE, Event.Create, true],
857
- [Operation.CREATE, Event.Update, false],
858
- [Operation.CREATE, Event.Delete, false],
859
- [Operation.CREATE, Event.CreateOrUpdate, true],
860
- [Operation.CREATE, Event.Any, true],
861
-
862
- [Operation.UPDATE, Event.Create, false],
863
- [Operation.UPDATE, Event.Update, true],
864
- [Operation.UPDATE, Event.Delete, false],
865
- [Operation.UPDATE, Event.CreateOrUpdate, true],
866
- [Operation.UPDATE, Event.Any, true],
867
-
868
- [Operation.DELETE, Event.Create, false],
869
- [Operation.DELETE, Event.Update, false],
870
- [Operation.DELETE, Event.Delete, true],
871
- [Operation.DELETE, Event.CreateOrUpdate, false],
872
- [Operation.DELETE, Event.Any, true],
873
-
874
- [Operation.CONNECT, Event.Create, false],
875
- [Operation.CONNECT, Event.Update, false],
876
- [Operation.CONNECT, Event.Delete, false],
877
- [Operation.CONNECT, Event.CreateOrUpdate, false],
878
- [Operation.CONNECT, Event.Any, true],
879
- ])("given operation %s and event %s, returns %s", (op, evt, expected) => {
880
- const result = sut.operationMatchesEvent(op, evt);
881
-
882
- expect(result).toEqual(expected);
883
- });
884
- });
885
-
886
- describe("declaredOperation", () => {
887
- //[ AdmissionRequest, result ]
888
- it.each([
889
- [{}, ""],
890
- [{ operation: null }, ""],
891
- [{ operation: "" }, ""],
892
- [{ operation: "operation" }, "operation"],
893
- [{ operation: Operation.CONNECT }, Operation.CONNECT],
894
- [{ operation: Operation.CREATE }, Operation.CREATE],
895
- [{ operation: Operation.UPDATE }, Operation.UPDATE],
896
- [{ operation: Operation.DELETE }, Operation.DELETE],
897
- ])("given %j, returns '%s'", (given, expected) => {
898
- const request = given as DeepPartial<AdmissionRequest>;
899
-
900
- const result = sut.declaredOperation(request);
901
-
902
- expect(result).toEqual(expected);
903
- });
904
- });
905
-
906
- describe("mismatchedEvent", () => {
907
- //[ Binding, AdmissionRequest, result ]
908
- it.each([
909
- [{}, {}, false],
910
- [{}, { operation: Operation.CREATE }, true],
911
- [{ event: Event.Create }, {}, true],
912
-
913
- [{ event: Event.Create }, { operation: Operation.CREATE }, false],
914
- [{ event: Event.Update }, { operation: Operation.CREATE }, true],
915
- [{ event: Event.Delete }, { operation: Operation.CREATE }, true],
916
- [{ event: Event.CreateOrUpdate }, { operation: Operation.CREATE }, false],
917
- [{ event: Event.Any }, { operation: Operation.CREATE }, false],
918
-
919
- [{ event: Event.Create }, { operation: Operation.UPDATE }, true],
920
- [{ event: Event.Update }, { operation: Operation.UPDATE }, false],
921
- [{ event: Event.Delete }, { operation: Operation.UPDATE }, true],
922
- [{ event: Event.CreateOrUpdate }, { operation: Operation.UPDATE }, false],
923
- [{ event: Event.Any }, { operation: Operation.UPDATE }, false],
924
-
925
- [{ event: Event.Create }, { operation: Operation.DELETE }, true],
926
- [{ event: Event.Update }, { operation: Operation.DELETE }, true],
927
- [{ event: Event.Delete }, { operation: Operation.DELETE }, false],
928
- [{ event: Event.CreateOrUpdate }, { operation: Operation.DELETE }, true],
929
- [{ event: Event.Any }, { operation: Operation.DELETE }, false],
930
-
931
- [{ event: Event.Create }, { operation: Operation.CONNECT }, true],
932
- [{ event: Event.Update }, { operation: Operation.CONNECT }, true],
933
- [{ event: Event.Delete }, { operation: Operation.CONNECT }, true],
934
- [{ event: Event.CreateOrUpdate }, { operation: Operation.CONNECT }, true],
935
- [{ event: Event.Any }, { operation: Operation.CONNECT }, false],
936
- ])("given binding %j and admission request %j, returns %s", (bnd, req, expected) => {
937
- const binding = bnd as DeepPartial<Binding>;
938
- const request = req as DeepPartial<AdmissionRequest>;
939
-
940
- const result = sut.mismatchedEvent(binding, request);
941
-
942
- expect(result).toEqual(expected);
943
- });
944
- });
945
-
946
- describe("definedGroup", () => {
947
- //[ Binding, result ]
948
- it.each([
949
- [{}, ""],
950
- [{ kind: null }, ""],
951
- [{ kind: {} }, ""],
952
- [{ kind: { group: null } }, ""],
953
- [{ kind: { group: "" } }, ""],
954
- [{ kind: { group: "group" } }, "group"],
955
- ])("given %j, returns '%s'", (given, expected) => {
956
- const binding = given as DeepPartial<Binding>;
957
-
958
- const result = sut.definedGroup(binding);
959
-
960
- expect(result).toEqual(expected);
961
- });
962
- });
963
-
964
- describe("definesGroup", () => {
965
- //[ Binding, result ]
966
- it.each([
967
- [{}, false],
968
- [{ kind: null }, false],
969
- [{ kind: {} }, false],
970
- [{ kind: { group: null } }, false],
971
- [{ kind: { group: "" } }, false],
972
- [{ kind: { group: "group" } }, true],
973
- ])("given %j, returns %s", (given, expected) => {
974
- const binding = given as DeepPartial<Binding>;
975
-
976
- const result = sut.definesGroup(binding);
977
-
978
- expect(result).toEqual(expected);
979
- });
980
- });
981
-
982
- describe("declaredGroup", () => {
983
- //[ AdmissionRequest, result ]
984
- it.each([
985
- [{}, ""],
986
- [{ kind: null }, ""],
987
- [{ kind: {} }, ""],
988
- [{ kind: { group: null } }, ""],
989
- [{ kind: { group: "" } }, ""],
990
- [{ kind: { group: "group" } }, "group"],
991
- ])("given %j, returns '%s'", (given, expected) => {
992
- const request = given as DeepPartial<AdmissionRequest>;
993
-
994
- const result = sut.declaredGroup(request);
995
-
996
- expect(result).toEqual(expected);
997
- });
998
- });
999
-
1000
- describe("mismatchedGroup", () => {
1001
- //[ Binding, AdmissionRequest, result ]
1002
- it.each([
1003
- [{}, {}, false],
1004
- [{}, { kind: { group: "group" } }, false],
1005
- [{ kind: { group: "group" } }, {}, true],
1006
- [{ kind: { group: "group" } }, { kind: { group: "wrong" } }, true],
1007
- [{ kind: { group: "group" } }, { kind: { group: "group" } }, false],
1008
- ])("given binding %j and admission request %j, returns %s", (bnd, req, expected) => {
1009
- const binding = bnd as DeepPartial<Binding>;
1010
- const request = req as DeepPartial<AdmissionRequest>;
1011
-
1012
- const result = sut.mismatchedGroup(binding, request);
1013
-
1014
- expect(result).toEqual(expected);
1015
- });
1016
- });
1017
-
1018
- describe("definedVersion", () => {
1019
- //[ Binding, result ]
1020
- it.each([
1021
- [{}, ""],
1022
- [{ kind: null }, ""],
1023
- [{ kind: {} }, ""],
1024
- [{ kind: { version: null } }, ""],
1025
- [{ kind: { version: "" } }, ""],
1026
- [{ kind: { version: "version" } }, "version"],
1027
- ])("given %j, returns '%s'", (given, expected) => {
1028
- const binding = given as DeepPartial<Binding>;
1029
-
1030
- const result = sut.definedVersion(binding);
1031
-
1032
- expect(result).toEqual(expected);
1033
- });
1034
- });
1035
-
1036
- describe("definesVersion", () => {
1037
- //[ Binding, result ]
1038
- it.each([
1039
- [{}, false],
1040
- [{ kind: null }, false],
1041
- [{ kind: {} }, false],
1042
- [{ kind: { version: null } }, false],
1043
- [{ kind: { version: "" } }, false],
1044
- [{ kind: { version: "version" } }, true],
1045
- ])("given %j, returns %s", (given, expected) => {
1046
- const binding = given as DeepPartial<Binding>;
1047
-
1048
- const result = sut.definesVersion(binding);
1049
-
1050
- expect(result).toEqual(expected);
1051
- });
1052
- });
1053
-
1054
- describe("declaredVersion", () => {
1055
- //[ AdmissionRequest, result ]
1056
- it.each([
1057
- [{}, ""],
1058
- [{ kind: null }, ""],
1059
- [{ kind: {} }, ""],
1060
- [{ kind: { version: null } }, ""],
1061
- [{ kind: { version: "" } }, ""],
1062
- [{ kind: { version: "version" } }, "version"],
1063
- ])("given %j, returns '%s'", (given, expected) => {
1064
- const request = given as DeepPartial<AdmissionRequest>;
1065
-
1066
- const result = sut.declaredVersion(request);
1067
-
1068
- expect(result).toEqual(expected);
1069
- });
1070
- });
1071
-
1072
- describe("mismatchedVersion", () => {
1073
- //[ Binding, AdmissionRequest, result ]
1074
- it.each([
1075
- [{}, {}, false],
1076
- [{}, { kind: { version: "version" } }, false],
1077
- [{ kind: { version: "version" } }, {}, true],
1078
- [{ kind: { version: "version" } }, { kind: { version: "wrong" } }, true],
1079
- [{ kind: { version: "version" } }, { kind: { version: "version" } }, false],
1080
- ])("given binding %j and admission request %j, returns %s", (bnd, req, expected) => {
1081
- const binding = bnd as DeepPartial<Binding>;
1082
- const request = req as DeepPartial<AdmissionRequest>;
1083
-
1084
- const result = sut.mismatchedVersion(binding, request);
1085
-
1086
- expect(result).toEqual(expected);
1087
- });
1088
- });
1089
-
1090
- describe("definedKind", () => {
1091
- //[ Binding, result ]
1092
- it.each([
1093
- [{}, ""],
1094
- [{ kind: null }, ""],
1095
- [{ kind: {} }, ""],
1096
- [{ kind: { kind: null } }, ""],
1097
- [{ kind: { kind: "" } }, ""],
1098
- [{ kind: { kind: "kind" } }, "kind"],
1099
- ])("given %j, returns '%s'", (given, expected) => {
1100
- const binding = given as DeepPartial<Binding>;
1101
-
1102
- const result = sut.definedKind(binding);
1103
-
1104
- expect(result).toEqual(expected);
1105
- });
1106
- });
1107
-
1108
- describe("definesKind", () => {
1109
- //[ Binding, result ]
1110
- it.each([
1111
- [{}, false],
1112
- [{ kind: null }, false],
1113
- [{ kind: {} }, false],
1114
- [{ kind: { kind: null } }, false],
1115
- [{ kind: { kind: "" } }, false],
1116
- [{ kind: { kind: "kind" } }, true],
1117
- ])("given %j, returns %s", (given, expected) => {
1118
- const binding = given as DeepPartial<Binding>;
1119
-
1120
- const result = sut.definesKind(binding);
1121
-
1122
- expect(result).toEqual(expected);
1123
- });
1124
- });
1125
-
1126
- describe("declaredKind", () => {
1127
- //[ AdmissionRequest, result ]
1128
- it.each([
1129
- [{}, ""],
1130
- [{ kind: null }, ""],
1131
- [{ kind: {} }, ""],
1132
- [{ kind: { kind: null } }, ""],
1133
- [{ kind: { kind: "" } }, ""],
1134
- [{ kind: { kind: "kind" } }, "kind"],
1135
- ])("given %j, returns '%s'", (given, expected) => {
1136
- const request = given as DeepPartial<AdmissionRequest>;
1137
-
1138
- const result = sut.declaredKind(request);
1139
-
1140
- expect(result).toEqual(expected);
1141
- });
1142
- });
1143
-
1144
- describe("mismatchedKind", () => {
1145
- //[ Binding, AdmissionRequest, result ]
1146
- it.each([
1147
- [{}, {}, false],
1148
- [{}, { kind: { kind: "kind" } }, false],
1149
- [{ kind: { kind: "kind" } }, {}, true],
1150
- [{ kind: { kind: "kind" } }, { kind: { kind: "wrong" } }, true],
1151
- [{ kind: { kind: "kind" } }, { kind: { kind: "kind" } }, false],
1152
- ])("given binding %j and admission request %j, returns %s", (bnd, req, expected) => {
1153
- const binding = bnd as DeepPartial<Binding>;
1154
- const request = req as DeepPartial<AdmissionRequest>;
1155
-
1156
- const result = sut.mismatchedKind(binding, request);
1157
-
1158
- expect(result).toEqual(expected);
1159
- });
1160
- });
1161
-
1162
- describe("definedCategory", () => {
1163
- //[ Binding, result ]
1164
- it.each([
1165
- [{}, ""],
1166
- [{ isValidate: true }, "Validate"],
1167
- [{ isMutate: true }, "Mutate"],
1168
- [{ isWatch: true }, "Watch"],
1169
- [{ isFinalize: true, isWatch: true }, "Finalize"],
1170
- ])("given %j, returns %s", (given, expected) => {
1171
- const binding = given as DeepPartial<Binding>;
1172
-
1173
- const result = sut.definedCategory(binding);
1174
-
1175
- expect(result).toEqual(expected);
1176
- });
1177
- });
1178
-
1179
- describe("definedCallback", () => {
1180
- const validateCallback = () => {};
1181
- const mutateCallback = () => {};
1182
- const watchCallback = () => {};
1183
- const finalizeCallback = () => {};
1184
-
1185
- //[ Binding, result ]
1186
- it.each([
1187
- [{}, null],
1188
- [{ isValidate: true, validateCallback }, validateCallback],
1189
- [{ isMutate: true, mutateCallback }, mutateCallback],
1190
- [{ isWatch: true, watchCallback }, watchCallback],
1191
- [{ isFinalize: true, finalizeCallback }, finalizeCallback],
1192
- ])("given %j, returns %s", (given, expected) => {
1193
- const binding = given as DeepPartial<Binding>;
1194
-
1195
- const result = sut.definedCallback(binding);
1196
-
1197
- expect(result).toEqual(expected);
1198
- });
1199
- });
1200
-
1201
- describe("definedCallbackName", () => {
1202
- const validateCallback = () => {};
1203
- const mutateCallback = () => {};
1204
- const watchCallback = () => {};
1205
- const finalizeCallback = () => {};
1206
-
1207
- //[ Binding, result ]
1208
- it.each([
1209
- [{}, ""],
1210
- [{ isValidate: true, validateCallback }, "validateCallback"],
1211
- [{ isMutate: true, mutateCallback }, "mutateCallback"],
1212
- [{ isWatch: true, watchCallback }, "watchCallback"],
1213
- [{ isFinalize: true, finalizeCallback }, "finalizeCallback"],
1214
- ])("given %j, returns %s", (given, expected) => {
1215
- const binding = given as DeepPartial<Binding>;
1216
-
1217
- const result = sut.definedCallbackName(binding);
1218
-
1219
- expect(result).toEqual(expected);
1220
- });
1221
- });
1222
-
1223
- describe("declaredUid", () => {
1224
- //[ AdmissionRequest, result ]
1225
- it.each([
1226
- [{}, ""],
1227
- [{ uid: null }, ""],
1228
- [{ uid: "uid" }, "uid"],
1229
- ])("given %j, returns '%s'", (given, expected) => {
1230
- const request = given as DeepPartial<AdmissionRequest>;
1231
-
1232
- const result = sut.declaredUid(request);
1233
-
1234
- expect(result).toEqual(expected);
1235
- });
1236
- });