Skip to content

Commit

Permalink
feat: introduces read-only tenant mode tests
Browse files Browse the repository at this point in the history
Signed-off-by: Kajetan Nobel <k.nobel@routegroup.pl>
  • Loading branch information
kajetan-nobel committed Jul 26, 2023
1 parent 14892a0 commit 6291205
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 0 deletions.
88 changes: 88 additions & 0 deletions cypress/integration/plugins/security-dashboards-plugin/readonly.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

import roleWithoutTestJson from '../../../fixtures/plugins/security-dashboards-plugin/roles/roleWithoutTest';
import { BASE_PATH } from '../../../utils/base_constants';
import { ADMIN_AUTH, CURRENT_TENANT } from '../../../utils/commands';

const TEST_CONFIG = {
role: {
name: 'test_readonly_role',
json: Object.assign({}, roleWithoutTestJson, {
tenant_permissions: [
{
tenant_patterns: ['test_readonly_tenant'],
allowed_actions: ['kibana_all_read'],
},
],
}),
},
tenant: {
name: 'test_readonly_tenant',
description: 'Testing read-only tenant mode',
},
user: {
username: 'test_readonly_user',
password: 'testUserPassword123',
},
};

if (Cypress.env('SECURITY_ENABLED')) {
describe('Read Only mode', () => {
before(() => {
cy.server();

cy.createTenant(TEST_CONFIG.tenant.name, {
description: TEST_CONFIG.tenant.description,
});

cy.createInternalUser(TEST_CONFIG.user.username, {
password: TEST_CONFIG.user.password,
});

cy.createRole(TEST_CONFIG.role.name, TEST_CONFIG.role.json);

cy.createRoleMapping(TEST_CONFIG.role.name, {
users: [TEST_CONFIG.user.username],
});
});

it('should create sample data', () => {
CURRENT_TENANT.newTenant = TEST_CONFIG.tenant.name;
cy.loadSampleData('flights');
});

it('should be able to modify the dashboard as admin', () => {
CURRENT_TENANT.newTenant = TEST_CONFIG.tenant.name;

cy.visit(BASE_PATH);
cy.waitForLoader();

cy.getElementByTestId('tenant-switch-modal')
.find('[data-test-subj="confirm"]')
.click({ force: true });
cy.waitForLoader();

cy.visitDashboard('[Logs] Web Traffic');

cy.getElementByTestId('dashboardClone').should('exist');
cy.getElementByTestId('dashboardEditMode').should('exist');
});

it('should not be able to modify the dashboard when is performing as a custom readonly tenant', () => {
ADMIN_AUTH.newUser = TEST_CONFIG.user.username;
ADMIN_AUTH.newPassword = TEST_CONFIG.user.password;
CURRENT_TENANT.newTenant = TEST_CONFIG.tenant.name;

cy.visit(BASE_PATH);
cy.waitForLoader();

cy.visitDashboard('[Logs] Web Traffic');

cy.getElementByTestId('dashboardClone').should('not.exist');
cy.getElementByTestId('dashboardEditMode').should('not.exist');
});
});
}
9 changes: 9 additions & 0 deletions cypress/utils/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -483,3 +483,12 @@ Cypress.Commands.add(
});
}
);

// type: logs, ecommerce, flights
Cypress.Commands.add('loadSampleData', (type) => {
cy.request({
method: 'POST',
headers: { 'osd-xsrf': 'opensearch-dashboards' },
url: `${BASE_PATH}/api/sample_data/${type}`,
});
});

0 comments on commit 6291205

Please sign in to comment.