Skip to content

Commit 1d5c570

Browse files
authored
Update integration tests with privacy setting features (#1665)
Signed-off-by: Lin Wang <wonglam@amazon.com>
1 parent af6f753 commit 1d5c570

File tree

3 files changed

+267
-13
lines changed

3 files changed

+267
-13
lines changed

cypress/utils/dashboards/workspace-plugin/test-cases/mds_workspace_collaborators.cases.js

+117
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,21 @@
55

66
import { MiscUtils } from '@opensearch-dashboards-test/opensearch-dashboards-test-library';
77

8+
const updatePrivacySetting = (settingId) => {
9+
cy.getElementByTestId('workspaceCollaborators-privacySetting-edit').click();
10+
cy.getElementByTestId('workspacePrivacySettingSelector').click({
11+
force: true,
12+
});
13+
cy.get(`#${settingId}`).click({ force: true });
14+
cy.getElementByTestId('workspaceCollaborators-privacySetting-save').click({
15+
force: true,
16+
});
17+
18+
cy.getElementByTestId('workspaceCollaborators-privacySetting-save').should(
19+
'not.exist'
20+
);
21+
};
22+
823
export const WorkspaceCollaboratorsTestCases = () => {
924
const miscUtils = new MiscUtils(cy);
1025
const workspaceName = 'test_workspace_collaborators';
@@ -209,6 +224,108 @@ export const WorkspaceCollaboratorsTestCases = () => {
209224
};
210225
cy.checkWorkspace(workspaceId, expectedWorkspace);
211226
});
227+
228+
it('should change to "anyone can read" successfully', () => {
229+
updatePrivacySetting('anyone-can-view');
230+
231+
const expectedWorkspace = {
232+
name: workspaceName,
233+
features: ['use-case-observability'],
234+
description: 'test_description',
235+
permissions: {
236+
library_write: {
237+
users: [`${Cypress.env('username')}`],
238+
groups: ['admin_group'],
239+
},
240+
write: {
241+
users: [`${Cypress.env('username')}`],
242+
groups: ['admin_group'],
243+
},
244+
library_read: {
245+
users: ['read_user', '*'],
246+
},
247+
read: {
248+
users: ['read_user', '*'],
249+
},
250+
},
251+
};
252+
cy.checkWorkspace(workspaceId, expectedWorkspace);
253+
});
254+
255+
it('should change to "anyone can edit" successfully', () => {
256+
updatePrivacySetting('anyone-can-edit');
257+
258+
const expectedWorkspace = {
259+
name: workspaceName,
260+
features: ['use-case-observability'],
261+
description: 'test_description',
262+
permissions: {
263+
library_write: {
264+
users: [`${Cypress.env('username')}`, '*'],
265+
groups: ['admin_group'],
266+
},
267+
write: {
268+
users: [`${Cypress.env('username')}`],
269+
groups: ['admin_group'],
270+
},
271+
library_read: {
272+
users: ['read_user'],
273+
},
274+
read: {
275+
users: ['read_user', '*'],
276+
},
277+
},
278+
};
279+
cy.checkWorkspace(workspaceId, expectedWorkspace);
280+
});
281+
282+
it('should change back to "private to collaborators" successfully', () => {
283+
updatePrivacySetting('anyone-can-view');
284+
cy.checkWorkspace(workspaceId, {
285+
name: workspaceName,
286+
features: ['use-case-observability'],
287+
description: 'test_description',
288+
permissions: {
289+
library_write: {
290+
users: [`${Cypress.env('username')}`],
291+
groups: ['admin_group'],
292+
},
293+
write: {
294+
users: [`${Cypress.env('username')}`],
295+
groups: ['admin_group'],
296+
},
297+
library_read: {
298+
users: ['read_user', '*'],
299+
},
300+
read: {
301+
users: ['read_user', '*'],
302+
},
303+
},
304+
});
305+
306+
updatePrivacySetting('private-to-collaborators');
307+
cy.checkWorkspace(workspaceId, {
308+
name: workspaceName,
309+
features: ['use-case-observability'],
310+
description: 'test_description',
311+
permissions: {
312+
library_write: {
313+
users: [`${Cypress.env('username')}`],
314+
groups: ['admin_group'],
315+
},
316+
write: {
317+
users: [`${Cypress.env('username')}`],
318+
groups: ['admin_group'],
319+
},
320+
library_read: {
321+
users: ['read_user'],
322+
},
323+
read: {
324+
users: ['read_user'],
325+
},
326+
},
327+
});
328+
});
212329
});
213330
}
214331
};

