mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
* Handle cases of importing objects that are connected to searches, but error out due to the searches index pattern not found * Add tests and fix flaky ones
128 lines
5.4 KiB
JavaScript
128 lines
5.4 KiB
JavaScript
import expect from 'expect.js';
|
|
import path from 'path';
|
|
|
|
export default function ({ getService, getPageObjects }) {
|
|
const retry = getService('retry');
|
|
const kibanaServer = getService('kibanaServer');
|
|
const esArchiver = getService('esArchiver');
|
|
const PageObjects = getPageObjects(['common', 'settings', 'header']);
|
|
|
|
describe('import objects', function describeIndexTests() {
|
|
beforeEach(async function () {
|
|
// delete .kibana index and then wait for Kibana to re-create it
|
|
await kibanaServer.uiSettings.replace({});
|
|
await PageObjects.settings.navigateTo();
|
|
await esArchiver.load('management');
|
|
});
|
|
|
|
afterEach(async function () {
|
|
await esArchiver.unload('management');
|
|
});
|
|
|
|
it('should import saved objects normally', async function () {
|
|
await PageObjects.settings.clickKibanaSavedObjects();
|
|
await PageObjects.settings.importFile(path.join(__dirname, 'exports', '_import_objects.json'));
|
|
await PageObjects.common.clickConfirmOnModal();
|
|
await PageObjects.header.waitUntilLoadingHasFinished();
|
|
await PageObjects.settings.clickVisualizationsTab();
|
|
const rowCount = await retry.try(async () => {
|
|
const rows = await PageObjects.settings.getVisualizationRows();
|
|
return rows.length;
|
|
});
|
|
expect(rowCount).to.be(2);
|
|
});
|
|
|
|
it('should import conflicts using a confirm modal', async function () {
|
|
await PageObjects.settings.clickKibanaSavedObjects();
|
|
await PageObjects.settings.importFile(path.join(__dirname, 'exports', '_import_objects-conflicts.json'));
|
|
await PageObjects.common.clickConfirmOnModal();
|
|
await PageObjects.settings.setImportIndexFieldOption(2);
|
|
await PageObjects.settings.clickChangeIndexConfirmButton();
|
|
await PageObjects.header.waitUntilLoadingHasFinished();
|
|
await PageObjects.settings.clickVisualizationsTab();
|
|
const rowCount = await retry.try(async () => {
|
|
const rows = await PageObjects.settings.getVisualizationRows();
|
|
return rows.length;
|
|
});
|
|
expect(rowCount).to.be(2);
|
|
});
|
|
|
|
it('should allow for overrides', async function () {
|
|
await PageObjects.settings.clickKibanaSavedObjects();
|
|
|
|
// Put in data which already exists
|
|
await PageObjects.settings.importFile(path.join(__dirname, 'exports', '_import_objects_exists.json'));
|
|
// Say we want to be asked
|
|
await PageObjects.common.clickCancelOnModal();
|
|
// Interact with the conflict modal
|
|
await PageObjects.settings.setImportIndexFieldOption(2);
|
|
await PageObjects.settings.clickChangeIndexConfirmButton();
|
|
// Now confirm we want to override
|
|
await PageObjects.common.clickConfirmOnModal();
|
|
await PageObjects.header.waitUntilLoadingHasFinished();
|
|
|
|
await PageObjects.settings.clickVisualizationsTab();
|
|
const rowCount = await retry.try(async () => {
|
|
const rows = await PageObjects.settings.getVisualizationRows();
|
|
return rows.length;
|
|
});
|
|
expect(rowCount).to.be(1);
|
|
});
|
|
|
|
it('should allow for cancelling overrides', async function () {
|
|
await PageObjects.settings.clickKibanaSavedObjects();
|
|
|
|
// Put in data which already exists
|
|
await PageObjects.settings.importFile(path.join(__dirname, 'exports', '_import_objects_exists.json'));
|
|
// Say we want to be asked
|
|
await PageObjects.common.clickCancelOnModal();
|
|
// Interact with the conflict modal
|
|
await PageObjects.settings.setImportIndexFieldOption(2);
|
|
await PageObjects.settings.clickChangeIndexConfirmButton();
|
|
// Now cancel the override
|
|
await PageObjects.common.clickCancelOnModal();
|
|
|
|
await PageObjects.settings.clickVisualizationsTab();
|
|
const rowCount = await retry.try(async () => {
|
|
const rows = await PageObjects.settings.getVisualizationRows();
|
|
return rows.length;
|
|
});
|
|
expect(rowCount).to.be(1);
|
|
});
|
|
|
|
it('should handle saved searches and objects with saved searches properly', async function () {
|
|
// First, import the saved search
|
|
await PageObjects.settings.clickKibanaSavedObjects();
|
|
await PageObjects.settings.importFile(path.join(__dirname, 'exports', '_import_objects_saved_search.json'));
|
|
await PageObjects.common.clickConfirmOnModal();
|
|
|
|
// Second, we need to delete the index pattern
|
|
await PageObjects.settings.navigateTo();
|
|
await PageObjects.settings.clickKibanaIndices();
|
|
await PageObjects.settings.clickOnOnlyIndexPattern();
|
|
await PageObjects.settings.removeIndexPattern();
|
|
|
|
// Last, import a saved object connected to the saved search
|
|
// This should NOT show the modal
|
|
await PageObjects.settings.navigateTo();
|
|
await PageObjects.settings.clickKibanaSavedObjects();
|
|
await PageObjects.settings.importFile(path.join(__dirname, 'exports', '_import_objects_connected_to_saved_search.json'));
|
|
await PageObjects.common.clickConfirmOnModal();
|
|
await PageObjects.header.waitUntilLoadingHasFinished();
|
|
|
|
await PageObjects.settings.clickVisualizationsTab();
|
|
const vizRowCount = await retry.try(async () => {
|
|
const rows = await PageObjects.settings.getVisualizationRows();
|
|
return rows.length;
|
|
});
|
|
expect(vizRowCount).to.be(1);
|
|
|
|
await PageObjects.settings.clickSearchesTab();
|
|
const searchRowCount = await retry.try(async () => {
|
|
const rows = await PageObjects.settings.getVisualizationRows();
|
|
return rows.length;
|
|
});
|
|
expect(searchRowCount).to.be(1);
|
|
});
|
|
});
|
|
}
|