@@ -11,9 +11,9 @@ import {
11
11
PLATFORM_ORGANIZATION ,
12
12
queryAsAdmin ,
13
13
securityQuery ,
14
- USER_EDITOR
14
+ USER_EDITOR ,
15
15
} from '../../utils/testQuery' ;
16
- import { queryAsUserWithSuccess } from '../../utils/testQueryHelper' ;
16
+ import { queryAsUserIsExpectedForbidden } from '../../utils/testQueryHelper' ;
17
17
import { executionContext , SYSTEM_USER } from '../../../src/utils/access' ;
18
18
import { initCreateEntitySettings } from '../../../src/modules/entitySetting/entitySetting-domain' ;
19
19
import { ENTITY_TYPE_CONTAINER_CASE_INCIDENT } from '../../../src/modules/case/case-incident/case-incident-types' ;
@@ -40,7 +40,6 @@ const READ_QUERY = gql`
40
40
id
41
41
standard_id
42
42
name
43
- description
44
43
authorized_members {
45
44
id
46
45
access_right
@@ -50,35 +49,6 @@ const READ_QUERY = gql`
50
49
}
51
50
` ;
52
51
53
- const LIST_QUERY = gql `
54
- query caseIncidents(
55
- $first: Int
56
- $after: ID
57
- $orderBy: CaseIncidentsOrdering
58
- $orderMode: OrderingMode
59
- $filters: FilterGroup
60
- $search: String
61
- $toStix: Boolean
62
- ) {
63
- caseIncidents(
64
- first: $first
65
- after: $after
66
- orderBy: $orderBy
67
- orderMode: $orderMode
68
- filters: $filters
69
- search: $search
70
- toStix: $toStix
71
- ) {
72
- edges {
73
- node {
74
- id
75
- standard_id
76
- }
77
- }
78
- }
79
- }
80
- ` ;
81
-
82
52
const DELETE_QUERY = gql `
83
53
mutation CaseIncidentDelete($id: ID!) {
84
54
caseIncidentDelete(id: $id)
@@ -103,7 +73,9 @@ const EDIT_AUTHORIZED_MEMBERS_QUERY = gql`
103
73
` ;
104
74
105
75
describe ( 'Case Incident Response standard behavior with authorized_members activation from entity' , ( ) => {
106
- let caseIncidentResponseAuthorizedMembersFromEntity : CaseIncident ;
76
+ let caseIncident : CaseIncident ;
77
+ let userEditorId : string ;
78
+ // 1. On créé un case incident => on vérifie que l'editor y a accès, que les authorized members sont vide, que le user access right est admin
107
79
it ( 'should Case Incident Response created' , async ( ) => {
108
80
// Create Case Incident Response
109
81
const caseIncidentResponseCreateQueryResult = await queryAsAdmin ( {
@@ -119,13 +91,38 @@ describe('Case Incident Response standard behavior with authorized_members activ
119
91
expect ( caseIncidentResponseCreateQueryResult ?. data ?. caseIncidentAdd . authorized_members ) . not . toBeUndefined ( ) ;
120
92
expect ( caseIncidentResponseCreateQueryResult ?. data ?. caseIncidentAdd . authorized_members ) . toEqual ( [ ] ) ; // authorized members not activated
121
93
expect ( caseIncidentResponseCreateQueryResult ?. data ?. caseIncidentAdd . currentUserAccessRight ) . toEqual ( 'admin' ) ; // CurrentUser should be admin if authorized members not activated
122
- caseIncidentResponseAuthorizedMembersFromEntity = caseIncidentResponseCreateQueryResult ?. data ?. caseIncidentAdd ;
123
-
94
+ caseIncident = caseIncidentResponseCreateQueryResult ?. data ?. caseIncidentAdd ;
95
+ } ) ;
96
+ it ( 'should Editor User access Case Incident Response' , async ( ) => {
97
+ const caseIRQueryResult = await editorQuery ( { query : READ_QUERY , variables : { id : caseIncident . id } } ) ;
98
+ expect ( caseIRQueryResult ) . not . toBeNull ( ) ;
99
+ expect ( caseIRQueryResult ?. data ?. caseIncident ) . not . toBeUndefined ( ) ;
100
+ expect ( caseIRQueryResult ?. data ?. caseIncident . id ) . toEqual ( caseIncident . id ) ;
101
+ } ) ;
102
+ // On essaye de modifier les authorized members avec le user editor => on vérifie qu'il n'a pas les droits et qu'il se prend une erreur forbidden
103
+ it ( 'should Editor User not edit authorized members if not in authorized members' , async ( ) => {
104
+ userEditorId = await getUserIdByEmail ( USER_EDITOR . email ) ;
105
+ const authorizedMembers = {
106
+ id : caseIncident . id ,
107
+ input : [
108
+ {
109
+ id : userEditorId ,
110
+ access_right : 'view'
111
+ } ,
112
+ ]
113
+ } ;
114
+ await queryAsUserIsExpectedForbidden ( USER_EDITOR . client , {
115
+ query : EDIT_AUTHORIZED_MEMBERS_QUERY ,
116
+ variables : authorizedMembers ,
117
+ } ) ;
118
+ } ) ;
119
+ // On essaye de modifier les authorized members avec l'admin (seulement admin) => on vérifie que ça a bien fonctionné avec l'admin, et on vérifie que l'editor n'a pas accès au case incident
120
+ it ( 'should Admin User edit authorized members' , async ( ) => {
124
121
// Activate Authorized members
125
122
await queryAsAdmin ( {
126
123
query : EDIT_AUTHORIZED_MEMBERS_QUERY ,
127
124
variables : {
128
- id : caseIncidentResponseAuthorizedMembersFromEntity ?. id ,
125
+ id : caseIncident ?. id ,
129
126
input : [
130
127
{
131
128
id : ADMIN_USER . id ,
@@ -137,7 +134,7 @@ describe('Case Incident Response standard behavior with authorized_members activ
137
134
// Verify if authorized members have been edited
138
135
const caseIncidentResponseUpdatedQueryResult = await queryAsAdmin ( {
139
136
query : READ_QUERY ,
140
- variables : { id : caseIncidentResponseAuthorizedMembersFromEntity . id }
137
+ variables : { id : caseIncident . id }
141
138
} ) ;
142
139
expect ( caseIncidentResponseUpdatedQueryResult ) . not . toBeNull ( ) ;
143
140
expect ( caseIncidentResponseUpdatedQueryResult ?. data ?. caseIncident . authorized_members ) . not . toBeUndefined ( ) ;
@@ -148,13 +145,19 @@ describe('Case Incident Response standard behavior with authorized_members activ
148
145
}
149
146
] ) ;
150
147
} ) ;
151
- it ( 'should Case Incident Response get current User access right' , async ( ) => {
152
- // Add new authorized members
153
- const userEditorId = await getUserIdByEmail ( USER_EDITOR . email ) ;
148
+ it ( 'should Editor User not access Case Incident Response' , async ( ) => {
149
+ const caseIRQueryResult = await editorQuery ( { query : READ_QUERY , variables : { id : caseIncident . id } } ) ;
150
+ expect ( caseIRQueryResult ) . not . toBeNull ( ) ;
151
+ expect ( caseIRQueryResult ?. data ?. caseIncident ) . not . toBeUndefined ( ) ;
152
+ expect ( caseIRQueryResult ?. data ?. caseIncident ) . toBeNull ( ) ;
153
+ } ) ;
154
+ // On modifie les authorized members avec l'admin en ajoutant l'editor en view => on vérifie que l'editor a bien accès au case incident
155
+ it ( 'should Admin User edit authorized members: Editor has view access right' , async ( ) => {
156
+ // Add Editor User in authorized members
154
157
await queryAsAdmin ( {
155
158
query : EDIT_AUTHORIZED_MEMBERS_QUERY ,
156
159
variables : {
157
- id : caseIncidentResponseAuthorizedMembersFromEntity . id ,
160
+ id : caseIncident . id ,
158
161
input : [
159
162
{
160
163
id : ADMIN_USER . id ,
@@ -167,22 +170,152 @@ describe('Case Incident Response standard behavior with authorized_members activ
167
170
]
168
171
}
169
172
} ) ;
170
- // Get current User access right
171
- const currentUserAccessRightQueryResult = await queryAsUserWithSuccess ( USER_EDITOR . client , {
173
+ // Verify if authorized members have been edited
174
+ const caseIncidentResponseUpdatedQueryResult = await queryAsAdmin ( {
172
175
query : READ_QUERY ,
173
- variables : { id : caseIncidentResponseAuthorizedMembersFromEntity . id } ,
176
+ variables : { id : caseIncident . id }
174
177
} ) ;
175
- expect ( currentUserAccessRightQueryResult ) . not . toBeNull ( ) ;
176
- expect ( currentUserAccessRightQueryResult ?. data ?. caseIncident . currentUserAccessRight ) . toEqual ( 'view' ) ;
178
+ expect ( caseIncidentResponseUpdatedQueryResult ) . not . toBeNull ( ) ;
179
+ expect ( caseIncidentResponseUpdatedQueryResult ?. data ?. caseIncident . authorized_members ) . not . toBeUndefined ( ) ;
180
+ expect ( caseIncidentResponseUpdatedQueryResult ?. data ?. caseIncident . authorized_members ) . toEqual ( [
181
+ {
182
+ id : ADMIN_USER . id ,
183
+ access_right : 'admin'
184
+ } ,
185
+ {
186
+ id : userEditorId ,
187
+ access_right : 'view'
188
+ }
189
+ ] ) ;
177
190
} ) ;
178
- it ( 'should Case Incident Response deleted' , async ( ) => {
179
- // Delete the case
191
+ it ( 'should Editor User access Case Incident Response' , async ( ) => {
192
+ const caseIRQueryResult = await editorQuery ( { query : READ_QUERY , variables : { id : caseIncident . id } } ) ;
193
+ expect ( caseIRQueryResult ) . not . toBeNull ( ) ;
194
+ expect ( caseIRQueryResult ?. data ?. caseIncident ) . not . toBeUndefined ( ) ;
195
+ expect ( caseIRQueryResult ?. data ?. caseIncident . id ) . toEqual ( caseIncident . id ) ;
196
+ } ) ;
197
+ // On essaye d'editer le case avec l'editor => forbidden parce qu'il a seulement l'accès en view
198
+ it ( 'should Editor User not edit case incident with view access right' , async ( ) => {
199
+ const authorizedMembers = {
200
+ id : caseIncident . id ,
201
+ input : [
202
+ {
203
+ id : userEditorId ,
204
+ access_right : 'admin'
205
+ } ,
206
+ ]
207
+ } ;
208
+ await queryAsUserIsExpectedForbidden ( USER_EDITOR . client , {
209
+ query : EDIT_AUTHORIZED_MEMBERS_QUERY ,
210
+ variables : authorizedMembers ,
211
+ } ) ;
212
+ } ) ;
213
+ // On modifie les authorized members avec l'admin en mettant l'editor en 'edit', et on vérifie qu'il peut bien éditer un case incident (description)
214
+ it ( 'should Admin User edit authorized members: Editor has edit access right' , async ( ) => {
215
+ await queryAsAdmin ( {
216
+ query : EDIT_AUTHORIZED_MEMBERS_QUERY ,
217
+ variables : {
218
+ id : caseIncident . id ,
219
+ input : [
220
+ {
221
+ id : ADMIN_USER . id ,
222
+ access_right : 'admin'
223
+ } ,
224
+ {
225
+ id : userEditorId ,
226
+ access_right : 'edit'
227
+ }
228
+ ]
229
+ }
230
+ } ) ;
231
+ // Verify if authorized members have been edited
232
+ const caseIncidentResponseUpdatedQueryResult = await queryAsAdmin ( {
233
+ query : READ_QUERY ,
234
+ variables : { id : caseIncident . id }
235
+ } ) ;
236
+ expect ( caseIncidentResponseUpdatedQueryResult ) . not . toBeNull ( ) ;
237
+ expect ( caseIncidentResponseUpdatedQueryResult ?. data ?. caseIncident . authorized_members ) . not . toBeUndefined ( ) ;
238
+ expect ( caseIncidentResponseUpdatedQueryResult ?. data ?. caseIncident . authorized_members ) . toEqual ( [
239
+ {
240
+ id : ADMIN_USER . id ,
241
+ access_right : 'admin'
242
+ } ,
243
+ {
244
+ id : userEditorId ,
245
+ access_right : 'edit'
246
+ }
247
+ ] ) ;
248
+ } ) ;
249
+ it ( 'should Editor User edit case incident' , async ( ) => {
250
+ const UPDATE_QUERY = gql `
251
+ mutation CaseIncident($id: ID!, $input: [EditInput]!) {
252
+ stixDomainObjectEdit(id: $id) {
253
+ fieldPatch(input: $input) {
254
+ id
255
+ ... on Case {
256
+ name
257
+ }
258
+ }
259
+ }
260
+ }
261
+ ` ;
262
+ const queryResult = await editorQuery ( {
263
+ query : UPDATE_QUERY ,
264
+ variables : { id : caseIncident . id , input : { key : 'name' , value : [ 'Case Incident Response - updated' ] } } ,
265
+ } ) ;
266
+ expect ( queryResult ?. data ?. stixDomainObjectEdit . fieldPatch . name ) . toEqual ( 'Case Incident Response - updated' ) ;
267
+ } ) ;
268
+ // l'editor essaye de delete le case incident => forbidden parce qu'il a seulement l'accès en edit
269
+ it ( 'should Editor User not delete case incident with edit access right' , async ( ) => {
270
+ await queryAsUserIsExpectedForbidden ( USER_EDITOR . client , {
271
+ query : DELETE_QUERY ,
272
+ variables : { id : caseIncident . id } ,
273
+ } ) ;
274
+ } ) ;
275
+ // On modifie les authorized members avec l'admin en mettant l'editor en 'admin', et on delete le case avec l'editor
276
+ it ( 'should Admin User edit authorized members: Editor has admin access right' , async ( ) => {
180
277
await queryAsAdmin ( {
278
+ query : EDIT_AUTHORIZED_MEMBERS_QUERY ,
279
+ variables : {
280
+ id : caseIncident . id ,
281
+ input : [
282
+ {
283
+ id : ADMIN_USER . id ,
284
+ access_right : 'admin'
285
+ } ,
286
+ {
287
+ id : userEditorId ,
288
+ access_right : 'admin'
289
+ }
290
+ ]
291
+ }
292
+ } ) ;
293
+ // Verify if authorized members have been edited
294
+ const caseIncidentResponseUpdatedQueryResult = await queryAsAdmin ( {
295
+ query : READ_QUERY ,
296
+ variables : { id : caseIncident . id }
297
+ } ) ;
298
+ expect ( caseIncidentResponseUpdatedQueryResult ) . not . toBeNull ( ) ;
299
+ expect ( caseIncidentResponseUpdatedQueryResult ?. data ?. caseIncident . authorized_members ) . not . toBeUndefined ( ) ;
300
+ expect ( caseIncidentResponseUpdatedQueryResult ?. data ?. caseIncident . authorized_members ) . toEqual ( [
301
+ {
302
+ id : ADMIN_USER . id ,
303
+ access_right : 'admin'
304
+ } ,
305
+ {
306
+ id : userEditorId ,
307
+ access_right : 'admin'
308
+ }
309
+ ] ) ;
310
+ } ) ;
311
+ it ( 'should Editor User Case Incident Response deleted' , async ( ) => {
312
+ // Delete the case
313
+ await editorQuery ( {
181
314
query : DELETE_QUERY ,
182
- variables : { id : caseIncidentResponseAuthorizedMembersFromEntity . id } ,
315
+ variables : { id : caseIncident . id } ,
183
316
} ) ;
184
317
// Verify is no longer found
185
- const queryResult = await queryAsAdmin ( { query : READ_QUERY , variables : { id : caseIncidentResponseAuthorizedMembersFromEntity . id } } ) ;
318
+ const queryResult = await queryAsAdmin ( { query : READ_QUERY , variables : { id : caseIncident . id } } ) ;
186
319
expect ( queryResult ) . not . toBeNull ( ) ;
187
320
expect ( queryResult ?. data ?. caseIncident ) . toBeNull ( ) ;
188
321
} ) ;
0 commit comments