cypress/utils/dashboards/workspace-plugin/test-cases/mds_workspace_create.cases.js

+33
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,37 @@ export const WorkspaceCreateTestCases = () => {
156156
cy.deleteWorkspaceByName(workspaceName);
157157
inputWorkspaceName(workspaceName);
158158
inputDataSourceWhenMDSEnabled(dataSourceTitle);
159+
cy.getElementByTestId('jumpToCollaboratorsCheckbox').click({
160+
force: true,
161+
});
162+
cy.getElementByTestId('workspaceForm-bottomBar-createButton').click(
163+
{
164+
force: true,
165+
}
166+
);
167+
168+
let workspaceId;
169+
cy.wait('@createWorkspaceRequest').then((interception) => {
170+
expect(interception.response.statusCode).to.equal(200);
171+
workspaceId = interception.response.body.result.id;
172+
173+
cy.location('pathname', { timeout: 6000 }).should(
174+
'include',
175+
`w/${workspaceId}/app/workspace_collaborators`
176+
);
177+
});
178+
});
179+
180+
it('should creating a workspace with privacy setting', () => {
181+
cy.deleteWorkspaceByName(workspaceName);
182+
inputWorkspaceName(workspaceName);
183+
inputDataSourceWhenMDSEnabled(dataSourceTitle);
184+
cy.get('#anyone-can-edit').click();
185+
cy.getElementByTestId('jumpToCollaboratorsCheckbox')
186+
.should('be.enabled')
187+
.click({
188+
force: true,
189+
});
159190
cy.getElementByTestId('workspaceForm-bottomBar-createButton').click(
160191
{
161192
force: true,
@@ -171,6 +202,8 @@ export const WorkspaceCreateTestCases = () => {
171202
'include',
172203
`w/${workspaceId}/app/workspace_collaborators`
173204
);
205+
206+
cy.contains('Anyone can edit').should('be.exist');
174207
});
175208
});
176209
}

cypress/utils/dashboards/workspace-plugin/test-cases/mds_workspace_detail.cases.js

