mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-04 00:18:01 +01:00
fix: addon filtering supports wildcards
Co-authored-by: Simon Hornby <liquidwicked64@gmail.com>
This commit is contained in:
parent
ea8b78669e
commit
8848610e1e
@ -292,6 +292,65 @@ test('should filter events on environment if addon is setup to filter for it', a
|
|||||||
expect(events[0].event.data.name).toBe('some-toggle');
|
expect(events[0].event.data.name).toBe('some-toggle');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should support wildcard option for filtering addons', async () => {
|
||||||
|
const { addonService, stores } = getSetup();
|
||||||
|
const desiredProjects = ['desired', 'desired2'];
|
||||||
|
const otherProject = 'other';
|
||||||
|
const config = {
|
||||||
|
provider: 'simple',
|
||||||
|
enabled: true,
|
||||||
|
events: [FEATURE_CREATED],
|
||||||
|
projects: ['*'],
|
||||||
|
description: '',
|
||||||
|
parameters: {
|
||||||
|
url: 'http://localhost:wh',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
await addonService.createAddon(config, 'me@mail.com');
|
||||||
|
await stores.eventStore.store({
|
||||||
|
type: FEATURE_CREATED,
|
||||||
|
createdBy: 'some@user.com',
|
||||||
|
project: desiredProjects[0],
|
||||||
|
data: {
|
||||||
|
name: 'some-toggle',
|
||||||
|
enabled: false,
|
||||||
|
strategies: [{ name: 'default' }],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await stores.eventStore.store({
|
||||||
|
type: FEATURE_CREATED,
|
||||||
|
createdBy: 'some@user.com',
|
||||||
|
project: otherProject,
|
||||||
|
data: {
|
||||||
|
name: 'other-toggle',
|
||||||
|
enabled: false,
|
||||||
|
strategies: [{ name: 'default' }],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await stores.eventStore.store({
|
||||||
|
type: FEATURE_CREATED,
|
||||||
|
createdBy: 'some@user.com',
|
||||||
|
project: desiredProjects[1],
|
||||||
|
data: {
|
||||||
|
name: 'third-toggle',
|
||||||
|
enabled: false,
|
||||||
|
strategies: [{ name: 'default' }],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const simpleProvider = addonService.addonProviders.simple;
|
||||||
|
// @ts-expect-error
|
||||||
|
const events = simpleProvider.getEvents();
|
||||||
|
|
||||||
|
expect(events).toHaveLength(3);
|
||||||
|
expect(events[0].event.type).toBe(FEATURE_CREATED);
|
||||||
|
expect(events[0].event.data.name).toBe('some-toggle');
|
||||||
|
expect(events[1].event.type).toBe(FEATURE_CREATED);
|
||||||
|
expect(events[1].event.data.name).toBe('other-toggle');
|
||||||
|
expect(events[2].event.type).toBe(FEATURE_CREATED);
|
||||||
|
expect(events[2].event.data.name).toBe('third-toggle');
|
||||||
|
});
|
||||||
|
|
||||||
test('Should support filtering by both project and environment', async () => {
|
test('Should support filtering by both project and environment', async () => {
|
||||||
const { addonService, stores } = getSetup();
|
const { addonService, stores } = getSetup();
|
||||||
const desiredProjects = ['desired1', 'desired2', 'desired3'];
|
const desiredProjects = ['desired1', 'desired2', 'desired3'];
|
||||||
|
@ -17,6 +17,8 @@ const SUPPORTED_EVENTS = Object.keys(events).map((k) => events[k]);
|
|||||||
|
|
||||||
const MASKED_VALUE = '*****';
|
const MASKED_VALUE = '*****';
|
||||||
|
|
||||||
|
const WILDCARD_OPTION = '*';
|
||||||
|
|
||||||
interface ISensitiveParams {
|
interface ISensitiveParams {
|
||||||
[key: string]: string[];
|
[key: string]: string[];
|
||||||
}
|
}
|
||||||
@ -109,12 +111,14 @@ export default class AddonService {
|
|||||||
(addon) =>
|
(addon) =>
|
||||||
!addon.projects ||
|
!addon.projects ||
|
||||||
addon.projects.length == 0 ||
|
addon.projects.length == 0 ||
|
||||||
|
addon.projects[0] === WILDCARD_OPTION ||
|
||||||
addon.projects.includes(event.project),
|
addon.projects.includes(event.project),
|
||||||
)
|
)
|
||||||
.filter(
|
.filter(
|
||||||
(addon) =>
|
(addon) =>
|
||||||
!addon.environments ||
|
!addon.environments ||
|
||||||
addon.environments.length == 0 ||
|
addon.environments.length == 0 ||
|
||||||
|
addon.environments[0] === WILDCARD_OPTION ||
|
||||||
addon.environments.includes(event.environment),
|
addon.environments.includes(event.environment),
|
||||||
)
|
)
|
||||||
.filter((addon) => addonProviders[addon.provider])
|
.filter((addon) => addonProviders[addon.provider])
|
||||||
|
Loading…
Reference in New Issue
Block a user