Skip to content

Commit 552d470

Browse files
[backend] WIP Update model: authorized members activation via settings(#4538)
1 parent 6752d48 commit 552d470

File tree

2 files changed

+37
-16
lines changed

2 files changed

+37
-16
lines changed

opencti-platform/opencti-graphql/src/modules/case/case-incident/case-incident.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type { ModuleDefinition } from '../../../schema/module';
55
import { registerDefinition } from '../../../schema/module';
66
import convertCaseIncidentToStix from './case-incident-converter';
77
import { createdBy, objectAssignee, objectMarking, objectParticipant } from '../../../schema/stixRefRelationship';
8+
import { authorizedMembers } from '../../../schema/attribute-definition';
89

910
const CASE_INCIDENT_DEFINITION: ModuleDefinition<StoreEntityCaseIncident, StixCaseIncident> = {
1011
type: {
@@ -28,6 +29,7 @@ const CASE_INCIDENT_DEFINITION: ModuleDefinition<StoreEntityCaseIncident, StixCa
2829
{ name: 'severity', label: 'Severity', type: 'string', format: 'vocabulary', vocabularyCategory: 'case_severity_ov', mandatoryType: 'customizable', editDefault: true, multiple: false, upsert: true, isFilterable: true },
2930
{ name: 'priority', label: 'Priority', type: 'string', format: 'vocabulary', vocabularyCategory: 'case_priority_ov', mandatoryType: 'customizable', editDefault: true, multiple: false, upsert: true, isFilterable: true },
3031
{ name: 'response_types', label: 'Incident response type', type: 'string', format: 'vocabulary', vocabularyCategory: 'incident_response_types_ov', mandatoryType: 'customizable', editDefault: true, multiple: true, upsert: true, isFilterable: true },
32+
{ ...authorizedMembers, editDefault: true }
3133
],
3234
relations: [],
3335
relationsRefs: [createdBy, objectMarking, objectAssignee, objectParticipant],

opencti-platform/opencti-graphql/tests/02-integration/02-resolvers/case-incident-response-test.ts

+35-16
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { describe, it, expect } from 'vitest';
22
import gql from 'graphql-tag';
33
import { ADMIN_USER, queryAsAdmin } from '../../utils/testQuery';
44
import type { CaseIncident } from '../../../src/generated/graphql';
5+
import { ENTITY_TYPE_CONTAINER_CASE_INCIDENT } from '../../../src/modules/case/case-incident/case-incident-types';
56

67
const CREATE_QUERY = gql`
78
mutation CaseIncidentAdd($input: CaseIncidentAddInput!) {
@@ -12,6 +13,7 @@ const CREATE_QUERY = gql`
1213
description
1314
authorized_members {
1415
id
16+
access_right
1517
}
1618
}
1719
}
@@ -134,9 +136,21 @@ describe('Case Incident Response resolver standard behavior', () => {
134136

135137
describe('Case Incident Response authorized_members standard behavior', () => {
136138
let caseIncidentResponseAuthorizedMembers: CaseIncident;
137-
it('should Case Incident Response created with authorized_members activated', async () => {
139+
it('should Case Incident Response created with authorized_members activated via settings', async () => {
138140
// Activate authorized members for IR
139-
const UPDATE_SETTINGS_QUERY = gql`
141+
const ENTITY_SETTINGS_READ_QUERY_BY_TARGET_TYPE = gql`
142+
query entitySettingsByTargetType($targetType: String!) {
143+
entitySettingByType(targetType: $targetType) {
144+
id
145+
target_type
146+
platform_entity_files_ref
147+
platform_hidden_type
148+
enforce_reference
149+
}
150+
}
151+
`;
152+
153+
const ENTITY_SETTINGS_UPDATE_QUERY = gql`
140154
mutation entitySettingsEdit($ids: [ID!]!, $input: [EditInput!]!) {
141155
entitySettingsFieldPatch(ids: $ids, input: $input) {
142156
id
@@ -148,21 +162,21 @@ describe('Case Incident Response authorized_members standard behavior', () => {
148162
}
149163
}
150164
`;
151-
const variables = {
152-
ids: [
153-
'5a18d85f-6e4b-4191-9e23-eeeedd6ca41a'
154-
],
155-
input: {
156-
key: 'attributes_configuration',
157-
value: '[{"name":"authorized_members","default_values":["{\\"id\\":\\"CREATOR\\",\\"access_right\\":\\"admin\\"}"]}]'
158-
}
159-
};
160-
// TODO use JSON.stringify(
161-
await queryAsAdmin({
162-
query: UPDATE_SETTINGS_QUERY,
163-
variables,
165+
166+
const caseIncidentResponseSettingsQueryResult = await queryAsAdmin({
167+
query: ENTITY_SETTINGS_READ_QUERY_BY_TARGET_TYPE,
168+
variables: { targetType: ENTITY_TYPE_CONTAINER_CASE_INCIDENT }
169+
});
170+
expect(caseIncidentResponseSettingsQueryResult.data?.entitySettingByType.target_type).toEqual(ENTITY_TYPE_CONTAINER_CASE_INCIDENT);
171+
const caseIncidentEntitySetting = caseIncidentResponseSettingsQueryResult.data?.entitySettingByType;
172+
173+
const authorizedMembersConfiguration = JSON.stringify([{ name: 'authorized_members', default_values: [{ id: ADMIN_USER.id, access_right: 'admin' }] }]);
174+
175+
const updateEntitySettingsResult = await queryAsAdmin({
176+
query: ENTITY_SETTINGS_UPDATE_QUERY,
177+
variables: { ids: [caseIncidentEntitySetting.id], input: { key: 'attributes_configuration', value: [authorizedMembersConfiguration] } },
164178
});
165-
// TODO ADD assertion to check that entitysettings have been modify?
179+
expect(updateEntitySettingsResult.data?.entitySettingsFieldPatch[0].attribute_configuration).toEqual([authorizedMembersConfiguration]);
166180

167181
const caseIncidentResponseAuthorizedMembersData = await queryAsAdmin({
168182
query: CREATE_QUERY,
@@ -182,6 +196,11 @@ describe('Case Incident Response authorized_members standard behavior', () => {
182196
}
183197
]);
184198
caseIncidentResponseAuthorizedMembers = caseIncidentResponseAuthorizedMembersData?.data?.caseIncidentAdd;
199+
// Clean
200+
await queryAsAdmin({
201+
query: ENTITY_SETTINGS_UPDATE_QUERY,
202+
variables: { ids: [caseIncidentEntitySetting.id], input: { key: 'attributes_configuration', value: [] } },
203+
});
185204
});
186205
it('should Case Incident Response deleted', async () => {
187206
// Delete the case

0 commit comments

Comments
 (0)