[Maps] fix users without access to Maps should not have the option to create them (#88830) (#89209)

* [Maps] fix users without access to Maps should not have the option to create them

* fix test message

* wrap add geo field trigger in show capabilities check

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Nathan Reese 2021-01-25 14:13:56 -07:00 committed by GitHub
parent f9bce39ad8
commit a0d9f75f02
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 62 additions and 30 deletions

View file

@ -160,11 +160,19 @@ export class MapsPlugin
public start(core: CoreStart, plugins: MapsPluginStartDependencies): MapsStartApi {
setLicensingPluginStart(plugins.licensing);
plugins.uiActions.addTriggerAction(VISUALIZE_GEO_FIELD_TRIGGER, visualizeGeoFieldAction);
setStartServices(core, plugins);
// unregisters the OSS alias
plugins.visualizations.unRegisterAlias(PLUGIN_ID_OSS);
if (core.application.capabilities.maps.show) {
plugins.uiActions.addTriggerAction(VISUALIZE_GEO_FIELD_TRIGGER, visualizeGeoFieldAction);
}
if (!core.application.capabilities.maps.save) {
plugins.visualizations.unRegisterAlias(APP_ID);
}
return {
createLayerDescriptors,
registerLayerWizard,

View file

@ -12,42 +12,66 @@ export default function ({ getService, getPageObjects }) {
const security = getService('security');
describe('visualize create menu', () => {
before(async () => {
await security.testUser.setRoles(
['test_logstash_reader', 'global_maps_all', 'geoshape_data_reader', 'global_visualize_all'],
false
);
describe('maps visualize alias', () => {
describe('with write permission', () => {
before(async () => {
await security.testUser.setRoles(['global_maps_all', 'global_visualize_all'], false);
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.navigateToNewVisualization();
});
it('should show maps application in create menu', async () => {
const hasMapsApp = await PageObjects.visualize.hasMapsApp();
expect(hasMapsApp).to.equal(true);
});
it('should take users to Maps application when Maps is clicked', async () => {
await PageObjects.visualize.clickMapsApp();
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.maps.waitForLayersToLoad();
const doesLayerExist = await PageObjects.maps.doesLayerExist('Road map');
expect(doesLayerExist).to.equal(true);
});
});
describe('without write permission', () => {
before(async () => {
await security.testUser.setRoles(['global_maps_read', 'global_visualize_all'], false);
await PageObjects.visualize.navigateToNewVisualization();
});
after(async () => {
await security.testUser.restoreDefaults();
});
it('should not show maps application in create menu', async () => {
const hasMapsApp = await PageObjects.visualize.hasMapsApp();
expect(hasMapsApp).to.equal(false);
});
});
});
after(async () => {
await security.testUser.restoreDefaults();
});
describe('aggregion based visualizations', () => {
before(async () => {
await security.testUser.setRoles(['global_visualize_all'], false);
it('should show maps application in create menu', async () => {
const hasMapsApp = await PageObjects.visualize.hasMapsApp();
expect(hasMapsApp).to.equal(true);
});
await PageObjects.visualize.navigateToNewAggBasedVisualization();
});
it('should not show legacy region map visualizion in create menu', async () => {
await PageObjects.visualize.clickAggBasedVisualizations();
const hasLegecyViz = await PageObjects.visualize.hasRegionMap();
expect(hasLegecyViz).to.equal(false);
});
after(async () => {
await security.testUser.restoreDefaults();
});
it('should not show legacy tilemap map visualizion in create menu', async () => {
const hasLegecyViz = await PageObjects.visualize.hasTileMap();
expect(hasLegecyViz).to.equal(false);
});
it('should not show legacy region map visualizion in create menu', async () => {
const hasLegecyViz = await PageObjects.visualize.hasRegionMap();
expect(hasLegecyViz).to.equal(false);
});
it('should take users to Maps application when Maps is clicked', async () => {
await PageObjects.visualize.goBackToGroups();
await PageObjects.visualize.clickMapsApp();
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.maps.waitForLayersToLoad();
const doesLayerExist = await PageObjects.maps.doesLayerExist('Road map');
expect(doesLayerExist).to.equal(true);
it('should not show legacy tilemap map visualizion in create menu', async () => {
const hasLegecyViz = await PageObjects.visualize.hasTileMap();
expect(hasLegecyViz).to.equal(false);
});
});
});
}