+117-13
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,20 @@ export const WorkspaceDetailTestCases = () => {
1818
let workspaceDescription = 'This is a workspace description.';
1919
let workspaceId;
2020
let workspaceFeatures = ['use-case-observability'];
21+
const workspaceBaseData = {
22+
name: workspaceName,
23+
description: workspaceDescription,
24+
features: workspaceFeatures,
25+
color: '#54B399',
26+
settings: {
27+
permissions: {
28+
library_write: { users: ['%me%'] },
29+
write: { users: ['%me%'] },
30+
library_read: { users: [NONE_DASHBOARDS_ADMIN_USERNAME] },
31+
read: { users: [NONE_DASHBOARDS_ADMIN_USERNAME] },
32+
},
33+
},
34+
};
2135

2236
if (Cypress.env('WORKSPACE_ENABLED')) {
2337
describe('Workspace detail', () => {
@@ -34,19 +48,9 @@ export const WorkspaceDetailTestCases = () => {
3448
);
3549
}
3650
cy.deleteWorkspaceByName(workspaceName);
37-
cy.createWorkspace({
38-
name: workspaceName,
39-
description: workspaceDescription,
40-
features: workspaceFeatures,
41-
settings: {
42-
permissions: {
43-
library_write: { users: ['%me%'] },
44-
write: { users: ['%me%'] },
45-
library_read: { users: [NONE_DASHBOARDS_ADMIN_USERNAME] },
46-
read: { users: [NONE_DASHBOARDS_ADMIN_USERNAME] },
47-
},
48-
},
49-
}).then((value) => (workspaceId = value));
51+
cy.createWorkspace(workspaceBaseData).then(
52+
(value) => (workspaceId = value)
53+
);
5054
});
5155

5256
after(() => {
@@ -294,6 +298,106 @@ export const WorkspaceDetailTestCases = () => {
294298
});
295299
});
296300
});
301+
302+
describe('update with different privacy settings', () => {
303+
before(() => {
304+
// Visit workspace update page
305+
miscUtils.visitPage(`w/${workspaceId}/app/workspace_detail`);
306+
});
307+
308+
afterEach(() => {
309+
cy.getElementByTestId(
310+
'workspaceForm-workspaceDetails-edit'
311+
).click();
312+
cy.getElementByTestId('workspacePrivacySettingSelector').click({
313+
force: true,
314+
});
315+
cy.get('#private-to-collaborators').click({ force: true });
316+
cy.getElementByTestId('workspaceForm-bottomBar-updateButton').click(
317+
{ force: true }
318+
);
319+
cy.getElementByTestId(
320+
'workspaceForm-bottomBar-updateButton'
321+
).should('not.exist');
322+
cy.checkWorkspace(workspaceId, {
323+
name: workspaceName,
324+
description: workspaceDescription,
325+
features: workspaceFeatures,
326+
permissions: {
327+
library_write: { users: ['%me%'] },
328+
write: { users: ['%me%'] },
329+
library_read: {
330+
users: [NONE_DASHBOARDS_ADMIN_USERNAME],
331+
},
332+
read: { users: [NONE_DASHBOARDS_ADMIN_USERNAME] },
333+
},
334+
});
335+
});
336+
337+
it('should able to update privacy setting to anyone can read', () => {
338+
cy.getElementByTestId(
339+
'workspaceForm-workspaceDetails-edit'
340+
).click();
341+
cy.getElementByTestId('workspacePrivacySettingSelector').click({
342+
force: true,
343+
});
344+
cy.get('#anyone-can-view').click({ force: true });
345+
cy.getElementByTestId('workspaceForm-bottomBar-updateButton').click(
346+
{ force: true }
347+
);
348+
349+
cy.getElementByTestId(
350+
'workspaceForm-bottomBar-updateButton'
351+
).should('not.exist');
352+
353+
const expectedWorkspace = {
354+
name: workspaceName,
355+
description: workspaceDescription,
356+
features: workspaceFeatures,
357+
permissions: {
358+
library_write: { users: ['%me%'] },
359+
write: { users: ['%me%'] },
360+
library_read: {
361+
users: [NONE_DASHBOARDS_ADMIN_USERNAME, '*'],
362+
},
363+
read: { users: [NONE_DASHBOARDS_ADMIN_USERNAME, '*'] },
364+
},
365+
};
366+
cy.checkWorkspace(workspaceId, expectedWorkspace);
367+
});
368+
369+
it('should able to update privacy setting to anyone can write', () => {
370+
cy.getElementByTestId(
371+
'workspaceForm-workspaceDetails-edit'
372+
).click();
373+
cy.getElementByTestId('workspacePrivacySettingSelector').click({
374+
force: true,
375+
});
376+
cy.get('#anyone-can-edit').click({ force: true });
377+
cy.getElementByTestId('workspaceForm-bottomBar-updateButton').click(
378+
{ force: true }
379+
);
380+
381+
cy.getElementByTestId(
382+
'workspaceForm-bottomBar-updateButton'
383+
).should('not.exist');
384+
385+
const expectedWorkspace = {
386+
name: workspaceName,
387+
description: workspaceDescription,
388+
features: workspaceFeatures,
389+
permissions: {
390+
library_write: { users: ['%me%', '*'] },
391+
write: { users: ['%me%'] },
392+
library_read: {
393+
users: [NONE_DASHBOARDS_ADMIN_USERNAME],
394+
},
395+
read: { users: [NONE_DASHBOARDS_ADMIN_USERNAME, '*'] },
396+
},
397+
};
398+
cy.checkWorkspace(workspaceId, expectedWorkspace);
399+
});
400+
});
297401
}
298402
});
299403
}

0 commit comments

Comments
 (0)