forked from external-secrets/kubernetes-external-secrets
-
Notifications
You must be signed in to change notification settings - Fork 0
/
external-secret.test.js
113 lines (97 loc) · 2.8 KB
/
external-secret.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/* eslint-env mocha */
'use strict'
const { expect } = require('chai')
const sinon = require('sinon')
const { Readable } = require('stream')
const { getExternalSecretEvents } = require('./external-secret')
describe('getExternalSecretEvents', () => {
let kubeClientMock
let watchedNamespaces
let fakeCustomResourceManifest
let loggerMock
let externalsecrets
beforeEach(() => {
fakeCustomResourceManifest = {
spec: {
group: 'kubernetes-client.io',
names: {
plural: 'externalsecrets'
}
}
}
externalsecrets = {
getObjectStream: () => undefined
}
kubeClientMock = {
apis: {
'kubernetes-client.io': {
v1: {
watch: {
namespaces: () => {
return {
externalsecrets
}
},
externalsecrets
}
}
}
}
}
watchedNamespaces = []
loggerMock = sinon.mock()
loggerMock.info = sinon.stub()
loggerMock.warn = sinon.stub()
loggerMock.error = sinon.stub()
loggerMock.debug = sinon.stub()
})
it('gets a stream of external secret events', async () => {
const fakeExternalSecretObject = {
apiVersion: 'kubernetes-client.io/v1',
kind: 'ExternalSecret',
metadata: {
name: 'my-secret',
namespace: 'default'
},
spec: { backendType: 'secretsManager', data: [] }
}
const fakeStream = Readable.from([
{
type: 'MODIFIED',
object: fakeExternalSecretObject
},
{
type: 'ADDED',
object: fakeExternalSecretObject
},
{
type: 'DELETED',
object: fakeExternalSecretObject
},
{
type: 'DELETED_ALL'
}
])
fakeStream.end = sinon.stub()
externalsecrets.getObjectStream = () => fakeStream
const events = getExternalSecretEvents({
kubeClient: kubeClientMock,
watchedNamespaces: watchedNamespaces,
customResourceManifest: fakeCustomResourceManifest,
logger: loggerMock,
watchTimeout: 5000
})
const modifiedEvent = await events.next()
expect(modifiedEvent.value.type).is.equal('MODIFIED')
expect(modifiedEvent.value.object).is.deep.equal(fakeExternalSecretObject)
const addedEvent = await events.next()
expect(addedEvent.value.type).is.equal('ADDED')
expect(addedEvent.value.object).is.deep.equal(fakeExternalSecretObject)
const deletedEvent = await events.next()
expect(deletedEvent.value.type).is.equal('DELETED')
expect(deletedEvent.value.object).is.deep.equal(fakeExternalSecretObject)
const deletedAllEvent = await events.next()
expect(deletedAllEvent.value.type).is.equal('DELETED_ALL')
expect(deletedAllEvent.value.object).is.deep.equal(undefined)
})
})