Skip to content

Commit

Permalink
Tenant change related integration tests - allow tenant change and ret…
Browse files Browse the repository at this point in the history
…ain tenant in shortlink (#736)

* Test to ensure when a shortlink is copied, tenant is changed and short link is visited. The tenant from the link is visited.

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* After link copy, allow tenant change

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Addressing comments, removing function to it's own file and removing unneeded code in before.

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Spelling error rectified
Signed-off-by: leanneeliatra <[email protected]>

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Linting errors resolved

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Update cypress/utils/commands.js

Co-authored-by: Yulong Ruan <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Changed data-test-subj to getElementByTestId for consitency

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Switch tenant updated to use interceps and should() for improved test performance

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* switch tenant changed to use intercepts and should() for increaced test performance.

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Adding commen to explain how the addtion of the should() helps

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Global declaration of the tenant removed. The clearing of session storage is not needed actually, cy.visit() does this for us

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Additition of 'createDashboard' method to allow programatic dashboard creation. Also improvements to the test.

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* When testing we are looking for the private tenant.

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* check changed to allow for both 'private' and __user__

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* linting errors resolved Signed-off-by: leanneeliatra <[email protected]>

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* merging in changes on remote

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Adding back --headless parameter.

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* undoing package-lock changes.

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Use library from release tag instead of git reference (#706)

The module installed from the OSD test library seems to update
or not based on caching issues.

Related proposal:
opensearch-project/opensearch-dashboards-test-library#36

Signed-off-by: Kawika Avilla <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* update testSplitTables test (#731)

Signed-off-by: Sirazh Gabdullin <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* [Vis Augmenter / Feature Anywhere] Add tests in core OSD and AD plugin (#739)

* [Vis Augmenter / Feature Anywhere] Add test suite for vanilla OSD + helper fns for plugins (#725)

* feature anywhere initial tests

Signed-off-by: Jovan Cvetkovic <[email protected]>

* Add test suite

Signed-off-by: Tyler Ohlsen <[email protected]>

* Remove unnecessary test case

Signed-off-by: Tyler Ohlsen <[email protected]>

* Optimize getters

Signed-off-by: Tyler Ohlsen <[email protected]>

---------

Signed-off-by: Jovan Cvetkovic <[email protected]>
Signed-off-by: Tyler Ohlsen <[email protected]>
Co-authored-by: Jovan Cvetkovic <[email protected]>

* [Feature Anywhere / Vis Augmenter] Add test flows for integration with AD plugin (#727)

* feature anywhere initial tests

Signed-off-by: Jovan Cvetkovic <[email protected]>

* Add test suite

Signed-off-by: Tyler Ohlsen <[email protected]>

* Add AD vis augmenter tests

Signed-off-by: Tyler Ohlsen <[email protected]>

* More refactoring

Signed-off-by: Tyler Ohlsen <[email protected]>

* More tests

Signed-off-by: Tyler Ohlsen <[email protected]>

* Add test for AD cleanup scenario

Signed-off-by: Tyler Ohlsen <[email protected]>

* Set up saved obj test suite

Signed-off-by: Tyler Ohlsen <[email protected]>

* Add reminder TODO

Signed-off-by: Tyler Ohlsen <[email protected]>

* Add tests regarding saved obj visibility

Signed-off-by: Tyler Ohlsen <[email protected]>

* Add view events tests

Signed-off-by: Tyler Ohlsen <[email protected]>

* cleanup

Signed-off-by: Tyler Ohlsen <[email protected]>

* remove import

Signed-off-by: Tyler Ohlsen <[email protected]>

---------

Signed-off-by: Jovan Cvetkovic <[email protected]>
Signed-off-by: Tyler Ohlsen <[email protected]>
Co-authored-by: Jovan Cvetkovic <[email protected]>

---------

Signed-off-by: Jovan Cvetkovic <[email protected]>
Signed-off-by: Tyler Ohlsen <[email protected]>
Co-authored-by: Jovan Cvetkovic <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Revert "[Vis Augmenter / Feature Anywhere] Add tests in core OSD and AD plugin (#739)" (#748)

This reverts commit 07a67d7.

Signed-off-by: manasvinibs <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Test sample data with multiple data source enabled on local cluster (#756)

Signed-off-by: Kristen Tian <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* [Vis Augmenter] Add tests in OSD & AD plugin (#752)

* [Vis Augmenter / Feature Anywhere] Add test suite for vanilla OSD + helper fns for plugins (#725)

* feature anywhere initial tests

Signed-off-by: Jovan Cvetkovic <[email protected]>

* Add test suite

Signed-off-by: Tyler Ohlsen <[email protected]>

* Remove unnecessary test case

Signed-off-by: Tyler Ohlsen <[email protected]>

* Optimize getters

Signed-off-by: Tyler Ohlsen <[email protected]>

---------

Signed-off-by: Jovan Cvetkovic <[email protected]>
Signed-off-by: Tyler Ohlsen <[email protected]>
Co-authored-by: Jovan Cvetkovic <[email protected]>

* [Feature Anywhere / Vis Augmenter] Add test flows for integration with AD plugin (#727)

* feature anywhere initial tests

Signed-off-by: Jovan Cvetkovic <[email protected]>

* Add test suite

Signed-off-by: Tyler Ohlsen <[email protected]>

* Add AD vis augmenter tests

Signed-off-by: Tyler Ohlsen <[email protected]>

* More refactoring

Signed-off-by: Tyler Ohlsen <[email protected]>

* More tests

Signed-off-by: Tyler Ohlsen <[email protected]>

* Add test for AD cleanup scenario

Signed-off-by: Tyler Ohlsen <[email protected]>

* Set up saved obj test suite

Signed-off-by: Tyler Ohlsen <[email protected]>

* Add reminder TODO

Signed-off-by: Tyler Ohlsen <[email protected]>

* Add tests regarding saved obj visibility

Signed-off-by: Tyler Ohlsen <[email protected]>

* Add view events tests

Signed-off-by: Tyler Ohlsen <[email protected]>

* cleanup

Signed-off-by: Tyler Ohlsen <[email protected]>

* remove import

Signed-off-by: Tyler Ohlsen <[email protected]>

---------

Signed-off-by: Jovan Cvetkovic <[email protected]>
Signed-off-by: Tyler Ohlsen <[email protected]>
Co-authored-by: Jovan Cvetkovic <[email protected]>

* Fix NPE

Signed-off-by: Tyler Ohlsen <[email protected]>

* Fix bug of non-empty dashboard; remove unnecessary test

Signed-off-by: Tyler Ohlsen <[email protected]>

* Simplify dashboard creation

Signed-off-by: Tyler Ohlsen <[email protected]>

* Update undefined check

Signed-off-by: Tyler Ohlsen <[email protected]>

---------

Signed-off-by: Jovan Cvetkovic <[email protected]>
Signed-off-by: Tyler Ohlsen <[email protected]>
Co-authored-by: Jovan Cvetkovic <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* fix: CVE of tough-cookie and word-wrap (#763)

Signed-off-by: SuZhou-Joe <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* feat: use "overrides" to install desired version of tough-cookie and word-wrap. (#772)

* feat: use npm v8 to install and initialize package-lock

Signed-off-by: SuZhou-Joe <[email protected]>

* feat: add Node version requirement in DEVELOPER_GUIDE

Signed-off-by: SuZhou-Joe <[email protected]>

---------

Signed-off-by: SuZhou-Joe <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Improve date selection across versions of OUI (#778)

Signed-off-by: Miki <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* feat: sync cypress test from notifications-dashboards (#776) (#784)

* feat: sync cypress test from notifications-dashboards

Signed-off-by: SuZhou-Joe <[email protected]>

* feat: rename commands

Signed-off-by: SuZhou-Joe <[email protected]>

* feat: update

Signed-off-by: SuZhou-Joe <[email protected]>

* feat: add larger wait time

Signed-off-by: SuZhou-Joe <[email protected]>

* feat: update

Signed-off-by: SuZhou-Joe <[email protected]>

* feat: update

Signed-off-by: SuZhou-Joe <[email protected]>

* feat: update

Signed-off-by: SuZhou-Joe <[email protected]>

* feat: add refresh before delete all notifications configs

Signed-off-by: SuZhou-Joe <[email protected]>

---------

Signed-off-by: SuZhou-Joe <[email protected]>
(cherry picked from commit 81f70c3)
Signed-off-by: [email protected] <[email protected]>

* [Table Visualizations] Tests cleanup (#785)

Signed-off-by: Sirazh Gabdullin <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Bump dependency on opensearch-dashboards-test-library (#790)

Signed-off-by: Miki <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* [Table Visualizations] Test Update (#787)

* fix-test
* simplify selector

---------

Signed-off-by: Sirazh Gabdullin <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* fix discover (#803)

Signed-off-by: abbyhu2000 <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Change to toast message in Reports (#578)

* Change to toast message in Reports download spec

Signed-off-by: Kavitha Conjeevaram Mohan <[email protected]>

* Update test

Signed-off-by: Kavitha Conjeevaram Mohan <[email protected]>

* Fix lint

Signed-off-by: Kavitha Conjeevaram Mohan <[email protected]>

---------

Signed-off-by: Kavitha Conjeevaram Mohan <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* fix discover (#807)

Signed-off-by: Qingyang(Abby) Hu <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* feat: add test cases for remote models (#813)

Signed-off-by: Lin Wang <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* fix workbench download text and csv schema (#814) (#817)

Signed-off-by: Joshua Li <[email protected]>
(cherry picked from commit 46c0882)

Co-authored-by: Joshua Li <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* update trace analytics cypress tests according to observability changes (#775)

* update ftr

Signed-off-by: Derek Ho <[email protected]>

* revert file

Signed-off-by: Derek Ho <[email protected]>

* update with trace analytics accordian changes

Signed-off-by: Derek Ho <[email protected]>

---------

Signed-off-by: Derek Ho <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Bump semver from 7.3.7 to 7.5.4 (#822)

Bumps [semver](https://github.com/npm/node-semver) from 7.3.7 to 7.5.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](npm/node-semver@v7.3.7...v7.5.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: [email protected] <[email protected]>

* [Dashboard] Retry visbuilder dashboard test (#823)

Seeing it pass in video replays but occassionally doesn't pass.
However, it doesn't pass with security enabled so I'd imagine it
could be related to the refreshing of the session.

Issue:
opensearch-project/OpenSearch-Dashboards#4947

Signed-off-by: Kawika Avilla <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Add new tests for alerting dashboards (#832)

Signed-off-by: Ashish Agrawal <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Update source element in import_vector_map_tab.spec.js (#844)

* Update source element in import_vector_map_tab.spec.js

Signed-off-by: Junqiu Lei <[email protected]>

* Update source element in import_vector_map_tab.spec.js

Signed-off-by: Junqiu Lei <[email protected]>

---------

Signed-off-by: Junqiu Lei <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Use index pattern id to find page in import_vector_map_tab.spec.js (#847)

Signed-off-by: Junqiu Lei <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Buffer `waitForLoader` before checking for icon (#857) (#859)

Some async calls occur after navigating and sometimes navigating too quickly
prevents the calls from having correct data and therefore the homeIcon is in
a bad state.

This adds the ability to buffer before checking for the homeIcon.

Defaulted to 0 ms, but for `yarn cypress:run-with-security` configures
WAIT_FOR_LOADER_BUFFER_MS to be 500 ms

Issue resolved:
opensearch-project/OpenSearch-Dashboards#5028

Signed-off-by: Kawika Avilla <[email protected]>
(cherry picked from commit e7c7e59)

Co-authored-by: Kawika Avilla <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Overwrite removed and moved to after in unit test

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>

* Update dashboard.spec.js

Signed-off-by: leanneeliatra <[email protected]>

* Update dashboard_sample_data_spec.js

remove unneeded change

Signed-off-by: leanneeliatra <[email protected]>

---------

Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: [email protected] <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: Kawika Avilla <[email protected]>
Signed-off-by: Sirazh Gabdullin <[email protected]>
Signed-off-by: Jovan Cvetkovic <[email protected]>
Signed-off-by: Tyler Ohlsen <[email protected]>
Signed-off-by: manasvinibs <[email protected]>
Signed-off-by: Kristen Tian <[email protected]>
Signed-off-by: SuZhou-Joe <[email protected]>
Signed-off-by: Miki <[email protected]>
Signed-off-by: abbyhu2000 <[email protected]>
Signed-off-by: Kavitha Conjeevaram Mohan <[email protected]>
Signed-off-by: Qingyang(Abby) Hu <[email protected]>
Signed-off-by: Lin Wang <[email protected]>
Signed-off-by: Derek Ho <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Ashish Agrawal <[email protected]>
Signed-off-by: Junqiu Lei <[email protected]>
Co-authored-by: Yulong Ruan <[email protected]>
Co-authored-by: Kawika Avilla <[email protected]>
Co-authored-by: Sirazh Gabdullin <[email protected]>
Co-authored-by: Tyler Ohlsen <[email protected]>
Co-authored-by: Jovan Cvetkovic <[email protected]>
Co-authored-by: Manasvini B Suryanarayana <[email protected]>
Co-authored-by: Kristen Tian <[email protected]>
Co-authored-by: SuZhou-Joe <[email protected]>
Co-authored-by: Miki <[email protected]>
Co-authored-by: Miki <[email protected]>
Co-authored-by: Qingyang(Abby) Hu <[email protected]>
Co-authored-by: Kavitha Conjeevaram Mohan <[email protected]>
Co-authored-by: Lin Wang <[email protected]>
Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com>
Co-authored-by: Joshua Li <[email protected]>
Co-authored-by: Derek Ho <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ashish Agrawal <[email protected]>
Co-authored-by: Junqiu Lei <[email protected]>
  • Loading branch information
20 people authored Oct 10, 2023
1 parent 1dd1c26 commit 21bf25f
Show file tree
Hide file tree
Showing 5 changed files with 253 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

import { CURRENT_TENANT } from '../../../utils/commands';
import { switchTenantTo } from './switch_tenant';

if (Cypress.env('SECURITY_ENABLED')) {
describe('Switch tenants when visiting copied links: ', () => {
const tenantName = 'private';

before(() => {
cy.server();
});
it('Checks that the tenant switcher can switch tenants despite a different tenant being present in the tenant query parameter.', function () {
CURRENT_TENANT.newTenant = tenantName;

cy.visit('/app/home').then(() => {
cy.waitForLoader();
switchTenantTo('global');
cy.waitForLoader();
cy.getElementByTestId('account-popover').click();
cy.get('#tenantName').should('contain.text', 'Global');
});
});
});
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

export function switchTenantTo(newTenant) {
cy.getElementByTestId('account-popover').click();
cy.intercept({
method: 'GET',
url: '/api/v1/auth/dashboardsinfo',
}).as('waitForDashboardsInfo');

cy.intercept({
method: 'GET',
url: '/api/v1/configuration/account',
}).as('waitForAccountInfo');

cy.getElementByTestId('switch-tenants').click();
//should ensures the dialog window is fully loaded and the radios can be selected.
cy.get('[id="' + newTenant + '"][name="tenantSwitchRadios"]').should(
'be.enabled'
);
cy.get('.euiRadio__label[for="' + newTenant + '"]').click();

cy.intercept({
method: 'POST',
url: '/api/v1/multitenancy/tenant',
}).as('waitForUpdatingTenants');
cy.getElementByTestId('tenant-switch-modal')
.find('[data-test-subj="confirm"]')
.click();

cy.wait('@waitForUpdatingTenants');

// Make sure dashboards has really reloaded.
// @waitForReloadAfterTenantSwitch should be triggered twice
cy.wait('@waitForDashboardsInfo');
cy.wait('@waitForDashboardsInfo');
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

import { CURRENT_TENANT } from '../../../utils/commands';
import { switchTenantTo } from './switch_tenant';
import indexPatternGlobalTenantHeaderSetUp from '../../../fixtures/plugins/security-dashboards-plugin/indexpatterns/indexPatternGlobalTenantHeader.json';
import indexPatternPrivateTenantHeaderSetUp from '../../../fixtures/plugins/security-dashboards-plugin/indexpatterns/indexPatternPrivateTenantHeader.json';

if (Cypress.env('SECURITY_ENABLED')) {
describe('Multi Tenancy Tests: ', () => {
before(() => {
cy.server();

cy.createIndexPattern(
'index-pattern1',
{
title: 's*',
timeFieldName: 'timestamp',
},
indexPatternGlobalTenantHeaderSetUp
);

cy.createIndexPattern(
'index-pattern2',
{
title: 'se*',
timeFieldName: 'timestamp',
},
indexPatternPrivateTenantHeaderSetUp
);
});

it('Tests that when the short URL is copied and pasted, it will route correctly with the right tenant', function () {
const randomNumber = Cypress._.random(0, 1e6);
const dashboardName = 'Cypress dashboard - ' + randomNumber;
// We are programmatically creating a dashboard so that the test
// always have the same view. An empty list would show the empty prompt.
// Also, this saves us some typing, clicking and waiting in the test.
cy.createDashboard(
{
title: dashboardName,
},
{
security_tenant: 'private',
}
);

// When creating the shortUrl, we don't want to have the security_tenant
// parameter in the url - otherwise it will be stored in the shortUrl
// itself, which would make this test obsolete.
// But it is also hard to get the tests running reliably when opening
// Dashboards without the parameter (tenant selector popup etc.).
// Hence, we do some navigation to "lose" the query parameter.
CURRENT_TENANT.newTenant = 'private';
cy.visit('/app/home', {
waitForGetTenant: true,
onBeforeLoad(window) {
// set up session storage as we would expect to emulate browser
window.sessionStorage.setItem(
'opendistro::security::tenant::show_popup',
false
);

window.localStorage.setItem(
'opendistro::security::tenant::saved',
'__user__'
);
},
});
// Navigate to the Dashboards app
cy.getElementByTestId('toggleNavButton').should('be.visible').click();
// After clicking the navigation, the security_tenant parameter should be gone
cy.get('[href$="/app/dashboards#/list"]').should('be.visible').click();

// The test subj seems to replace spaces with a dash, so we convert the dashboard name here too.
// Go to the dashboard we have created
const selectorDashboardName = dashboardName.split(' ').join('-');
cy.getElementByTestId(
'dashboardListingTitleLink-' + selectorDashboardName
)
.should('be.visible')
.click();

cy.getElementByTestId('savedObjectTitle').type(dashboardName);

cy.intercept({
method: 'POST',
url: '/api/saved_objects/_bulk_get',
}).as('waitForReloadingDashboard');
cy.getElementByTestId('confirmSaveSavedObjectButton').click();
cy.wait('@waitForReloadingDashboard');
cy.wait(2000);

// 2. Open top share navigation to access copy short url
cy.getElementByTestId('shareTopNavButton').click();
cy.getElementByTestId('sharePanel-Permalinks').click();

// 3. Create the short url, wait for response
cy.intercept('POST', '/api/shorten_url').as('getShortUrl');
// If the url already contains the tenant parameter, it will be stored in the short url. That will work in the app
// but would render this test useless. We're testing that resolved short urls without the tenant parameter work as well.
cy.url().should('not.contain', 'security_tenant');
cy.getElementByTestId('createShortUrl').click();
cy.wait('@getShortUrl');

//4. Switch tenant & visit shortURL link to ensure tenant from short URL is retained
cy.getElementByTestId('copyShareUrlButton')
.invoke('attr', 'data-share-url')
.should('contain', '/goto/')
.then((shortUrl) => {
cy.log('Short url is ' + shortUrl);
// Navigate away to avoid the non existing dashboard in the next tenant.
switchTenantTo('global');

// Since we can't reliably read the clipboard data, we have to append the tenant parameter manually
cy.visit(shortUrl + '?security_tenant=private', {
excludeTenant: true, // We are passing the tenant as a query parameter. Mainly because of readability.
onBeforeLoad(window) {
// Here we are simulating the new tab scenario which isn't supported by Cypress
window.sessionStorage.clear();
},
});

cy.url({ timeout: 10000 }).should('contain', 'security_tenant=');
cy.getElementByTestId('breadcrumb last').should(
'contain.text',
dashboardName
);
});
});
after(() => {
cy.deleteIndexPattern('index-pattern1', {
headers: {
securitytenant: ['global'],
'osd-xsrf': true,
},
});
cy.deleteIndexPattern('index-pattern2', {
headers: {
securitytenant: ['private'],
'osd-xsrf': true,
},
});
});
});
}
25 changes: 24 additions & 1 deletion cypress/utils/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,13 @@ Cypress.Commands.overwrite('visit', (orig, url, options) => {
auth: ADMIN_AUTH,
};
}
newOptions.qs = { security_tenant: CURRENT_TENANT.defaultTenant };
if (!newOptions.excludeTenant) {
newOptions.qs = {
...newOptions.qs,
security_tenant: CURRENT_TENANT.defaultTenant,
};
}

if (waitForGetTenant) {
cy.intercept('GET', '/api/v1/multitenancy/tenant').as('getTenant');
orig(url, newOptions);
Expand Down Expand Up @@ -367,6 +373,23 @@ Cypress.Commands.add('createIndexPattern', (id, attributes, header = {}) => {
});
});

Cypress.Commands.add('createDashboard', (attributes = {}, headers = {}) => {
const url = `${Cypress.config().baseUrl}/api/saved_objects/dashboard`;

cy.request({
method: 'POST',
url,
headers: {
'content-type': 'application/json;charset=UTF-8',
'osd-xsrf': true,
...headers,
},
body: JSON.stringify({
attributes,
}),
});
});

Cypress.Commands.add('changeDefaultTenant', (attributes, header = {}) => {
const url =
Cypress.env('openSearchUrl') + '/_plugins/_security/api/tenancy/config';
Expand Down
14 changes: 14 additions & 0 deletions cypress/utils/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,20 @@ declare namespace Cypress {
header: string,
): Chainable<S>;

/**
* Adds a dashboard
* @example
* cy.createDashboard({ title: 'My dashboard'})
*/
createDashboard<S = any>(
attributes: {
title: string;
[key: string]: any;
},
headers?: {
[key: string]: any;
}
): Chainable<S>;

/**
* Changes the Default tenant for the domain.
Expand Down

0 comments on commit 21bf25f

Please sign in to comment.