Skip to content

Commit 696d935

Browse files
authored
Fixes GitOps route API environment status for new element (#564)
1 parent 18b0221 commit 696d935

File tree

2 files changed

+77
-2
lines changed

2 files changed

+77
-2
lines changed

src/services/gitops/push-new.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { EnvType } from '../../models/environment.js';
12
import { getComponents } from '../component.js';
23
import { createStrategy } from '../config-strategy.js';
34
import { addComponent, createConfig, getConfig } from '../config.js';
@@ -18,11 +19,15 @@ export async function processNew(domain, change, environment) {
1819
async function processNewGroup(domain, change, environment) {
1920
const admin = { _id: domain.owner };
2021
const content = change.content;
22+
23+
const activated = new Map().set(EnvType.DEFAULT, false);
24+
activated.set(environment, getNewValue(content.activated, true));
25+
2126
const group = await createGroup({
2227
domain: domain._id,
2328
name: content.name,
2429
description: getNewValue(content.description, ''),
25-
activated: new Map().set(environment, getNewValue(content.activated, true)),
30+
activated,
2631
owner: domain.owner
2732
}, admin);
2833

@@ -42,12 +47,15 @@ async function processNewConfig(domain, change, environment) {
4247
const admin = { _id: domain.owner };
4348
const group = await getGroupConfig({ domain: domain._id, name: path[0] });
4449

50+
const activated = new Map().set(EnvType.DEFAULT, false);
51+
activated.set(environment, getNewValue(content.activated, true));
52+
4553
const newConfig = {
4654
domain: domain._id,
4755
group: group._id,
4856
key: content.key,
4957
description: getNewValue(content.description, ''),
50-
activated: new Map().set(environment, getNewValue(content.activated, true)),
58+
activated,
5159
owner: domain.owner,
5260
};
5361

tests/gitops.test.js

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,39 @@ describe('GitOps - Push New', () => {
112112
expect(group.description).toBe('New Group Description');
113113
});
114114

115+
test('GITOPS_SUITE - Should push changes - New Group for environment', async () => {
116+
const token = generateToken('30s');
117+
118+
const lastUpdate = Date.now();
119+
const req = await request(app)
120+
.post('/gitops/v1/push')
121+
.set('Authorization', `Bearer ${token}`)
122+
.send({
123+
environment: 'staging',
124+
changes: [{
125+
action: 'NEW',
126+
diff: 'GROUP',
127+
path: [],
128+
content: {
129+
name: 'New Group Staging',
130+
description: 'New Group Description',
131+
activated: true
132+
}
133+
}]
134+
})
135+
.expect(200);
136+
137+
expect(req.body.message).toBe('Changes applied successfully');
138+
expect(req.body.version).toBeGreaterThan(lastUpdate);
139+
140+
// Check if the changes were applied
141+
const group = await GroupConfig.findOne({ name: 'New Group Staging', domain: domainId }).lean().exec();
142+
expect(group).not.toBeNull();
143+
expect(group.activated['staging']).toBe(true);
144+
expect(group.activated[EnvType.DEFAULT]).toBeDefined();
145+
expect(group.description).toBe('New Group Description');
146+
});
147+
115148
test('GITOPS_SUITE - Should push changes - New Group and Switcher', async () => {
116149
const token = generateToken('30s');
117150

@@ -189,6 +222,40 @@ describe('GitOps - Push New', () => {
189222
expect(config.components).toHaveLength(0);
190223
});
191224

225+
test('GITOPS_SUITE - Should push changes - New Switcher for environment', async () => {
226+
const token = generateToken('30s');
227+
228+
const lastUpdate = Date.now();
229+
const req = await request(app)
230+
.post('/gitops/v1/push')
231+
.set('Authorization', `Bearer ${token}`)
232+
.send({
233+
environment: 'staging',
234+
changes: [{
235+
action: 'NEW',
236+
diff: 'CONFIG',
237+
path: [
238+
'Group Test'
239+
],
240+
content: {
241+
key: 'NEW_SWITCHER_STAGING',
242+
activated: true
243+
}
244+
}]
245+
})
246+
.expect(200);
247+
248+
expect(req.body.message).toBe('Changes applied successfully');
249+
expect(req.body.version).toBeGreaterThan(lastUpdate);
250+
251+
// Check if the changes were applied
252+
const config = await Config.findOne({ key: 'NEW_SWITCHER_STAGING', domain: domainId }).lean().exec();
253+
expect(config).not.toBeNull();
254+
expect(config.activated['staging']).toBe(true);
255+
expect(config.activated[EnvType.DEFAULT]).toBeDefined();
256+
expect(config.components).toHaveLength(0);
257+
});
258+
192259
test('GITOPS_SUITE - Should push changes - New Switcher and Relay', async () => {
193260
const token = generateToken('30s');
194261

0 commit comments

Comments
 (0)