Skip to content
This repository was archived by the owner on Jul 26, 2022. It is now read-only.

Commit 10e3991

Browse files
feat: allow permitted-key-name to be provided as list (#409)
* feat: allow permitted-key-name to be provided as list * refactor: construct regex only once Co-authored-by: Nabil BENDAFI <[email protected]>
1 parent e80d83d commit 10e3991

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

lib/poller.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,16 @@ class Poller {
205205

206206
const externalData = descriptor.data || descriptor.properties
207207
const namingConvention = namespace.metadata.annotations[this._namingPermittedAnnotation]
208+
let reNaming = new RegExp()
209+
if (Array.isArray(namingConvention)) {
210+
reNaming = new RegExp(namingConvention.join('|'))
211+
} else {
212+
reNaming = new RegExp(namingConvention)
213+
}
208214

209215
// Testing data property
210216
if (namingConvention && externalData) {
211217
externalData.forEach((secretProperty, index) => {
212-
const reNaming = new RegExp(namingConvention)
213218
if (!reNaming.test(secretProperty.key)) {
214219
allowed = false
215220
reason = `key name ${secretProperty.key} does not match naming convention ${namingConvention}`
@@ -224,7 +229,6 @@ class Poller {
224229
const externalDataFrom = descriptor.dataFrom
225230
if (namingConvention && externalDataFrom) {
226231
externalDataFrom.forEach((secretProperty, index) => {
227-
const reNaming = new RegExp(namingConvention)
228232
if (!reNaming.test(secretProperty)) {
229233
allowed = false
230234
reason = `key name ${secretProperty} does not match naming convention ${namingConvention}`

lib/poller.test.js

+35
Original file line numberDiff line numberDiff line change
@@ -876,6 +876,41 @@ describe('Poller', () => {
876876
]
877877
},
878878
permitted: false
879+
},
880+
{
881+
// test multiple regex data
882+
ns: { metadata: { annotations: { [namingPermittedAnnotation]: ['dev/team-a/.*', 'common/.*'] } } },
883+
descriptor: {
884+
data: [
885+
{ key: 'dev/team-a/ok-secret', name: 'somethingelse' },
886+
{ key: 'common/generic-secret', name: 'genericsecret' }
887+
]
888+
},
889+
permitted: true
890+
},
891+
{
892+
// test multiple regex data
893+
ns: { metadata: { annotations: { [namingPermittedAnnotation]: ['dev/team-a/.*', 'common/.*'] } } },
894+
descriptor: {
895+
data: [
896+
{ key: 'dev/team-b/nok-secret', name: 'somethingelse' },
897+
{ key: 'common/generic-secret', name: 'genericsecret' }
898+
]
899+
},
900+
permitted: false
901+
},
902+
{
903+
// test multiple regex data
904+
ns: { metadata: { annotations: { [namingPermittedAnnotation]: ['dev/team-b/.*', 'common/.*'] } } },
905+
descriptor: {
906+
data: [
907+
{ key: 'common/generic-secret', name: 'genericsecret' }
908+
],
909+
dataFrom: [
910+
'common/generic-secret'
911+
]
912+
},
913+
permitted: true
879914
}
880915
]
881916

0 commit comments

Comments
 (0)