Skip to content

Commit 325943b

Browse files
author
Kanishka
committed
fix: Update configuration controller, DTO, and tests for sandbox audit functionality
1 parent 28edfe3 commit 325943b

File tree

3 files changed

+25
-20
lines changed

3 files changed

+25
-20
lines changed

src/controllers/configuration.js

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,7 @@ function ConfigurationController(ctx) {
8888
// eslint-disable-next-line no-console
8989
console.log('[getLatest] Configuration version:', configuration.getVersion());
9090
// eslint-disable-next-line no-console
91-
console.log('[getLatest] Configuration state:', configuration.state);
92-
// eslint-disable-next-line no-console
93-
console.log('[getLatest] Configuration state.sandboxAudits:', configuration.state?.sandboxAudits);
91+
console.log('[getLatest] Configuration getSandboxAudits():', configuration.getSandboxAudits());
9492
const result = ConfigurationDto.toJSON(configuration);
9593
// eslint-disable-next-line no-console
9694
console.log('[getLatest] DTO result includes sandboxAudits:', !!result.sandboxAudits);
@@ -120,11 +118,6 @@ function ConfigurationController(ctx) {
120118
return notFound('Configuration not found');
121119
}
122120

123-
// Ensure state exists before updating
124-
if (!config.state) {
125-
config.state = {};
126-
}
127-
128121
// Update sandbox configurations for each audit type
129122
Object.keys(sandboxConfigs).forEach((auditType) => {
130123
// eslint-disable-next-line no-console
@@ -134,7 +127,7 @@ function ConfigurationController(ctx) {
134127

135128
// Save the updated configuration
136129
// eslint-disable-next-line no-console
137-
console.log('Saving updated configuration with sandbox audits:', config.state?.sandboxAudits);
130+
console.log('Saving updated configuration with sandbox audits:', config.getSandboxAudits());
138131
await config.save();
139132
// eslint-disable-next-line no-console
140133
console.log('[updateSandboxConfig] Configuration saved successfully');

src/dto/configuration.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ export const ConfigurationDto = {
2222
*/
2323
toJSON: (configuration) => {
2424
// eslint-disable-next-line no-console
25-
console.log('[ConfigurationDto] Configuration state?.sandboxAudits:', configuration.state?.sandboxAudits);
25+
console.log('[ConfigurationDto] Configuration getSandboxAudits():', configuration.getSandboxAudits());
2626

2727
const result = {
2828
version: configuration.getVersion(),
2929
jobs: configuration.getJobs(),
3030
...(configuration.getHandlers() ? { handlers: configuration.getHandlers() } : {}),
3131
queues: configuration.getQueues(),
3232
...(configuration.getSlackRoles() ? { slackRoles: configuration.getSlackRoles() } : {}),
33-
...(configuration.state?.sandboxAudits
34-
? { sandboxAudits: configuration.state.sandboxAudits }
33+
...(configuration.getSandboxAudits()
34+
? { sandboxAudits: configuration.getSandboxAudits() }
3535
: {}),
3636
};
3737
return result;

test/controllers/configurations.test.js

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ describe('Configurations Controller', () => {
4040
getSlackRoles: () => {},
4141
getEnabledSandboxAudits: () => [],
4242
getSandboxAuditConfig: () => null,
43+
getSandboxAudits: () => null,
44+
setSandboxAudits: () => {},
4345
},
4446
{
4547
getVersion: () => 2,
@@ -89,6 +91,13 @@ describe('Configurations Controller', () => {
8991
if (auditType === 'meta-tags') return { expire: '15' };
9092
return null;
9193
},
94+
getSandboxAudits: () => ({
95+
enabledAudits: {
96+
cwv: { expire: '10' },
97+
'meta-tags': { expire: '15' },
98+
},
99+
}),
100+
setSandboxAudits: () => {},
92101
state: {
93102
sandboxAudits: {
94103
enabledAudits: {
@@ -264,6 +273,8 @@ describe('Configurations Controller', () => {
264273
mockConfig = {
265274
state: {},
266275
updateSandboxAuditConfig: sandbox.stub(),
276+
getSandboxAudits: sandbox.stub().returns({ enabledAudits: {} }),
277+
setSandboxAudits: sandbox.stub(),
267278
save: sandbox.stub().resolves(mockConfig),
268279
};
269280

@@ -384,27 +395,28 @@ describe('Configurations Controller', () => {
384395
expect(error.message).to.include('Error updating sandbox configuration: Save failed');
385396
});
386397

387-
it('should handle configuration with undefined state', async () => {
398+
it('should handle configuration with null sandbox audits', async () => {
388399
context.attributes.authInfo.withProfile({ is_admin: true });
389400

390-
// Create a config without state property to test our fix
391-
const configWithoutState = {
401+
// Create a config with null sandbox audits to test our fix
402+
const configWithNullSandboxAudits = {
392403
updateSandboxAuditConfig: sandbox.stub(),
404+
getSandboxAudits: sandbox.stub().returns(null),
405+
setSandboxAudits: sandbox.stub(),
393406
save: sandbox.stub().resolves(),
394407
};
395-
mockDataAccess.Configuration.findLatest.resolves(configWithoutState);
408+
mockDataAccess.Configuration.findLatest.resolves(configWithNullSandboxAudits);
396409
configurationsController = ConfigurationsController(context);
397410

398411
const result = await configurationsController.updateSandboxConfig({
399412
data: { sandboxConfigs: { cwv: { expire: '10' } } },
400413
});
401414
const response = await result.json();
402415

403-
// Should initialize state and succeed
416+
// Should succeed with null sandbox audits
404417
expect(result.status).to.equal(200);
405-
expect(configWithoutState.state).to.deep.equal({});
406-
expect(configWithoutState.updateSandboxAuditConfig).to.have.been.calledWith('cwv', { expire: '10' });
407-
expect(configWithoutState.save).to.have.been.called;
418+
expect(configWithNullSandboxAudits.updateSandboxAuditConfig).to.have.been.calledWith('cwv', { expire: '10' });
419+
expect(configWithNullSandboxAudits.save).to.have.been.called;
408420
expect(response.message).to.equal('Sandbox configurations updated successfully');
409421
});
410422
});

0 commit comments

Comments
 (0)