diff --git a/src/legacy/core_plugins/kibana/index.js b/src/legacy/core_plugins/kibana/index.js index 61e605163486..d58ebec0be33 100644 --- a/src/legacy/core_plugins/kibana/index.js +++ b/src/legacy/core_plugins/kibana/index.js @@ -291,6 +291,7 @@ export default function (kibana) { kibana: { settings: true, index_patterns: true, + objects: true, }, } }; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.js b/src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.js index 94ffff0c5c6c..dc135fb19587 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.js @@ -87,7 +87,8 @@ function destroyObjectsTable() { uiRoutes .when('/management/kibana/objects', { template: objectIndexHTML, - k7Breadcrumbs: getIndexBreadcrumbs + k7Breadcrumbs: getIndexBreadcrumbs, + requireUICapability: 'management.kibana.objects', }) .when('/management/kibana/objects/:service', { redirectTo: '/management/kibana/objects' diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/_view.js b/src/legacy/core_plugins/kibana/public/management/sections/objects/_view.js index 085edf4b1795..f3d2010fd0c3 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/_view.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/objects/_view.js @@ -39,7 +39,8 @@ const location = 'SavedObject view'; uiRoutes .when('/management/kibana/objects/:service/:id', { template: objectViewHTML, - k7Breadcrumbs: getViewBreadcrumbs + k7Breadcrumbs: getViewBreadcrumbs, + requireUICapability: 'management.kibana.objects', }); uiModules.get('apps/management', ['monospaced.elastic']) @@ -89,7 +90,7 @@ uiModules.get('apps/management', ['monospaced.elastic']) field.type = 'boolean'; field.value = field.value; } else if (_.isPlainObject(field.value)) { - // do something recursive + // do something recursive return _.reduce(field.value, _.partialRight(createField, parents), memo); } diff --git a/x-pack/plugins/security/server/lib/authorization/privileges/feature_privilege_builder/saved_objects_management.ts b/x-pack/plugins/security/server/lib/authorization/privileges/feature_privilege_builder/saved_objects_management.ts index 51f38113d398..7498a0e0bf71 100644 --- a/x-pack/plugins/security/server/lib/authorization/privileges/feature_privilege_builder/saved_objects_management.ts +++ b/x-pack/plugins/security/server/lib/authorization/privileges/feature_privilege_builder/saved_objects_management.ts @@ -13,6 +13,10 @@ import { BaseFeaturePrivilegeBuilder } from './feature_privilege_builder'; export class FeaturePrivilegeSavedObjectsManagementBuilder extends BaseFeaturePrivilegeBuilder { public getActions(privilegeDefinition: FeatureKibanaPrivileges, feature: Feature): string[] { + // TODO: Revisit if/when savedObjectsManagement UI Capabilities are refactored + if (feature.id !== 'savedObjectsManagement') { + return []; + } return uniq([ ...flatten( privilegeDefinition.savedObject.all.map(type => [ diff --git a/x-pack/plugins/security/server/lib/authorization/privileges/privileges.test.ts b/x-pack/plugins/security/server/lib/authorization/privileges/privileges.test.ts index ccd2272f55a1..e18b9ecdf6fe 100644 --- a/x-pack/plugins/security/server/lib/authorization/privileges/privileges.test.ts +++ b/x-pack/plugins/security/server/lib/authorization/privileges/privileges.test.ts @@ -205,14 +205,6 @@ describe('features', () => { actions.savedObject.get('all-savedObject-read-2', 'bulk_get'), actions.savedObject.get('all-savedObject-read-2', 'get'), actions.savedObject.get('all-savedObject-read-2', 'find'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-1', 'delete'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-1', 'edit'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-1', 'read'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-2', 'delete'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-2', 'edit'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-2', 'read'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-read-1', 'read'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-read-2', 'read'), actions.ui.get('foo', 'all-ui-1'), actions.ui.get('foo', 'all-ui-2'), actions.allHack, @@ -240,14 +232,6 @@ describe('features', () => { actions.savedObject.get('read-savedObject-read-2', 'bulk_get'), actions.savedObject.get('read-savedObject-read-2', 'get'), actions.savedObject.get('read-savedObject-read-2', 'find'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'delete'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'edit'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'read'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-2', 'delete'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-2', 'edit'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-2', 'read'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-read-1', 'read'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-read-2', 'read'), actions.ui.get('foo', 'read-ui-1'), actions.ui.get('foo', 'read-ui-2'), ], @@ -445,14 +429,6 @@ describe('features', () => { actions.savedObject.get('bar-savedObject-read-2', 'bulk_get'), actions.savedObject.get('bar-savedObject-read-2', 'get'), actions.savedObject.get('bar-savedObject-read-2', 'find'), - actions.ui.get('savedObjectsManagement', 'bar-savedObject-all-1', 'delete'), - actions.ui.get('savedObjectsManagement', 'bar-savedObject-all-1', 'edit'), - actions.ui.get('savedObjectsManagement', 'bar-savedObject-all-1', 'read'), - actions.ui.get('savedObjectsManagement', 'bar-savedObject-all-2', 'delete'), - actions.ui.get('savedObjectsManagement', 'bar-savedObject-all-2', 'edit'), - actions.ui.get('savedObjectsManagement', 'bar-savedObject-all-2', 'read'), - actions.ui.get('savedObjectsManagement', 'bar-savedObject-read-1', 'read'), - actions.ui.get('savedObjectsManagement', 'bar-savedObject-read-2', 'read'), actions.ui.get('foo', 'bar-ui-1'), actions.ui.get('foo', 'bar-ui-2'), actions.ui.get('catalogue', 'all-catalogue-1'), @@ -479,14 +455,6 @@ describe('features', () => { actions.savedObject.get('all-savedObject-read-2', 'bulk_get'), actions.savedObject.get('all-savedObject-read-2', 'get'), actions.savedObject.get('all-savedObject-read-2', 'find'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-1', 'delete'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-1', 'edit'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-1', 'read'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-2', 'delete'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-2', 'edit'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-all-2', 'read'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-read-1', 'read'), - actions.ui.get('savedObjectsManagement', 'all-savedObject-read-2', 'read'), actions.ui.get('foo', 'all-ui-1'), actions.ui.get('foo', 'all-ui-2'), actions.ui.get('catalogue', 'read-catalogue-1'), @@ -513,14 +481,6 @@ describe('features', () => { actions.savedObject.get('read-savedObject-read-2', 'bulk_get'), actions.savedObject.get('read-savedObject-read-2', 'get'), actions.savedObject.get('read-savedObject-read-2', 'find'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'delete'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'edit'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'read'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-2', 'delete'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-2', 'edit'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-2', 'read'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-read-1', 'read'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-read-2', 'read'), actions.ui.get('foo', 'read-ui-1'), actions.ui.get('foo', 'read-ui-2'), actions.allHack, @@ -612,14 +572,6 @@ describe('features', () => { actions.savedObject.get('read-savedObject-read-2', 'bulk_get'), actions.savedObject.get('read-savedObject-read-2', 'get'), actions.savedObject.get('read-savedObject-read-2', 'find'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'delete'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'edit'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'read'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-2', 'delete'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-2', 'edit'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-all-2', 'read'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-read-1', 'read'), - actions.ui.get('savedObjectsManagement', 'read-savedObject-read-2', 'read'), actions.ui.get('foo', 'read-ui-1'), actions.ui.get('foo', 'read-ui-2'), ]); @@ -670,6 +622,90 @@ describe('features', () => { }); }); +describe('savedObjectsManagement feature', () => { + test(`saved objects privileges create 'savedObjectsManagement' actions`, () => { + const features: Feature[] = [ + { + id: 'savedObjectsManagement', + name: 'Saved Objects Management', + icon: 'arrowDown', + app: [], + catalogue: [], + management: {}, + privileges: { + all: { + ui: [], + savedObject: { + all: ['all-savedObject-all-1'], + read: ['all-savedObject-read-1'], + }, + }, + read: { + ui: [], + savedObject: { + all: ['read-savedObject-all-1'], + read: ['read-savedObject-read-1'], + }, + }, + }, + }, + ]; + + const mockXPackMainPlugin = { + getFeatures: jest.fn().mockReturnValue(features), + }; + + const privileges = privilegesFactory(actions, mockXPackMainPlugin as any); + + const actual = privileges.get(); + expect(actual).toHaveProperty('features.savedObjectsManagement.all', [ + actions.login, + actions.version, + actions.savedObject.get('all-savedObject-all-1', 'bulk_get'), + actions.savedObject.get('all-savedObject-all-1', 'get'), + actions.savedObject.get('all-savedObject-all-1', 'find'), + actions.savedObject.get('all-savedObject-all-1', 'create'), + actions.savedObject.get('all-savedObject-all-1', 'bulk_create'), + actions.savedObject.get('all-savedObject-all-1', 'update'), + actions.savedObject.get('all-savedObject-all-1', 'delete'), + + actions.savedObject.get('all-savedObject-read-1', 'bulk_get'), + actions.savedObject.get('all-savedObject-read-1', 'get'), + actions.savedObject.get('all-savedObject-read-1', 'find'), + + actions.ui.get('savedObjectsManagement', 'all-savedObject-all-1', 'delete'), + actions.ui.get('savedObjectsManagement', 'all-savedObject-all-1', 'edit'), + actions.ui.get('savedObjectsManagement', 'all-savedObject-all-1', 'read'), + + actions.ui.get('savedObjectsManagement', 'all-savedObject-read-1', 'read'), + + actions.allHack, + ]); + + expect(actual).toHaveProperty('features.savedObjectsManagement.read', [ + actions.login, + actions.version, + actions.savedObject.get('read-savedObject-all-1', 'bulk_get'), + actions.savedObject.get('read-savedObject-all-1', 'get'), + actions.savedObject.get('read-savedObject-all-1', 'find'), + actions.savedObject.get('read-savedObject-all-1', 'create'), + actions.savedObject.get('read-savedObject-all-1', 'bulk_create'), + actions.savedObject.get('read-savedObject-all-1', 'update'), + actions.savedObject.get('read-savedObject-all-1', 'delete'), + + actions.savedObject.get('read-savedObject-read-1', 'bulk_get'), + actions.savedObject.get('read-savedObject-read-1', 'get'), + actions.savedObject.get('read-savedObject-read-1', 'find'), + + actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'delete'), + actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'edit'), + actions.ui.get('savedObjectsManagement', 'read-savedObject-all-1', 'read'), + + actions.ui.get('savedObjectsManagement', 'read-savedObject-read-1', 'read'), + ]); + }); +}); + describe('reserved', () => { test('actions defined at the feature cascade to the privileges', () => { const features: Feature[] = [ @@ -814,14 +850,6 @@ describe('reserved', () => { actions.savedObject.get('savedObject-read-2', 'bulk_get'), actions.savedObject.get('savedObject-read-2', 'get'), actions.savedObject.get('savedObject-read-2', 'find'), - actions.ui.get('savedObjectsManagement', 'savedObject-all-1', 'delete'), - actions.ui.get('savedObjectsManagement', 'savedObject-all-1', 'edit'), - actions.ui.get('savedObjectsManagement', 'savedObject-all-1', 'read'), - actions.ui.get('savedObjectsManagement', 'savedObject-all-2', 'delete'), - actions.ui.get('savedObjectsManagement', 'savedObject-all-2', 'edit'), - actions.ui.get('savedObjectsManagement', 'savedObject-all-2', 'read'), - actions.ui.get('savedObjectsManagement', 'savedObject-read-1', 'read'), - actions.ui.get('savedObjectsManagement', 'savedObject-read-2', 'read'), actions.ui.get('foo', 'ui-1'), actions.ui.get('foo', 'ui-2'), ]); diff --git a/x-pack/plugins/spaces/server/lib/toggle_ui_capabilities.ts b/x-pack/plugins/spaces/server/lib/toggle_ui_capabilities.ts index 4cec018959ab..0a2368b07dca 100644 --- a/x-pack/plugins/spaces/server/lib/toggle_ui_capabilities.ts +++ b/x-pack/plugins/spaces/server/lib/toggle_ui_capabilities.ts @@ -60,6 +60,21 @@ function toggleDisabledFeatures( }); }); + // TODO: Revisit if/when savedObjectsManagement UI Capabilities are refactored + if (feature.id === 'savedObjectsManagement') { + const capability: Record> = uiCapabilities[ + feature.id + ] as Record>; + + Object.keys(capability).forEach(savedObjectType => { + Object.keys(capability[savedObjectType]).forEach(typeCapability => { + capability[savedObjectType][typeCapability] = false; + }); + }); + + continue; + } + // Disable "sub features" that match the disabled feature if (uiCapabilities.hasOwnProperty(feature.id)) { const capability = uiCapabilities[feature.id]; diff --git a/x-pack/plugins/xpack_main/index.js b/x-pack/plugins/xpack_main/index.js index bfa24efc2624..0166db5e56c4 100644 --- a/x-pack/plugins/xpack_main/index.js +++ b/x-pack/plugins/xpack_main/index.js @@ -128,7 +128,8 @@ export const xpackMain = (kibana) => { mirrorPluginStatus(server.plugins.elasticsearch, this, 'yellow', 'red'); setupXPackMain(server); - registerOssFeatures(server.plugins.xpack_main.registerFeature); + const { types: savedObjectTypes } = server.savedObjects; + registerOssFeatures(server.plugins.xpack_main.registerFeature, savedObjectTypes); // register routes xpackInfoRoute(server); diff --git a/x-pack/plugins/xpack_main/server/lib/register_oss_features.test.ts b/x-pack/plugins/xpack_main/server/lib/register_oss_features.test.ts new file mode 100644 index 000000000000..8fb5bfd3e99e --- /dev/null +++ b/x-pack/plugins/xpack_main/server/lib/register_oss_features.test.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { FeatureRegistry } from './feature_registry'; +import { registerOssFeatures } from './register_oss_features'; + +describe('registerOssFeatures', () => { + it('allows features to be registered', () => { + const registry = new FeatureRegistry(); + const savedObjectTypes = ['foo', 'bar']; + registerOssFeatures(feature => registry.register(feature), savedObjectTypes); + + const features = registry.getAll(); + expect(features.map(f => f.id)).toMatchInlineSnapshot(` +Array [ + "discover", + "visualize", + "dashboard", + "dev_tools", + "advancedSettings", + "indexPatterns", + "savedObjectsManagement", + "timelion", +] +`); + }); +}); diff --git a/x-pack/plugins/xpack_main/server/lib/register_oss_features.ts b/x-pack/plugins/xpack_main/server/lib/register_oss_features.ts index 7af1918f66ad..cb9bbfeb6dfb 100644 --- a/x-pack/plugins/xpack_main/server/lib/register_oss_features.ts +++ b/x-pack/plugins/xpack_main/server/lib/register_oss_features.ts @@ -6,189 +6,219 @@ import { i18n } from '@kbn/i18n'; import { Feature } from './feature_registry'; -const kibanaFeatures: Feature[] = [ - { - id: 'discover', - name: i18n.translate('xpack.main.featureRegistry.discoverFeatureName', { - defaultMessage: 'Discover', - }), - icon: 'discoverApp', - navLinkId: 'kibana:discover', - app: ['kibana'], - catalogue: ['discover'], - privileges: { - all: { - savedObject: { - all: ['search', 'url'], - read: ['index-pattern'], +const buildKibanaFeatures = (savedObjectTypes: string[]) => { + return [ + { + id: 'discover', + name: i18n.translate('xpack.main.featureRegistry.discoverFeatureName', { + defaultMessage: 'Discover', + }), + icon: 'discoverApp', + navLinkId: 'kibana:discover', + app: ['kibana'], + catalogue: ['discover'], + privileges: { + all: { + savedObject: { + all: ['search', 'url'], + read: ['index-pattern'], + }, + ui: ['show', 'createShortUrl', 'save'], }, - ui: ['show', 'createShortUrl', 'save'], - }, - read: { - savedObject: { - all: [], - read: ['index-pattern', 'search', 'url'], + read: { + savedObject: { + all: [], + read: ['index-pattern', 'search', 'url'], + }, + ui: ['show'], }, - ui: ['show'], }, }, - }, - { - id: 'visualize', - name: i18n.translate('xpack.main.featureRegistry.visualizeFeatureName', { - defaultMessage: 'Visualize', - }), - icon: 'visualizeApp', - navLinkId: 'kibana:visualize', - app: ['kibana'], - catalogue: ['visualize'], - privileges: { - all: { - savedObject: { - all: ['visualization', 'url'], - read: ['index-pattern', 'search'], + { + id: 'visualize', + name: i18n.translate('xpack.main.featureRegistry.visualizeFeatureName', { + defaultMessage: 'Visualize', + }), + icon: 'visualizeApp', + navLinkId: 'kibana:visualize', + app: ['kibana'], + catalogue: ['visualize'], + privileges: { + all: { + savedObject: { + all: ['visualization', 'url'], + read: ['index-pattern', 'search'], + }, + ui: ['show', 'createShortUrl', 'delete', 'save'], }, - ui: ['show', 'createShortUrl', 'delete', 'save'], - }, - read: { - savedObject: { - all: [], - read: ['index-pattern', 'search', 'visualization'], + read: { + savedObject: { + all: [], + read: ['index-pattern', 'search', 'visualization'], + }, + ui: ['show'], }, - ui: ['show'], }, }, - }, - { - id: 'dashboard', - name: i18n.translate('xpack.main.featureRegistry.dashboardFeatureName', { - defaultMessage: 'Dashboard', - }), - icon: 'dashboardApp', - navLinkId: 'kibana:dashboard', - app: ['kibana'], - catalogue: ['dashboard'], - privileges: { - all: { - savedObject: { - all: ['dashboard', 'url'], - read: [ - 'index-pattern', - 'search', - 'visualization', - 'timelion-sheet', - 'canvas-workpad', - 'map', - ], + { + id: 'dashboard', + name: i18n.translate('xpack.main.featureRegistry.dashboardFeatureName', { + defaultMessage: 'Dashboard', + }), + icon: 'dashboardApp', + navLinkId: 'kibana:dashboard', + app: ['kibana'], + catalogue: ['dashboard'], + privileges: { + all: { + savedObject: { + all: ['dashboard', 'url'], + read: [ + 'index-pattern', + 'search', + 'visualization', + 'timelion-sheet', + 'canvas-workpad', + 'map', + ], + }, + ui: ['createNew', 'show', 'showWriteControls'], }, - ui: ['createNew', 'show', 'showWriteControls'], - }, - read: { - savedObject: { - all: [], - read: [ - 'index-pattern', - 'search', - 'visualization', - 'timelion-sheet', - 'canvas-workpad', - 'map', - 'dashboard', - ], + read: { + savedObject: { + all: [], + read: [ + 'index-pattern', + 'search', + 'visualization', + 'timelion-sheet', + 'canvas-workpad', + 'map', + 'dashboard', + ], + }, + ui: ['show'], }, - ui: ['show'], }, }, - }, - { - id: 'dev_tools', - name: i18n.translate('xpack.main.featureRegistry.devToolsFeatureName', { - defaultMessage: 'Dev Tools', - }), - icon: 'devToolsApp', - navLinkId: 'kibana:dev_tools', - app: ['kibana'], - catalogue: ['console', 'searchprofiler', 'grokdebugger'], - privileges: { - all: { - api: ['console'], - savedObject: { - all: [], - read: [], + { + id: 'dev_tools', + name: i18n.translate('xpack.main.featureRegistry.devToolsFeatureName', { + defaultMessage: 'Dev Tools', + }), + icon: 'devToolsApp', + navLinkId: 'kibana:dev_tools', + app: ['kibana'], + catalogue: ['console', 'searchprofiler', 'grokdebugger'], + privileges: { + all: { + api: ['console'], + savedObject: { + all: [], + read: [], + }, + ui: ['show', 'save'], + }, + read: { + api: ['console'], + savedObject: { + all: [], + read: [], + }, + ui: ['show'], }, - ui: ['show', 'save'], }, - read: { - api: ['console'], - savedObject: { - all: [], - read: [], + privilegesTooltip: i18n.translate('xpack.main.featureRegistry.devToolsPrivilegesTooltip', { + defaultMessage: + 'User should also be granted the appropriate Elasticsearch cluster and index privileges', + }), + }, + { + id: 'advancedSettings', + name: i18n.translate('xpack.main.featureRegistry.advancedSettingsFeatureName', { + defaultMessage: 'Advanced Settings', + }), + icon: 'advancedSettingsApp', + app: ['kibana'], + catalogue: ['advanced_settings'], + management: { + kibana: ['settings'], + }, + privileges: { + all: { + savedObject: { + all: ['config'], + read: [], + }, + ui: ['save'], + }, + read: { + savedObject: { + all: [], + read: [], + }, + ui: [], }, - ui: ['show'], }, }, - privilegesTooltip: i18n.translate('xpack.main.featureRegistry.devToolsPrivilegesTooltip', { - defaultMessage: - 'User should also be granted the appropriate Elasticsearch cluster and index privileges', - }), - }, - { - id: 'advancedSettings', - name: i18n.translate('xpack.main.featureRegistry.advancedSettingsFeatureName', { - defaultMessage: 'Advanced Settings', - }), - icon: 'advancedSettingsApp', - app: ['kibana'], - catalogue: ['advanced_settings'], - management: { - kibana: ['settings'], - }, - privileges: { - all: { - savedObject: { - all: ['config'], - read: [], - }, - ui: ['save'], + { + id: 'indexPatterns', + name: i18n.translate('xpack.main.featureRegistry.indexPatternFeatureName', { + defaultMessage: 'Index Pattern Management', + }), + icon: 'indexPatternApp', + app: ['kibana'], + catalogue: ['index_patterns'], + management: { + kibana: ['index_patterns'], }, - read: { - savedObject: { - all: [], - read: [], + privileges: { + all: { + savedObject: { + all: ['index-pattern'], + read: [], + }, + ui: ['save'], + }, + read: { + savedObject: { + all: [], + read: ['index-pattern'], + }, + ui: [], }, - ui: [], }, }, - }, - { - id: 'indexPatterns', - name: i18n.translate('xpack.main.featureRegistry.indexPatternFeatureName', { - defaultMessage: 'Index Pattern Management', - }), - icon: 'indexPatternApp', - app: ['kibana'], - catalogue: ['index_patterns'], - management: { - kibana: ['index_patterns'], - }, - privileges: { - all: { - savedObject: { - all: ['index-pattern'], - read: [], - }, - ui: ['save'], + { + id: 'savedObjectsManagement', + name: i18n.translate('xpack.main.featureRegistry.savedObjectsManagementFeatureName', { + defaultMessage: 'Saved Objects Management', + }), + icon: 'savedObjectsApp', + app: ['kibana'], + catalogue: ['saved_objects'], + management: { + kibana: ['objects'], }, - read: { - savedObject: { - all: [], - read: ['index-pattern'], + privileges: { + all: { + savedObject: { + all: [...savedObjectTypes], + read: [], + }, + ui: [], + }, + read: { + savedObject: { + all: [], + read: [...savedObjectTypes], + }, + ui: [], }, - ui: [], }, }, - }, -]; + ]; +}; const timelionFeatures: Feature[] = [ { @@ -217,7 +247,11 @@ const timelionFeatures: Feature[] = [ }, ]; -export function registerOssFeatures(registerFeature: (feature: Feature) => void) { +export function registerOssFeatures( + registerFeature: (feature: Feature) => void, + savedObjectTypes: string[] +) { + const kibanaFeatures = buildKibanaFeatures(savedObjectTypes); for (const feature of [...kibanaFeatures, ...timelionFeatures]) { registerFeature(feature); } diff --git a/x-pack/test/api_integration/apis/security/privileges.ts b/x-pack/test/api_integration/apis/security/privileges.ts index eea25be405c6..9bdec4b97b96 100644 --- a/x-pack/test/api_integration/apis/security/privileges.ts +++ b/x-pack/test/api_integration/apis/security/privileges.ts @@ -67,17 +67,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/search/delete`, - `ui:${version}:savedObjectsManagement/search/edit`, - `ui:${version}:savedObjectsManagement/search/read`, - `ui:${version}:savedObjectsManagement/url/delete`, - `ui:${version}:savedObjectsManagement/url/edit`, - `ui:${version}:savedObjectsManagement/url/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:discover/show`, `ui:${version}:discover/createShortUrl`, `ui:${version}:discover/save`, @@ -101,10 +90,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/search/read`, - `ui:${version}:savedObjectsManagement/url/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:discover/show`, ], }, @@ -145,18 +130,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/visualization/delete`, - `ui:${version}:savedObjectsManagement/visualization/edit`, - `ui:${version}:savedObjectsManagement/visualization/read`, - `ui:${version}:savedObjectsManagement/url/delete`, - `ui:${version}:savedObjectsManagement/url/edit`, - `ui:${version}:savedObjectsManagement/url/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/search/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:visualize/show`, `ui:${version}:visualize/createShortUrl`, `ui:${version}:visualize/delete`, @@ -181,10 +154,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/search/read`, - `ui:${version}:savedObjectsManagement/visualization/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:visualize/show`, ], }, @@ -237,22 +206,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/dashboard/delete`, - `ui:${version}:savedObjectsManagement/dashboard/edit`, - `ui:${version}:savedObjectsManagement/dashboard/read`, - `ui:${version}:savedObjectsManagement/url/delete`, - `ui:${version}:savedObjectsManagement/url/edit`, - `ui:${version}:savedObjectsManagement/url/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/search/read`, - `ui:${version}:savedObjectsManagement/visualization/read`, - `ui:${version}:savedObjectsManagement/timelion-sheet/read`, - `ui:${version}:savedObjectsManagement/canvas-workpad/read`, - `ui:${version}:savedObjectsManagement/map/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:dashboard/createNew`, `ui:${version}:dashboard/show`, `ui:${version}:dashboard/showWriteControls`, @@ -288,14 +241,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/search/read`, - `ui:${version}:savedObjectsManagement/visualization/read`, - `ui:${version}:savedObjectsManagement/timelion-sheet/read`, - `ui:${version}:savedObjectsManagement/canvas-workpad/read`, - `ui:${version}:savedObjectsManagement/map/read`, - `ui:${version}:savedObjectsManagement/dashboard/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:dashboard/show`, ], }, @@ -319,10 +264,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:dev_tools/show`, `ui:${version}:dev_tools/save`, 'allHack:', @@ -339,7 +280,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:dev_tools/show`, ], }, @@ -364,12 +304,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:telemetry/bulk_create`, `saved_object:${version}:telemetry/update`, `saved_object:${version}:telemetry/delete`, - `ui:${version}:savedObjectsManagement/config/delete`, - `ui:${version}:savedObjectsManagement/config/edit`, - `ui:${version}:savedObjectsManagement/config/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, `ui:${version}:advancedSettings/save`, 'allHack:', ], @@ -382,7 +316,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/config/read`, ], }, indexPatterns: { @@ -409,13 +342,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/index-pattern/delete`, - `ui:${version}:savedObjectsManagement/index-pattern/edit`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:indexPatterns/save`, 'allHack:', ], @@ -431,8 +357,345 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, + ], + }, + savedObjectsManagement: { + all: [ + 'login:', + `version:${version}`, + `app:${version}:kibana`, + `ui:${version}:catalogue/saved_objects`, + `ui:${version}:management/kibana/objects`, + `saved_object:${version}:config/bulk_get`, + `saved_object:${version}:config/get`, + `saved_object:${version}:config/find`, + `saved_object:${version}:config/create`, + `saved_object:${version}:config/bulk_create`, + `saved_object:${version}:config/update`, + `saved_object:${version}:config/delete`, + `saved_object:${version}:telemetry/bulk_get`, + `saved_object:${version}:telemetry/get`, + `saved_object:${version}:telemetry/find`, + `saved_object:${version}:telemetry/create`, + `saved_object:${version}:telemetry/bulk_create`, + `saved_object:${version}:telemetry/update`, + `saved_object:${version}:telemetry/delete`, + `saved_object:${version}:graph-workspace/bulk_get`, + `saved_object:${version}:graph-workspace/get`, + `saved_object:${version}:graph-workspace/find`, + `saved_object:${version}:graph-workspace/create`, + `saved_object:${version}:graph-workspace/bulk_create`, + `saved_object:${version}:graph-workspace/update`, + `saved_object:${version}:graph-workspace/delete`, + `saved_object:${version}:space/bulk_get`, + `saved_object:${version}:space/get`, + `saved_object:${version}:space/find`, + `saved_object:${version}:space/create`, + `saved_object:${version}:space/bulk_create`, + `saved_object:${version}:space/update`, + `saved_object:${version}:space/delete`, + `saved_object:${version}:ml-telemetry/bulk_get`, + `saved_object:${version}:ml-telemetry/get`, + `saved_object:${version}:ml-telemetry/find`, + `saved_object:${version}:ml-telemetry/create`, + `saved_object:${version}:ml-telemetry/bulk_create`, + `saved_object:${version}:ml-telemetry/update`, + `saved_object:${version}:ml-telemetry/delete`, + `saved_object:${version}:apm-telemetry/bulk_get`, + `saved_object:${version}:apm-telemetry/get`, + `saved_object:${version}:apm-telemetry/find`, + `saved_object:${version}:apm-telemetry/create`, + `saved_object:${version}:apm-telemetry/bulk_create`, + `saved_object:${version}:apm-telemetry/update`, + `saved_object:${version}:apm-telemetry/delete`, + `saved_object:${version}:map/bulk_get`, + `saved_object:${version}:map/get`, + `saved_object:${version}:map/find`, + `saved_object:${version}:map/create`, + `saved_object:${version}:map/bulk_create`, + `saved_object:${version}:map/update`, + `saved_object:${version}:map/delete`, + `saved_object:${version}:maps-telemetry/bulk_get`, + `saved_object:${version}:maps-telemetry/get`, + `saved_object:${version}:maps-telemetry/find`, + `saved_object:${version}:maps-telemetry/create`, + `saved_object:${version}:maps-telemetry/bulk_create`, + `saved_object:${version}:maps-telemetry/update`, + `saved_object:${version}:maps-telemetry/delete`, + `saved_object:${version}:canvas-workpad/bulk_get`, + `saved_object:${version}:canvas-workpad/get`, + `saved_object:${version}:canvas-workpad/find`, + `saved_object:${version}:canvas-workpad/create`, + `saved_object:${version}:canvas-workpad/bulk_create`, + `saved_object:${version}:canvas-workpad/update`, + `saved_object:${version}:canvas-workpad/delete`, + `saved_object:${version}:canvas-element/bulk_get`, + `saved_object:${version}:canvas-element/get`, + `saved_object:${version}:canvas-element/find`, + `saved_object:${version}:canvas-element/create`, + `saved_object:${version}:canvas-element/bulk_create`, + `saved_object:${version}:canvas-element/update`, + `saved_object:${version}:canvas-element/delete`, + `saved_object:${version}:infrastructure-ui-source/bulk_get`, + `saved_object:${version}:infrastructure-ui-source/get`, + `saved_object:${version}:infrastructure-ui-source/find`, + `saved_object:${version}:infrastructure-ui-source/create`, + `saved_object:${version}:infrastructure-ui-source/bulk_create`, + `saved_object:${version}:infrastructure-ui-source/update`, + `saved_object:${version}:infrastructure-ui-source/delete`, + `saved_object:${version}:upgrade-assistant-reindex-operation/bulk_get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/find`, + `saved_object:${version}:upgrade-assistant-reindex-operation/create`, + `saved_object:${version}:upgrade-assistant-reindex-operation/bulk_create`, + `saved_object:${version}:upgrade-assistant-reindex-operation/update`, + `saved_object:${version}:upgrade-assistant-reindex-operation/delete`, + `saved_object:${version}:upgrade-assistant-telemetry/bulk_get`, + `saved_object:${version}:upgrade-assistant-telemetry/get`, + `saved_object:${version}:upgrade-assistant-telemetry/find`, + `saved_object:${version}:upgrade-assistant-telemetry/create`, + `saved_object:${version}:upgrade-assistant-telemetry/bulk_create`, + `saved_object:${version}:upgrade-assistant-telemetry/update`, + `saved_object:${version}:upgrade-assistant-telemetry/delete`, + `saved_object:${version}:index-pattern/bulk_get`, + `saved_object:${version}:index-pattern/get`, + `saved_object:${version}:index-pattern/find`, + `saved_object:${version}:index-pattern/create`, + `saved_object:${version}:index-pattern/bulk_create`, + `saved_object:${version}:index-pattern/update`, + `saved_object:${version}:index-pattern/delete`, + `saved_object:${version}:visualization/bulk_get`, + `saved_object:${version}:visualization/get`, + `saved_object:${version}:visualization/find`, + `saved_object:${version}:visualization/create`, + `saved_object:${version}:visualization/bulk_create`, + `saved_object:${version}:visualization/update`, + `saved_object:${version}:visualization/delete`, + `saved_object:${version}:search/bulk_get`, + `saved_object:${version}:search/get`, + `saved_object:${version}:search/find`, + `saved_object:${version}:search/create`, + `saved_object:${version}:search/bulk_create`, + `saved_object:${version}:search/update`, + `saved_object:${version}:search/delete`, + `saved_object:${version}:dashboard/bulk_get`, + `saved_object:${version}:dashboard/get`, + `saved_object:${version}:dashboard/find`, + `saved_object:${version}:dashboard/create`, + `saved_object:${version}:dashboard/bulk_create`, + `saved_object:${version}:dashboard/update`, + `saved_object:${version}:dashboard/delete`, + `saved_object:${version}:url/bulk_get`, + `saved_object:${version}:url/get`, + `saved_object:${version}:url/find`, + `saved_object:${version}:url/create`, + `saved_object:${version}:url/bulk_create`, + `saved_object:${version}:url/update`, + `saved_object:${version}:url/delete`, + `saved_object:${version}:server/bulk_get`, + `saved_object:${version}:server/get`, + `saved_object:${version}:server/find`, + `saved_object:${version}:server/create`, + `saved_object:${version}:server/bulk_create`, + `saved_object:${version}:server/update`, + `saved_object:${version}:server/delete`, + `saved_object:${version}:kql-telemetry/bulk_get`, + `saved_object:${version}:kql-telemetry/get`, + `saved_object:${version}:kql-telemetry/find`, + `saved_object:${version}:kql-telemetry/create`, + `saved_object:${version}:kql-telemetry/bulk_create`, + `saved_object:${version}:kql-telemetry/update`, + `saved_object:${version}:kql-telemetry/delete`, + `saved_object:${version}:sample-data-telemetry/bulk_get`, + `saved_object:${version}:sample-data-telemetry/get`, + `saved_object:${version}:sample-data-telemetry/find`, + `saved_object:${version}:sample-data-telemetry/create`, + `saved_object:${version}:sample-data-telemetry/bulk_create`, + `saved_object:${version}:sample-data-telemetry/update`, + `saved_object:${version}:sample-data-telemetry/delete`, + `saved_object:${version}:timelion-sheet/bulk_get`, + `saved_object:${version}:timelion-sheet/get`, + `saved_object:${version}:timelion-sheet/find`, + `saved_object:${version}:timelion-sheet/create`, + `saved_object:${version}:timelion-sheet/bulk_create`, + `saved_object:${version}:timelion-sheet/update`, + `saved_object:${version}:timelion-sheet/delete`, + `saved_object:${version}:ui-metric/bulk_get`, + `saved_object:${version}:ui-metric/get`, + `saved_object:${version}:ui-metric/find`, + `saved_object:${version}:ui-metric/create`, + `saved_object:${version}:ui-metric/bulk_create`, + `saved_object:${version}:ui-metric/update`, + `saved_object:${version}:ui-metric/delete`, + `ui:${version}:savedObjectsManagement/config/delete`, + `ui:${version}:savedObjectsManagement/config/edit`, `ui:${version}:savedObjectsManagement/config/read`, + `ui:${version}:savedObjectsManagement/telemetry/delete`, + `ui:${version}:savedObjectsManagement/telemetry/edit`, + `ui:${version}:savedObjectsManagement/telemetry/read`, + `ui:${version}:savedObjectsManagement/graph-workspace/delete`, + `ui:${version}:savedObjectsManagement/graph-workspace/edit`, + `ui:${version}:savedObjectsManagement/graph-workspace/read`, + `ui:${version}:savedObjectsManagement/space/delete`, + `ui:${version}:savedObjectsManagement/space/edit`, + `ui:${version}:savedObjectsManagement/space/read`, + `ui:${version}:savedObjectsManagement/ml-telemetry/delete`, + `ui:${version}:savedObjectsManagement/ml-telemetry/edit`, + `ui:${version}:savedObjectsManagement/ml-telemetry/read`, + `ui:${version}:savedObjectsManagement/apm-telemetry/delete`, + `ui:${version}:savedObjectsManagement/apm-telemetry/edit`, + `ui:${version}:savedObjectsManagement/apm-telemetry/read`, + `ui:${version}:savedObjectsManagement/map/delete`, + `ui:${version}:savedObjectsManagement/map/edit`, + `ui:${version}:savedObjectsManagement/map/read`, + `ui:${version}:savedObjectsManagement/maps-telemetry/delete`, + `ui:${version}:savedObjectsManagement/maps-telemetry/edit`, + `ui:${version}:savedObjectsManagement/maps-telemetry/read`, + `ui:${version}:savedObjectsManagement/canvas-workpad/delete`, + `ui:${version}:savedObjectsManagement/canvas-workpad/edit`, + `ui:${version}:savedObjectsManagement/canvas-workpad/read`, + `ui:${version}:savedObjectsManagement/canvas-element/delete`, + `ui:${version}:savedObjectsManagement/canvas-element/edit`, + `ui:${version}:savedObjectsManagement/canvas-element/read`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/delete`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/edit`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/delete`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/edit`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/delete`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/edit`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/read`, + `ui:${version}:savedObjectsManagement/index-pattern/delete`, + `ui:${version}:savedObjectsManagement/index-pattern/edit`, + `ui:${version}:savedObjectsManagement/index-pattern/read`, + `ui:${version}:savedObjectsManagement/visualization/delete`, + `ui:${version}:savedObjectsManagement/visualization/edit`, + `ui:${version}:savedObjectsManagement/visualization/read`, + `ui:${version}:savedObjectsManagement/search/delete`, + `ui:${version}:savedObjectsManagement/search/edit`, + `ui:${version}:savedObjectsManagement/search/read`, + `ui:${version}:savedObjectsManagement/dashboard/delete`, + `ui:${version}:savedObjectsManagement/dashboard/edit`, + `ui:${version}:savedObjectsManagement/dashboard/read`, + `ui:${version}:savedObjectsManagement/url/delete`, + `ui:${version}:savedObjectsManagement/url/edit`, + `ui:${version}:savedObjectsManagement/url/read`, + `ui:${version}:savedObjectsManagement/server/delete`, + `ui:${version}:savedObjectsManagement/server/edit`, + `ui:${version}:savedObjectsManagement/server/read`, + `ui:${version}:savedObjectsManagement/kql-telemetry/delete`, + `ui:${version}:savedObjectsManagement/kql-telemetry/edit`, + `ui:${version}:savedObjectsManagement/kql-telemetry/read`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/delete`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/edit`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/read`, + `ui:${version}:savedObjectsManagement/timelion-sheet/delete`, + `ui:${version}:savedObjectsManagement/timelion-sheet/edit`, + `ui:${version}:savedObjectsManagement/timelion-sheet/read`, + `ui:${version}:savedObjectsManagement/ui-metric/delete`, + `ui:${version}:savedObjectsManagement/ui-metric/edit`, + `ui:${version}:savedObjectsManagement/ui-metric/read`, + 'allHack:', + ], + read: [ + 'login:', + `version:${version}`, + `app:${version}:kibana`, + `ui:${version}:catalogue/saved_objects`, + `ui:${version}:management/kibana/objects`, + `saved_object:${version}:config/bulk_get`, + `saved_object:${version}:config/get`, + `saved_object:${version}:config/find`, + `saved_object:${version}:telemetry/bulk_get`, + `saved_object:${version}:telemetry/get`, + `saved_object:${version}:telemetry/find`, + `saved_object:${version}:graph-workspace/bulk_get`, + `saved_object:${version}:graph-workspace/get`, + `saved_object:${version}:graph-workspace/find`, + `saved_object:${version}:space/bulk_get`, + `saved_object:${version}:space/get`, + `saved_object:${version}:space/find`, + `saved_object:${version}:ml-telemetry/bulk_get`, + `saved_object:${version}:ml-telemetry/get`, + `saved_object:${version}:ml-telemetry/find`, + `saved_object:${version}:apm-telemetry/bulk_get`, + `saved_object:${version}:apm-telemetry/get`, + `saved_object:${version}:apm-telemetry/find`, + `saved_object:${version}:map/bulk_get`, + `saved_object:${version}:map/get`, + `saved_object:${version}:map/find`, + `saved_object:${version}:maps-telemetry/bulk_get`, + `saved_object:${version}:maps-telemetry/get`, + `saved_object:${version}:maps-telemetry/find`, + `saved_object:${version}:canvas-workpad/bulk_get`, + `saved_object:${version}:canvas-workpad/get`, + `saved_object:${version}:canvas-workpad/find`, + `saved_object:${version}:canvas-element/bulk_get`, + `saved_object:${version}:canvas-element/get`, + `saved_object:${version}:canvas-element/find`, + `saved_object:${version}:infrastructure-ui-source/bulk_get`, + `saved_object:${version}:infrastructure-ui-source/get`, + `saved_object:${version}:infrastructure-ui-source/find`, + `saved_object:${version}:upgrade-assistant-reindex-operation/bulk_get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/find`, + `saved_object:${version}:upgrade-assistant-telemetry/bulk_get`, + `saved_object:${version}:upgrade-assistant-telemetry/get`, + `saved_object:${version}:upgrade-assistant-telemetry/find`, + `saved_object:${version}:index-pattern/bulk_get`, + `saved_object:${version}:index-pattern/get`, + `saved_object:${version}:index-pattern/find`, + `saved_object:${version}:visualization/bulk_get`, + `saved_object:${version}:visualization/get`, + `saved_object:${version}:visualization/find`, + `saved_object:${version}:search/bulk_get`, + `saved_object:${version}:search/get`, + `saved_object:${version}:search/find`, + `saved_object:${version}:dashboard/bulk_get`, + `saved_object:${version}:dashboard/get`, + `saved_object:${version}:dashboard/find`, + `saved_object:${version}:url/bulk_get`, + `saved_object:${version}:url/get`, + `saved_object:${version}:url/find`, + `saved_object:${version}:server/bulk_get`, + `saved_object:${version}:server/get`, + `saved_object:${version}:server/find`, + `saved_object:${version}:kql-telemetry/bulk_get`, + `saved_object:${version}:kql-telemetry/get`, + `saved_object:${version}:kql-telemetry/find`, + `saved_object:${version}:sample-data-telemetry/bulk_get`, + `saved_object:${version}:sample-data-telemetry/get`, + `saved_object:${version}:sample-data-telemetry/find`, + `saved_object:${version}:timelion-sheet/bulk_get`, + `saved_object:${version}:timelion-sheet/get`, + `saved_object:${version}:timelion-sheet/find`, + `saved_object:${version}:ui-metric/bulk_get`, + `saved_object:${version}:ui-metric/get`, + `saved_object:${version}:ui-metric/find`, + `ui:${version}:savedObjectsManagement/config/read`, + `ui:${version}:savedObjectsManagement/telemetry/read`, + `ui:${version}:savedObjectsManagement/graph-workspace/read`, + `ui:${version}:savedObjectsManagement/space/read`, + `ui:${version}:savedObjectsManagement/ml-telemetry/read`, + `ui:${version}:savedObjectsManagement/apm-telemetry/read`, + `ui:${version}:savedObjectsManagement/map/read`, + `ui:${version}:savedObjectsManagement/maps-telemetry/read`, + `ui:${version}:savedObjectsManagement/canvas-workpad/read`, + `ui:${version}:savedObjectsManagement/canvas-element/read`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/read`, + `ui:${version}:savedObjectsManagement/index-pattern/read`, + `ui:${version}:savedObjectsManagement/visualization/read`, + `ui:${version}:savedObjectsManagement/search/read`, + `ui:${version}:savedObjectsManagement/dashboard/read`, + `ui:${version}:savedObjectsManagement/url/read`, + `ui:${version}:savedObjectsManagement/server/read`, + `ui:${version}:savedObjectsManagement/kql-telemetry/read`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/read`, + `ui:${version}:savedObjectsManagement/timelion-sheet/read`, + `ui:${version}:savedObjectsManagement/ui-metric/read`, ], }, timelion: { @@ -463,14 +726,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/timelion-sheet/delete`, - `ui:${version}:savedObjectsManagement/timelion-sheet/edit`, - `ui:${version}:savedObjectsManagement/timelion-sheet/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:timelion/save`, 'allHack:', ], @@ -490,9 +745,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/timelion-sheet/read`, - `ui:${version}:savedObjectsManagement/config/read`, ], }, graph: { @@ -523,14 +775,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/graph-workspace/delete`, - `ui:${version}:savedObjectsManagement/graph-workspace/edit`, - `ui:${version}:savedObjectsManagement/graph-workspace/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:graph/save`, `ui:${version}:graph/delete`, 'allHack:', @@ -551,9 +795,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/graph-workspace/read`, - `ui:${version}:savedObjectsManagement/config/read`, ], }, apm: { @@ -575,10 +816,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:apm/show`, `ui:${version}:apm/save`, 'allHack:', @@ -594,7 +831,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:apm/show`, ], }, @@ -617,10 +853,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:code/show`, `ui:${version}:code/user`, `ui:${version}:code/admin`, @@ -636,7 +868,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:code/show`, `ui:${version}:code/user`, ], @@ -669,14 +900,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/map/delete`, - `ui:${version}:savedObjectsManagement/map/edit`, - `ui:${version}:savedObjectsManagement/map/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:maps/save`, `ui:${version}:maps/show`, 'allHack:', @@ -697,9 +920,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/map/read`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:maps/show`, ], }, @@ -738,17 +958,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/canvas-workpad/delete`, - `ui:${version}:savedObjectsManagement/canvas-workpad/edit`, - `ui:${version}:savedObjectsManagement/canvas-workpad/read`, - `ui:${version}:savedObjectsManagement/canvas-element/delete`, - `ui:${version}:savedObjectsManagement/canvas-element/edit`, - `ui:${version}:savedObjectsManagement/canvas-element/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:canvas/save`, `ui:${version}:canvas/show`, 'allHack:', @@ -772,10 +981,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/canvas-workpad/read`, - `ui:${version}:savedObjectsManagement/canvas-element/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:canvas/show`, ], }, @@ -805,13 +1010,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/delete`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/edit`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:infrastructure/show`, `ui:${version}:infrastructure/configureSource`, `ui:${version}:infrastructure/save`, @@ -831,8 +1029,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:infrastructure/show`, ], }, @@ -862,13 +1058,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/delete`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/edit`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:logs/show`, `ui:${version}:logs/configureSource`, `ui:${version}:logs/save`, @@ -888,8 +1077,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:logs/show`, ], }, @@ -912,10 +1099,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:siem/show`, 'allHack:', ], @@ -930,7 +1113,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:siem/show`, ], }, @@ -953,10 +1135,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:uptime/save`, 'allHack:', ], @@ -971,7 +1149,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/config/read`, ], }, }, @@ -1012,17 +1189,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/search/delete`, - `ui:${version}:savedObjectsManagement/search/edit`, - `ui:${version}:savedObjectsManagement/search/read`, - `ui:${version}:savedObjectsManagement/url/delete`, - `ui:${version}:savedObjectsManagement/url/edit`, - `ui:${version}:savedObjectsManagement/url/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:discover/show`, `ui:${version}:discover/createShortUrl`, `ui:${version}:discover/save`, @@ -1035,9 +1201,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:visualization/bulk_create`, `saved_object:${version}:visualization/update`, `saved_object:${version}:visualization/delete`, - `ui:${version}:savedObjectsManagement/visualization/delete`, - `ui:${version}:savedObjectsManagement/visualization/edit`, - `ui:${version}:savedObjectsManagement/visualization/read`, `ui:${version}:visualize/show`, `ui:${version}:visualize/createShortUrl`, `ui:${version}:visualize/delete`, @@ -1060,12 +1223,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:map/bulk_get`, `saved_object:${version}:map/get`, `saved_object:${version}:map/find`, - `ui:${version}:savedObjectsManagement/dashboard/delete`, - `ui:${version}:savedObjectsManagement/dashboard/edit`, - `ui:${version}:savedObjectsManagement/dashboard/read`, - `ui:${version}:savedObjectsManagement/timelion-sheet/read`, - `ui:${version}:savedObjectsManagement/canvas-workpad/read`, - `ui:${version}:savedObjectsManagement/map/read`, `ui:${version}:dashboard/createNew`, `ui:${version}:dashboard/show`, `ui:${version}:dashboard/showWriteControls`, @@ -1082,8 +1239,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_create`, `saved_object:${version}:config/update`, `saved_object:${version}:config/delete`, - `ui:${version}:savedObjectsManagement/config/delete`, - `ui:${version}:savedObjectsManagement/config/edit`, `ui:${version}:advancedSettings/save`, `ui:${version}:catalogue/index_patterns`, `ui:${version}:management/kibana/index_patterns`, @@ -1091,22 +1246,9 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:index-pattern/bulk_create`, `saved_object:${version}:index-pattern/update`, `saved_object:${version}:index-pattern/delete`, - `ui:${version}:savedObjectsManagement/index-pattern/delete`, - `ui:${version}:savedObjectsManagement/index-pattern/edit`, `ui:${version}:indexPatterns/save`, - `app:${version}:timelion`, - `ui:${version}:catalogue/timelion`, - `ui:${version}:navLinks/timelion`, - `saved_object:${version}:timelion-sheet/create`, - `saved_object:${version}:timelion-sheet/bulk_create`, - `saved_object:${version}:timelion-sheet/update`, - `saved_object:${version}:timelion-sheet/delete`, - `ui:${version}:savedObjectsManagement/timelion-sheet/delete`, - `ui:${version}:savedObjectsManagement/timelion-sheet/edit`, - `ui:${version}:timelion/save`, - `app:${version}:graph`, - `ui:${version}:catalogue/graph`, - `ui:${version}:navLinks/graph`, + `ui:${version}:catalogue/saved_objects`, + `ui:${version}:management/kibana/objects`, `saved_object:${version}:graph-workspace/bulk_get`, `saved_object:${version}:graph-workspace/get`, `saved_object:${version}:graph-workspace/find`, @@ -1114,9 +1256,178 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:graph-workspace/bulk_create`, `saved_object:${version}:graph-workspace/update`, `saved_object:${version}:graph-workspace/delete`, + `saved_object:${version}:space/bulk_get`, + `saved_object:${version}:space/get`, + `saved_object:${version}:space/find`, + `saved_object:${version}:space/create`, + `saved_object:${version}:space/bulk_create`, + `saved_object:${version}:space/update`, + `saved_object:${version}:space/delete`, + `saved_object:${version}:ml-telemetry/bulk_get`, + `saved_object:${version}:ml-telemetry/get`, + `saved_object:${version}:ml-telemetry/find`, + `saved_object:${version}:ml-telemetry/create`, + `saved_object:${version}:ml-telemetry/bulk_create`, + `saved_object:${version}:ml-telemetry/update`, + `saved_object:${version}:ml-telemetry/delete`, + `saved_object:${version}:apm-telemetry/bulk_get`, + `saved_object:${version}:apm-telemetry/get`, + `saved_object:${version}:apm-telemetry/find`, + `saved_object:${version}:apm-telemetry/create`, + `saved_object:${version}:apm-telemetry/bulk_create`, + `saved_object:${version}:apm-telemetry/update`, + `saved_object:${version}:apm-telemetry/delete`, + `saved_object:${version}:map/create`, + `saved_object:${version}:map/bulk_create`, + `saved_object:${version}:map/update`, + `saved_object:${version}:map/delete`, + `saved_object:${version}:maps-telemetry/bulk_get`, + `saved_object:${version}:maps-telemetry/get`, + `saved_object:${version}:maps-telemetry/find`, + `saved_object:${version}:maps-telemetry/create`, + `saved_object:${version}:maps-telemetry/bulk_create`, + `saved_object:${version}:maps-telemetry/update`, + `saved_object:${version}:maps-telemetry/delete`, + `saved_object:${version}:canvas-workpad/create`, + `saved_object:${version}:canvas-workpad/bulk_create`, + `saved_object:${version}:canvas-workpad/update`, + `saved_object:${version}:canvas-workpad/delete`, + `saved_object:${version}:canvas-element/bulk_get`, + `saved_object:${version}:canvas-element/get`, + `saved_object:${version}:canvas-element/find`, + `saved_object:${version}:canvas-element/create`, + `saved_object:${version}:canvas-element/bulk_create`, + `saved_object:${version}:canvas-element/update`, + `saved_object:${version}:canvas-element/delete`, + `saved_object:${version}:infrastructure-ui-source/bulk_get`, + `saved_object:${version}:infrastructure-ui-source/get`, + `saved_object:${version}:infrastructure-ui-source/find`, + `saved_object:${version}:infrastructure-ui-source/create`, + `saved_object:${version}:infrastructure-ui-source/bulk_create`, + `saved_object:${version}:infrastructure-ui-source/update`, + `saved_object:${version}:infrastructure-ui-source/delete`, + `saved_object:${version}:upgrade-assistant-reindex-operation/bulk_get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/find`, + `saved_object:${version}:upgrade-assistant-reindex-operation/create`, + `saved_object:${version}:upgrade-assistant-reindex-operation/bulk_create`, + `saved_object:${version}:upgrade-assistant-reindex-operation/update`, + `saved_object:${version}:upgrade-assistant-reindex-operation/delete`, + `saved_object:${version}:upgrade-assistant-telemetry/bulk_get`, + `saved_object:${version}:upgrade-assistant-telemetry/get`, + `saved_object:${version}:upgrade-assistant-telemetry/find`, + `saved_object:${version}:upgrade-assistant-telemetry/create`, + `saved_object:${version}:upgrade-assistant-telemetry/bulk_create`, + `saved_object:${version}:upgrade-assistant-telemetry/update`, + `saved_object:${version}:upgrade-assistant-telemetry/delete`, + `saved_object:${version}:server/bulk_get`, + `saved_object:${version}:server/get`, + `saved_object:${version}:server/find`, + `saved_object:${version}:server/create`, + `saved_object:${version}:server/bulk_create`, + `saved_object:${version}:server/update`, + `saved_object:${version}:server/delete`, + `saved_object:${version}:kql-telemetry/bulk_get`, + `saved_object:${version}:kql-telemetry/get`, + `saved_object:${version}:kql-telemetry/find`, + `saved_object:${version}:kql-telemetry/create`, + `saved_object:${version}:kql-telemetry/bulk_create`, + `saved_object:${version}:kql-telemetry/update`, + `saved_object:${version}:kql-telemetry/delete`, + `saved_object:${version}:sample-data-telemetry/bulk_get`, + `saved_object:${version}:sample-data-telemetry/get`, + `saved_object:${version}:sample-data-telemetry/find`, + `saved_object:${version}:sample-data-telemetry/create`, + `saved_object:${version}:sample-data-telemetry/bulk_create`, + `saved_object:${version}:sample-data-telemetry/update`, + `saved_object:${version}:sample-data-telemetry/delete`, + `saved_object:${version}:timelion-sheet/create`, + `saved_object:${version}:timelion-sheet/bulk_create`, + `saved_object:${version}:timelion-sheet/update`, + `saved_object:${version}:timelion-sheet/delete`, + `saved_object:${version}:ui-metric/bulk_get`, + `saved_object:${version}:ui-metric/get`, + `saved_object:${version}:ui-metric/find`, + `saved_object:${version}:ui-metric/create`, + `saved_object:${version}:ui-metric/bulk_create`, + `saved_object:${version}:ui-metric/update`, + `saved_object:${version}:ui-metric/delete`, + `ui:${version}:savedObjectsManagement/config/delete`, + `ui:${version}:savedObjectsManagement/config/edit`, + `ui:${version}:savedObjectsManagement/config/read`, + `ui:${version}:savedObjectsManagement/telemetry/delete`, + `ui:${version}:savedObjectsManagement/telemetry/edit`, + `ui:${version}:savedObjectsManagement/telemetry/read`, `ui:${version}:savedObjectsManagement/graph-workspace/delete`, `ui:${version}:savedObjectsManagement/graph-workspace/edit`, `ui:${version}:savedObjectsManagement/graph-workspace/read`, + `ui:${version}:savedObjectsManagement/space/delete`, + `ui:${version}:savedObjectsManagement/space/edit`, + `ui:${version}:savedObjectsManagement/space/read`, + `ui:${version}:savedObjectsManagement/ml-telemetry/delete`, + `ui:${version}:savedObjectsManagement/ml-telemetry/edit`, + `ui:${version}:savedObjectsManagement/ml-telemetry/read`, + `ui:${version}:savedObjectsManagement/apm-telemetry/delete`, + `ui:${version}:savedObjectsManagement/apm-telemetry/edit`, + `ui:${version}:savedObjectsManagement/apm-telemetry/read`, + `ui:${version}:savedObjectsManagement/map/delete`, + `ui:${version}:savedObjectsManagement/map/edit`, + `ui:${version}:savedObjectsManagement/map/read`, + `ui:${version}:savedObjectsManagement/maps-telemetry/delete`, + `ui:${version}:savedObjectsManagement/maps-telemetry/edit`, + `ui:${version}:savedObjectsManagement/maps-telemetry/read`, + `ui:${version}:savedObjectsManagement/canvas-workpad/delete`, + `ui:${version}:savedObjectsManagement/canvas-workpad/edit`, + `ui:${version}:savedObjectsManagement/canvas-workpad/read`, + `ui:${version}:savedObjectsManagement/canvas-element/delete`, + `ui:${version}:savedObjectsManagement/canvas-element/edit`, + `ui:${version}:savedObjectsManagement/canvas-element/read`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/delete`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/edit`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/delete`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/edit`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/delete`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/edit`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/read`, + `ui:${version}:savedObjectsManagement/index-pattern/delete`, + `ui:${version}:savedObjectsManagement/index-pattern/edit`, + `ui:${version}:savedObjectsManagement/index-pattern/read`, + `ui:${version}:savedObjectsManagement/visualization/delete`, + `ui:${version}:savedObjectsManagement/visualization/edit`, + `ui:${version}:savedObjectsManagement/visualization/read`, + `ui:${version}:savedObjectsManagement/search/delete`, + `ui:${version}:savedObjectsManagement/search/edit`, + `ui:${version}:savedObjectsManagement/search/read`, + `ui:${version}:savedObjectsManagement/dashboard/delete`, + `ui:${version}:savedObjectsManagement/dashboard/edit`, + `ui:${version}:savedObjectsManagement/dashboard/read`, + `ui:${version}:savedObjectsManagement/url/delete`, + `ui:${version}:savedObjectsManagement/url/edit`, + `ui:${version}:savedObjectsManagement/url/read`, + `ui:${version}:savedObjectsManagement/server/delete`, + `ui:${version}:savedObjectsManagement/server/edit`, + `ui:${version}:savedObjectsManagement/server/read`, + `ui:${version}:savedObjectsManagement/kql-telemetry/delete`, + `ui:${version}:savedObjectsManagement/kql-telemetry/edit`, + `ui:${version}:savedObjectsManagement/kql-telemetry/read`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/delete`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/edit`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/read`, + `ui:${version}:savedObjectsManagement/timelion-sheet/delete`, + `ui:${version}:savedObjectsManagement/timelion-sheet/edit`, + `ui:${version}:savedObjectsManagement/timelion-sheet/read`, + `ui:${version}:savedObjectsManagement/ui-metric/delete`, + `ui:${version}:savedObjectsManagement/ui-metric/edit`, + `ui:${version}:savedObjectsManagement/ui-metric/read`, + `app:${version}:timelion`, + `ui:${version}:catalogue/timelion`, + `ui:${version}:navLinks/timelion`, + `ui:${version}:timelion/save`, + `app:${version}:graph`, + `ui:${version}:catalogue/graph`, + `ui:${version}:navLinks/graph`, `ui:${version}:graph/save`, `ui:${version}:graph/delete`, `api:${version}:apm`, @@ -1135,49 +1446,17 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `app:${version}:maps`, `ui:${version}:catalogue/maps`, `ui:${version}:navLinks/maps`, - `saved_object:${version}:map/create`, - `saved_object:${version}:map/bulk_create`, - `saved_object:${version}:map/update`, - `saved_object:${version}:map/delete`, - `ui:${version}:savedObjectsManagement/map/delete`, - `ui:${version}:savedObjectsManagement/map/edit`, `ui:${version}:maps/save`, `ui:${version}:maps/show`, `app:${version}:canvas`, `ui:${version}:catalogue/canvas`, `ui:${version}:navLinks/canvas`, - `saved_object:${version}:canvas-workpad/create`, - `saved_object:${version}:canvas-workpad/bulk_create`, - `saved_object:${version}:canvas-workpad/update`, - `saved_object:${version}:canvas-workpad/delete`, - `saved_object:${version}:canvas-element/bulk_get`, - `saved_object:${version}:canvas-element/get`, - `saved_object:${version}:canvas-element/find`, - `saved_object:${version}:canvas-element/create`, - `saved_object:${version}:canvas-element/bulk_create`, - `saved_object:${version}:canvas-element/update`, - `saved_object:${version}:canvas-element/delete`, - `ui:${version}:savedObjectsManagement/canvas-workpad/delete`, - `ui:${version}:savedObjectsManagement/canvas-workpad/edit`, - `ui:${version}:savedObjectsManagement/canvas-element/delete`, - `ui:${version}:savedObjectsManagement/canvas-element/edit`, - `ui:${version}:savedObjectsManagement/canvas-element/read`, `ui:${version}:canvas/save`, `ui:${version}:canvas/show`, `api:${version}:infra`, `app:${version}:infra`, `ui:${version}:catalogue/infraops`, `ui:${version}:navLinks/infra:home`, - `saved_object:${version}:infrastructure-ui-source/bulk_get`, - `saved_object:${version}:infrastructure-ui-source/get`, - `saved_object:${version}:infrastructure-ui-source/find`, - `saved_object:${version}:infrastructure-ui-source/create`, - `saved_object:${version}:infrastructure-ui-source/bulk_create`, - `saved_object:${version}:infrastructure-ui-source/update`, - `saved_object:${version}:infrastructure-ui-source/delete`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/delete`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/edit`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, `ui:${version}:infrastructure/show`, `ui:${version}:infrastructure/configureSource`, `ui:${version}:infrastructure/save`, @@ -1216,17 +1495,12 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/search/read`, - `ui:${version}:savedObjectsManagement/url/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:discover/show`, `ui:${version}:catalogue/visualize`, `ui:${version}:navLinks/kibana:visualize`, `saved_object:${version}:visualization/bulk_get`, `saved_object:${version}:visualization/get`, `saved_object:${version}:visualization/find`, - `ui:${version}:savedObjectsManagement/visualization/read`, `ui:${version}:visualize/show`, `ui:${version}:catalogue/dashboard`, `ui:${version}:navLinks/kibana:dashboard`, @@ -1242,10 +1516,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:dashboard/bulk_get`, `saved_object:${version}:dashboard/get`, `saved_object:${version}:dashboard/find`, - `ui:${version}:savedObjectsManagement/timelion-sheet/read`, - `ui:${version}:savedObjectsManagement/canvas-workpad/read`, - `ui:${version}:savedObjectsManagement/map/read`, - `ui:${version}:savedObjectsManagement/dashboard/read`, `ui:${version}:dashboard/show`, `api:${version}:console`, `ui:${version}:catalogue/console`, @@ -1257,16 +1527,79 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `ui:${version}:management/kibana/settings`, `ui:${version}:catalogue/index_patterns`, `ui:${version}:management/kibana/index_patterns`, + `ui:${version}:catalogue/saved_objects`, + `ui:${version}:management/kibana/objects`, + `saved_object:${version}:telemetry/bulk_get`, + `saved_object:${version}:telemetry/get`, + `saved_object:${version}:telemetry/find`, + `saved_object:${version}:graph-workspace/bulk_get`, + `saved_object:${version}:graph-workspace/get`, + `saved_object:${version}:graph-workspace/find`, + `saved_object:${version}:space/bulk_get`, + `saved_object:${version}:space/get`, + `saved_object:${version}:space/find`, + `saved_object:${version}:ml-telemetry/bulk_get`, + `saved_object:${version}:ml-telemetry/get`, + `saved_object:${version}:ml-telemetry/find`, + `saved_object:${version}:apm-telemetry/bulk_get`, + `saved_object:${version}:apm-telemetry/get`, + `saved_object:${version}:apm-telemetry/find`, + `saved_object:${version}:maps-telemetry/bulk_get`, + `saved_object:${version}:maps-telemetry/get`, + `saved_object:${version}:maps-telemetry/find`, + `saved_object:${version}:canvas-element/bulk_get`, + `saved_object:${version}:canvas-element/get`, + `saved_object:${version}:canvas-element/find`, + `saved_object:${version}:infrastructure-ui-source/bulk_get`, + `saved_object:${version}:infrastructure-ui-source/get`, + `saved_object:${version}:infrastructure-ui-source/find`, + `saved_object:${version}:upgrade-assistant-reindex-operation/bulk_get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/find`, + `saved_object:${version}:upgrade-assistant-telemetry/bulk_get`, + `saved_object:${version}:upgrade-assistant-telemetry/get`, + `saved_object:${version}:upgrade-assistant-telemetry/find`, + `saved_object:${version}:server/bulk_get`, + `saved_object:${version}:server/get`, + `saved_object:${version}:server/find`, + `saved_object:${version}:kql-telemetry/bulk_get`, + `saved_object:${version}:kql-telemetry/get`, + `saved_object:${version}:kql-telemetry/find`, + `saved_object:${version}:sample-data-telemetry/bulk_get`, + `saved_object:${version}:sample-data-telemetry/get`, + `saved_object:${version}:sample-data-telemetry/find`, + `saved_object:${version}:ui-metric/bulk_get`, + `saved_object:${version}:ui-metric/get`, + `saved_object:${version}:ui-metric/find`, + `ui:${version}:savedObjectsManagement/config/read`, + `ui:${version}:savedObjectsManagement/telemetry/read`, + `ui:${version}:savedObjectsManagement/graph-workspace/read`, + `ui:${version}:savedObjectsManagement/space/read`, + `ui:${version}:savedObjectsManagement/ml-telemetry/read`, + `ui:${version}:savedObjectsManagement/apm-telemetry/read`, + `ui:${version}:savedObjectsManagement/map/read`, + `ui:${version}:savedObjectsManagement/maps-telemetry/read`, + `ui:${version}:savedObjectsManagement/canvas-workpad/read`, + `ui:${version}:savedObjectsManagement/canvas-element/read`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/read`, + `ui:${version}:savedObjectsManagement/index-pattern/read`, + `ui:${version}:savedObjectsManagement/visualization/read`, + `ui:${version}:savedObjectsManagement/search/read`, + `ui:${version}:savedObjectsManagement/dashboard/read`, + `ui:${version}:savedObjectsManagement/url/read`, + `ui:${version}:savedObjectsManagement/server/read`, + `ui:${version}:savedObjectsManagement/kql-telemetry/read`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/read`, + `ui:${version}:savedObjectsManagement/timelion-sheet/read`, + `ui:${version}:savedObjectsManagement/ui-metric/read`, `app:${version}:timelion`, `ui:${version}:catalogue/timelion`, `ui:${version}:navLinks/timelion`, `app:${version}:graph`, `ui:${version}:catalogue/graph`, `ui:${version}:navLinks/graph`, - `saved_object:${version}:graph-workspace/bulk_get`, - `saved_object:${version}:graph-workspace/get`, - `saved_object:${version}:graph-workspace/find`, - `ui:${version}:savedObjectsManagement/graph-workspace/read`, `api:${version}:apm`, `app:${version}:apm`, `ui:${version}:catalogue/apm`, @@ -1284,19 +1617,11 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `app:${version}:canvas`, `ui:${version}:catalogue/canvas`, `ui:${version}:navLinks/canvas`, - `saved_object:${version}:canvas-element/bulk_get`, - `saved_object:${version}:canvas-element/get`, - `saved_object:${version}:canvas-element/find`, - `ui:${version}:savedObjectsManagement/canvas-element/read`, `ui:${version}:canvas/show`, `api:${version}:infra`, `app:${version}:infra`, `ui:${version}:catalogue/infraops`, `ui:${version}:navLinks/infra:home`, - `saved_object:${version}:infrastructure-ui-source/bulk_get`, - `saved_object:${version}:infrastructure-ui-source/get`, - `saved_object:${version}:infrastructure-ui-source/find`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, `ui:${version}:infrastructure/show`, `ui:${version}:catalogue/infralogging`, `ui:${version}:navLinks/infra:logs`, @@ -1346,17 +1671,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/search/delete`, - `ui:${version}:savedObjectsManagement/search/edit`, - `ui:${version}:savedObjectsManagement/search/read`, - `ui:${version}:savedObjectsManagement/url/delete`, - `ui:${version}:savedObjectsManagement/url/edit`, - `ui:${version}:savedObjectsManagement/url/read`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:discover/show`, `ui:${version}:discover/createShortUrl`, `ui:${version}:discover/save`, @@ -1369,9 +1683,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:visualization/bulk_create`, `saved_object:${version}:visualization/update`, `saved_object:${version}:visualization/delete`, - `ui:${version}:savedObjectsManagement/visualization/delete`, - `ui:${version}:savedObjectsManagement/visualization/edit`, - `ui:${version}:savedObjectsManagement/visualization/read`, `ui:${version}:visualize/show`, `ui:${version}:visualize/createShortUrl`, `ui:${version}:visualize/delete`, @@ -1394,12 +1705,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:map/bulk_get`, `saved_object:${version}:map/get`, `saved_object:${version}:map/find`, - `ui:${version}:savedObjectsManagement/dashboard/delete`, - `ui:${version}:savedObjectsManagement/dashboard/edit`, - `ui:${version}:savedObjectsManagement/dashboard/read`, - `ui:${version}:savedObjectsManagement/timelion-sheet/read`, - `ui:${version}:savedObjectsManagement/canvas-workpad/read`, - `ui:${version}:savedObjectsManagement/map/read`, `ui:${version}:dashboard/createNew`, `ui:${version}:dashboard/show`, `ui:${version}:dashboard/showWriteControls`, @@ -1416,8 +1721,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_create`, `saved_object:${version}:config/update`, `saved_object:${version}:config/delete`, - `ui:${version}:savedObjectsManagement/config/delete`, - `ui:${version}:savedObjectsManagement/config/edit`, `ui:${version}:advancedSettings/save`, `ui:${version}:catalogue/index_patterns`, `ui:${version}:management/kibana/index_patterns`, @@ -1425,22 +1728,9 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:index-pattern/bulk_create`, `saved_object:${version}:index-pattern/update`, `saved_object:${version}:index-pattern/delete`, - `ui:${version}:savedObjectsManagement/index-pattern/delete`, - `ui:${version}:savedObjectsManagement/index-pattern/edit`, `ui:${version}:indexPatterns/save`, - `app:${version}:timelion`, - `ui:${version}:catalogue/timelion`, - `ui:${version}:navLinks/timelion`, - `saved_object:${version}:timelion-sheet/create`, - `saved_object:${version}:timelion-sheet/bulk_create`, - `saved_object:${version}:timelion-sheet/update`, - `saved_object:${version}:timelion-sheet/delete`, - `ui:${version}:savedObjectsManagement/timelion-sheet/delete`, - `ui:${version}:savedObjectsManagement/timelion-sheet/edit`, - `ui:${version}:timelion/save`, - `app:${version}:graph`, - `ui:${version}:catalogue/graph`, - `ui:${version}:navLinks/graph`, + `ui:${version}:catalogue/saved_objects`, + `ui:${version}:management/kibana/objects`, `saved_object:${version}:graph-workspace/bulk_get`, `saved_object:${version}:graph-workspace/get`, `saved_object:${version}:graph-workspace/find`, @@ -1448,9 +1738,178 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:graph-workspace/bulk_create`, `saved_object:${version}:graph-workspace/update`, `saved_object:${version}:graph-workspace/delete`, + `saved_object:${version}:space/bulk_get`, + `saved_object:${version}:space/get`, + `saved_object:${version}:space/find`, + `saved_object:${version}:space/create`, + `saved_object:${version}:space/bulk_create`, + `saved_object:${version}:space/update`, + `saved_object:${version}:space/delete`, + `saved_object:${version}:ml-telemetry/bulk_get`, + `saved_object:${version}:ml-telemetry/get`, + `saved_object:${version}:ml-telemetry/find`, + `saved_object:${version}:ml-telemetry/create`, + `saved_object:${version}:ml-telemetry/bulk_create`, + `saved_object:${version}:ml-telemetry/update`, + `saved_object:${version}:ml-telemetry/delete`, + `saved_object:${version}:apm-telemetry/bulk_get`, + `saved_object:${version}:apm-telemetry/get`, + `saved_object:${version}:apm-telemetry/find`, + `saved_object:${version}:apm-telemetry/create`, + `saved_object:${version}:apm-telemetry/bulk_create`, + `saved_object:${version}:apm-telemetry/update`, + `saved_object:${version}:apm-telemetry/delete`, + `saved_object:${version}:map/create`, + `saved_object:${version}:map/bulk_create`, + `saved_object:${version}:map/update`, + `saved_object:${version}:map/delete`, + `saved_object:${version}:maps-telemetry/bulk_get`, + `saved_object:${version}:maps-telemetry/get`, + `saved_object:${version}:maps-telemetry/find`, + `saved_object:${version}:maps-telemetry/create`, + `saved_object:${version}:maps-telemetry/bulk_create`, + `saved_object:${version}:maps-telemetry/update`, + `saved_object:${version}:maps-telemetry/delete`, + `saved_object:${version}:canvas-workpad/create`, + `saved_object:${version}:canvas-workpad/bulk_create`, + `saved_object:${version}:canvas-workpad/update`, + `saved_object:${version}:canvas-workpad/delete`, + `saved_object:${version}:canvas-element/bulk_get`, + `saved_object:${version}:canvas-element/get`, + `saved_object:${version}:canvas-element/find`, + `saved_object:${version}:canvas-element/create`, + `saved_object:${version}:canvas-element/bulk_create`, + `saved_object:${version}:canvas-element/update`, + `saved_object:${version}:canvas-element/delete`, + `saved_object:${version}:infrastructure-ui-source/bulk_get`, + `saved_object:${version}:infrastructure-ui-source/get`, + `saved_object:${version}:infrastructure-ui-source/find`, + `saved_object:${version}:infrastructure-ui-source/create`, + `saved_object:${version}:infrastructure-ui-source/bulk_create`, + `saved_object:${version}:infrastructure-ui-source/update`, + `saved_object:${version}:infrastructure-ui-source/delete`, + `saved_object:${version}:upgrade-assistant-reindex-operation/bulk_get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/find`, + `saved_object:${version}:upgrade-assistant-reindex-operation/create`, + `saved_object:${version}:upgrade-assistant-reindex-operation/bulk_create`, + `saved_object:${version}:upgrade-assistant-reindex-operation/update`, + `saved_object:${version}:upgrade-assistant-reindex-operation/delete`, + `saved_object:${version}:upgrade-assistant-telemetry/bulk_get`, + `saved_object:${version}:upgrade-assistant-telemetry/get`, + `saved_object:${version}:upgrade-assistant-telemetry/find`, + `saved_object:${version}:upgrade-assistant-telemetry/create`, + `saved_object:${version}:upgrade-assistant-telemetry/bulk_create`, + `saved_object:${version}:upgrade-assistant-telemetry/update`, + `saved_object:${version}:upgrade-assistant-telemetry/delete`, + `saved_object:${version}:server/bulk_get`, + `saved_object:${version}:server/get`, + `saved_object:${version}:server/find`, + `saved_object:${version}:server/create`, + `saved_object:${version}:server/bulk_create`, + `saved_object:${version}:server/update`, + `saved_object:${version}:server/delete`, + `saved_object:${version}:kql-telemetry/bulk_get`, + `saved_object:${version}:kql-telemetry/get`, + `saved_object:${version}:kql-telemetry/find`, + `saved_object:${version}:kql-telemetry/create`, + `saved_object:${version}:kql-telemetry/bulk_create`, + `saved_object:${version}:kql-telemetry/update`, + `saved_object:${version}:kql-telemetry/delete`, + `saved_object:${version}:sample-data-telemetry/bulk_get`, + `saved_object:${version}:sample-data-telemetry/get`, + `saved_object:${version}:sample-data-telemetry/find`, + `saved_object:${version}:sample-data-telemetry/create`, + `saved_object:${version}:sample-data-telemetry/bulk_create`, + `saved_object:${version}:sample-data-telemetry/update`, + `saved_object:${version}:sample-data-telemetry/delete`, + `saved_object:${version}:timelion-sheet/create`, + `saved_object:${version}:timelion-sheet/bulk_create`, + `saved_object:${version}:timelion-sheet/update`, + `saved_object:${version}:timelion-sheet/delete`, + `saved_object:${version}:ui-metric/bulk_get`, + `saved_object:${version}:ui-metric/get`, + `saved_object:${version}:ui-metric/find`, + `saved_object:${version}:ui-metric/create`, + `saved_object:${version}:ui-metric/bulk_create`, + `saved_object:${version}:ui-metric/update`, + `saved_object:${version}:ui-metric/delete`, + `ui:${version}:savedObjectsManagement/config/delete`, + `ui:${version}:savedObjectsManagement/config/edit`, + `ui:${version}:savedObjectsManagement/config/read`, + `ui:${version}:savedObjectsManagement/telemetry/delete`, + `ui:${version}:savedObjectsManagement/telemetry/edit`, + `ui:${version}:savedObjectsManagement/telemetry/read`, `ui:${version}:savedObjectsManagement/graph-workspace/delete`, `ui:${version}:savedObjectsManagement/graph-workspace/edit`, `ui:${version}:savedObjectsManagement/graph-workspace/read`, + `ui:${version}:savedObjectsManagement/space/delete`, + `ui:${version}:savedObjectsManagement/space/edit`, + `ui:${version}:savedObjectsManagement/space/read`, + `ui:${version}:savedObjectsManagement/ml-telemetry/delete`, + `ui:${version}:savedObjectsManagement/ml-telemetry/edit`, + `ui:${version}:savedObjectsManagement/ml-telemetry/read`, + `ui:${version}:savedObjectsManagement/apm-telemetry/delete`, + `ui:${version}:savedObjectsManagement/apm-telemetry/edit`, + `ui:${version}:savedObjectsManagement/apm-telemetry/read`, + `ui:${version}:savedObjectsManagement/map/delete`, + `ui:${version}:savedObjectsManagement/map/edit`, + `ui:${version}:savedObjectsManagement/map/read`, + `ui:${version}:savedObjectsManagement/maps-telemetry/delete`, + `ui:${version}:savedObjectsManagement/maps-telemetry/edit`, + `ui:${version}:savedObjectsManagement/maps-telemetry/read`, + `ui:${version}:savedObjectsManagement/canvas-workpad/delete`, + `ui:${version}:savedObjectsManagement/canvas-workpad/edit`, + `ui:${version}:savedObjectsManagement/canvas-workpad/read`, + `ui:${version}:savedObjectsManagement/canvas-element/delete`, + `ui:${version}:savedObjectsManagement/canvas-element/edit`, + `ui:${version}:savedObjectsManagement/canvas-element/read`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/delete`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/edit`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/delete`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/edit`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/delete`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/edit`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/read`, + `ui:${version}:savedObjectsManagement/index-pattern/delete`, + `ui:${version}:savedObjectsManagement/index-pattern/edit`, + `ui:${version}:savedObjectsManagement/index-pattern/read`, + `ui:${version}:savedObjectsManagement/visualization/delete`, + `ui:${version}:savedObjectsManagement/visualization/edit`, + `ui:${version}:savedObjectsManagement/visualization/read`, + `ui:${version}:savedObjectsManagement/search/delete`, + `ui:${version}:savedObjectsManagement/search/edit`, + `ui:${version}:savedObjectsManagement/search/read`, + `ui:${version}:savedObjectsManagement/dashboard/delete`, + `ui:${version}:savedObjectsManagement/dashboard/edit`, + `ui:${version}:savedObjectsManagement/dashboard/read`, + `ui:${version}:savedObjectsManagement/url/delete`, + `ui:${version}:savedObjectsManagement/url/edit`, + `ui:${version}:savedObjectsManagement/url/read`, + `ui:${version}:savedObjectsManagement/server/delete`, + `ui:${version}:savedObjectsManagement/server/edit`, + `ui:${version}:savedObjectsManagement/server/read`, + `ui:${version}:savedObjectsManagement/kql-telemetry/delete`, + `ui:${version}:savedObjectsManagement/kql-telemetry/edit`, + `ui:${version}:savedObjectsManagement/kql-telemetry/read`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/delete`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/edit`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/read`, + `ui:${version}:savedObjectsManagement/timelion-sheet/delete`, + `ui:${version}:savedObjectsManagement/timelion-sheet/edit`, + `ui:${version}:savedObjectsManagement/timelion-sheet/read`, + `ui:${version}:savedObjectsManagement/ui-metric/delete`, + `ui:${version}:savedObjectsManagement/ui-metric/edit`, + `ui:${version}:savedObjectsManagement/ui-metric/read`, + `app:${version}:timelion`, + `ui:${version}:catalogue/timelion`, + `ui:${version}:navLinks/timelion`, + `ui:${version}:timelion/save`, + `app:${version}:graph`, + `ui:${version}:catalogue/graph`, + `ui:${version}:navLinks/graph`, `ui:${version}:graph/save`, `ui:${version}:graph/delete`, `api:${version}:apm`, @@ -1469,49 +1928,17 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `app:${version}:maps`, `ui:${version}:catalogue/maps`, `ui:${version}:navLinks/maps`, - `saved_object:${version}:map/create`, - `saved_object:${version}:map/bulk_create`, - `saved_object:${version}:map/update`, - `saved_object:${version}:map/delete`, - `ui:${version}:savedObjectsManagement/map/delete`, - `ui:${version}:savedObjectsManagement/map/edit`, `ui:${version}:maps/save`, `ui:${version}:maps/show`, `app:${version}:canvas`, `ui:${version}:catalogue/canvas`, `ui:${version}:navLinks/canvas`, - `saved_object:${version}:canvas-workpad/create`, - `saved_object:${version}:canvas-workpad/bulk_create`, - `saved_object:${version}:canvas-workpad/update`, - `saved_object:${version}:canvas-workpad/delete`, - `saved_object:${version}:canvas-element/bulk_get`, - `saved_object:${version}:canvas-element/get`, - `saved_object:${version}:canvas-element/find`, - `saved_object:${version}:canvas-element/create`, - `saved_object:${version}:canvas-element/bulk_create`, - `saved_object:${version}:canvas-element/update`, - `saved_object:${version}:canvas-element/delete`, - `ui:${version}:savedObjectsManagement/canvas-workpad/delete`, - `ui:${version}:savedObjectsManagement/canvas-workpad/edit`, - `ui:${version}:savedObjectsManagement/canvas-element/delete`, - `ui:${version}:savedObjectsManagement/canvas-element/edit`, - `ui:${version}:savedObjectsManagement/canvas-element/read`, `ui:${version}:canvas/save`, `ui:${version}:canvas/show`, `api:${version}:infra`, `app:${version}:infra`, `ui:${version}:catalogue/infraops`, `ui:${version}:navLinks/infra:home`, - `saved_object:${version}:infrastructure-ui-source/bulk_get`, - `saved_object:${version}:infrastructure-ui-source/get`, - `saved_object:${version}:infrastructure-ui-source/find`, - `saved_object:${version}:infrastructure-ui-source/create`, - `saved_object:${version}:infrastructure-ui-source/bulk_create`, - `saved_object:${version}:infrastructure-ui-source/update`, - `saved_object:${version}:infrastructure-ui-source/delete`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/delete`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/edit`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, `ui:${version}:infrastructure/show`, `ui:${version}:infrastructure/configureSource`, `ui:${version}:infrastructure/save`, @@ -1550,17 +1977,12 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/index-pattern/read`, - `ui:${version}:savedObjectsManagement/search/read`, - `ui:${version}:savedObjectsManagement/url/read`, - `ui:${version}:savedObjectsManagement/config/read`, `ui:${version}:discover/show`, `ui:${version}:catalogue/visualize`, `ui:${version}:navLinks/kibana:visualize`, `saved_object:${version}:visualization/bulk_get`, `saved_object:${version}:visualization/get`, `saved_object:${version}:visualization/find`, - `ui:${version}:savedObjectsManagement/visualization/read`, `ui:${version}:visualize/show`, `ui:${version}:catalogue/dashboard`, `ui:${version}:navLinks/kibana:dashboard`, @@ -1576,10 +1998,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:dashboard/bulk_get`, `saved_object:${version}:dashboard/get`, `saved_object:${version}:dashboard/find`, - `ui:${version}:savedObjectsManagement/timelion-sheet/read`, - `ui:${version}:savedObjectsManagement/canvas-workpad/read`, - `ui:${version}:savedObjectsManagement/map/read`, - `ui:${version}:savedObjectsManagement/dashboard/read`, `ui:${version}:dashboard/show`, `api:${version}:console`, `ui:${version}:catalogue/console`, @@ -1591,16 +2009,79 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `ui:${version}:management/kibana/settings`, `ui:${version}:catalogue/index_patterns`, `ui:${version}:management/kibana/index_patterns`, + `ui:${version}:catalogue/saved_objects`, + `ui:${version}:management/kibana/objects`, + `saved_object:${version}:telemetry/bulk_get`, + `saved_object:${version}:telemetry/get`, + `saved_object:${version}:telemetry/find`, + `saved_object:${version}:graph-workspace/bulk_get`, + `saved_object:${version}:graph-workspace/get`, + `saved_object:${version}:graph-workspace/find`, + `saved_object:${version}:space/bulk_get`, + `saved_object:${version}:space/get`, + `saved_object:${version}:space/find`, + `saved_object:${version}:ml-telemetry/bulk_get`, + `saved_object:${version}:ml-telemetry/get`, + `saved_object:${version}:ml-telemetry/find`, + `saved_object:${version}:apm-telemetry/bulk_get`, + `saved_object:${version}:apm-telemetry/get`, + `saved_object:${version}:apm-telemetry/find`, + `saved_object:${version}:maps-telemetry/bulk_get`, + `saved_object:${version}:maps-telemetry/get`, + `saved_object:${version}:maps-telemetry/find`, + `saved_object:${version}:canvas-element/bulk_get`, + `saved_object:${version}:canvas-element/get`, + `saved_object:${version}:canvas-element/find`, + `saved_object:${version}:infrastructure-ui-source/bulk_get`, + `saved_object:${version}:infrastructure-ui-source/get`, + `saved_object:${version}:infrastructure-ui-source/find`, + `saved_object:${version}:upgrade-assistant-reindex-operation/bulk_get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/get`, + `saved_object:${version}:upgrade-assistant-reindex-operation/find`, + `saved_object:${version}:upgrade-assistant-telemetry/bulk_get`, + `saved_object:${version}:upgrade-assistant-telemetry/get`, + `saved_object:${version}:upgrade-assistant-telemetry/find`, + `saved_object:${version}:server/bulk_get`, + `saved_object:${version}:server/get`, + `saved_object:${version}:server/find`, + `saved_object:${version}:kql-telemetry/bulk_get`, + `saved_object:${version}:kql-telemetry/get`, + `saved_object:${version}:kql-telemetry/find`, + `saved_object:${version}:sample-data-telemetry/bulk_get`, + `saved_object:${version}:sample-data-telemetry/get`, + `saved_object:${version}:sample-data-telemetry/find`, + `saved_object:${version}:ui-metric/bulk_get`, + `saved_object:${version}:ui-metric/get`, + `saved_object:${version}:ui-metric/find`, + `ui:${version}:savedObjectsManagement/config/read`, + `ui:${version}:savedObjectsManagement/telemetry/read`, + `ui:${version}:savedObjectsManagement/graph-workspace/read`, + `ui:${version}:savedObjectsManagement/space/read`, + `ui:${version}:savedObjectsManagement/ml-telemetry/read`, + `ui:${version}:savedObjectsManagement/apm-telemetry/read`, + `ui:${version}:savedObjectsManagement/map/read`, + `ui:${version}:savedObjectsManagement/maps-telemetry/read`, + `ui:${version}:savedObjectsManagement/canvas-workpad/read`, + `ui:${version}:savedObjectsManagement/canvas-element/read`, + `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-reindex-operation/read`, + `ui:${version}:savedObjectsManagement/upgrade-assistant-telemetry/read`, + `ui:${version}:savedObjectsManagement/index-pattern/read`, + `ui:${version}:savedObjectsManagement/visualization/read`, + `ui:${version}:savedObjectsManagement/search/read`, + `ui:${version}:savedObjectsManagement/dashboard/read`, + `ui:${version}:savedObjectsManagement/url/read`, + `ui:${version}:savedObjectsManagement/server/read`, + `ui:${version}:savedObjectsManagement/kql-telemetry/read`, + `ui:${version}:savedObjectsManagement/sample-data-telemetry/read`, + `ui:${version}:savedObjectsManagement/timelion-sheet/read`, + `ui:${version}:savedObjectsManagement/ui-metric/read`, `app:${version}:timelion`, `ui:${version}:catalogue/timelion`, `ui:${version}:navLinks/timelion`, `app:${version}:graph`, `ui:${version}:catalogue/graph`, `ui:${version}:navLinks/graph`, - `saved_object:${version}:graph-workspace/bulk_get`, - `saved_object:${version}:graph-workspace/get`, - `saved_object:${version}:graph-workspace/find`, - `ui:${version}:savedObjectsManagement/graph-workspace/read`, `api:${version}:apm`, `app:${version}:apm`, `ui:${version}:catalogue/apm`, @@ -1618,19 +2099,11 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `app:${version}:canvas`, `ui:${version}:catalogue/canvas`, `ui:${version}:navLinks/canvas`, - `saved_object:${version}:canvas-element/bulk_get`, - `saved_object:${version}:canvas-element/get`, - `saved_object:${version}:canvas-element/find`, - `ui:${version}:savedObjectsManagement/canvas-element/read`, `ui:${version}:canvas/show`, `api:${version}:infra`, `app:${version}:infra`, `ui:${version}:catalogue/infraops`, `ui:${version}:navLinks/infra:home`, - `saved_object:${version}:infrastructure-ui-source/bulk_get`, - `saved_object:${version}:infrastructure-ui-source/get`, - `saved_object:${version}:infrastructure-ui-source/find`, - `ui:${version}:savedObjectsManagement/infrastructure-ui-source/read`, `ui:${version}:infrastructure/show`, `ui:${version}:catalogue/infralogging`, `ui:${version}:navLinks/infra:logs`, @@ -1663,10 +2136,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/config/read`, ], ml: [ `version:${version}`, @@ -1684,10 +2153,6 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { `saved_object:${version}:config/bulk_get`, `saved_object:${version}:config/get`, `saved_object:${version}:config/find`, - `ui:${version}:savedObjectsManagement/telemetry/delete`, - `ui:${version}:savedObjectsManagement/telemetry/edit`, - `ui:${version}:savedObjectsManagement/telemetry/read`, - `ui:${version}:savedObjectsManagement/config/read`, ], }, }); @@ -1707,6 +2172,7 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { dev_tools: ['all', 'read'], advancedSettings: ['all', 'read'], indexPatterns: ['all', 'read'], + savedObjectsManagement: ['all', 'read'], timelion: ['all', 'read'], graph: ['all', 'read'], maps: ['all', 'read'], diff --git a/x-pack/test/api_integration/apis/xpack_main/features/features.ts b/x-pack/test/api_integration/apis/xpack_main/features/features.ts index 16861c8b2b9a..a8a7c21bc5ee 100644 --- a/x-pack/test/api_integration/apis/xpack_main/features/features.ts +++ b/x-pack/test/api_integration/apis/xpack_main/features/features.ts @@ -125,6 +125,7 @@ export default function({ getService }: KibanaFunctionalTestDefaultProviders) { 'timelion', 'graph', 'monitoring', + 'savedObjectsManagement', 'ml', 'apm', 'canvas', diff --git a/x-pack/test/functional/apps/saved_objects_management/feature_controls/saved_objects_management_security.ts b/x-pack/test/functional/apps/saved_objects_management/feature_controls/saved_objects_management_security.ts index 12ad0f67feb4..85976c8227c7 100644 --- a/x-pack/test/functional/apps/saved_objects_management/feature_controls/saved_objects_management_security.ts +++ b/x-pack/test/functional/apps/saved_objects_management/feature_controls/saved_objects_management_security.ts @@ -141,7 +141,126 @@ export default function({ getPageObjects, getService }: KibanaFunctionalTestDefa }); }); - describe('global visualize read privileges', () => { + describe('global saved object management read privileges', () => { + before(async () => { + await security.role.create('global_som_read_role', { + elasticsearch: { + indices: [{ names: ['logstash-*'], privileges: ['read', 'view_index_metadata'] }], + }, + kibana: [ + { + feature: { + savedObjectsManagement: ['read'], + }, + spaces: ['*'], + }, + ], + }); + + await security.user.create('global_som_read_user', { + password: 'global_som_read_user-password', + roles: ['global_som_read_role'], + full_name: 'test user', + }); + + await PageObjects.security.logout(); + + await PageObjects.security.login('global_som_read_user', 'global_som_read_user-password', { + expectSpaceSelector: false, + }); + }); + + after(async () => { + await Promise.all([ + security.role.delete('global_som_read_role'), + security.user.delete('global_som_read_user'), + PageObjects.security.logout(), + ]); + }); + + describe('listing', () => { + before(async () => { + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickKibanaSavedObjects(); + }); + + it('shows all saved objects', async () => { + const objects = await PageObjects.settings.getSavedObjectsInTable(); + expect(objects).to.eql([ + 'Advanced Settings [6.0.0]', + `Advanced Settings [${version}]`, + 'A Dashboard', + 'logstash-*', + 'A Pie', + ]); + }); + + it('cannot view any saved objects in applications', async () => { + const bools = await PageObjects.settings.getSavedObjectsTableSummary(); + expect(bools).to.eql([ + { + title: 'Advanced Settings [6.0.0]', + canViewInApp: false, + }, + { + title: `Advanced Settings [${version}]`, + canViewInApp: false, + }, + { + title: 'A Dashboard', + canViewInApp: false, + }, + { + title: 'logstash-*', + canViewInApp: false, + }, + { + title: 'A Pie', + canViewInApp: false, + }, + ]); + }); + + it(`can't delete all saved objects`, async () => { + await PageObjects.settings.clickSavedObjectsTableSelectAll(); + const actual = await PageObjects.settings.canSavedObjectsBeDeleted(); + expect(actual).to.be(false); + }); + }); + + describe('edit visualization', () => { + before(async () => { + await PageObjects.common.navigateToActualUrl( + 'kibana', + '/management/kibana/objects/savedVisualizations/75c3e060-1e7c-11e9-8488-65449e65d0ed', + { + loginIfPrompted: false, + } + ); + await testSubjects.existOrFail('savedObjectsEdit'); + }); + + it('does not show delete button', async () => { + await testSubjects.missingOrFail('savedObjectEditDelete'); + }); + + it('does not show save button', async () => { + await testSubjects.missingOrFail('savedObjectEditSave'); + }); + + it('has inputs with only readonly attributes', async () => { + const form = await testSubjects.find('savedObjectEditForm'); + const inputs = await form.findAllByCssSelector('input'); + expect(inputs.length).to.be.greaterThan(0); + for (const input of inputs) { + const isEnabled = await input.isEnabled(); + expect(isEnabled).to.be(false); + } + }); + }); + }); + + describe('global visualize all privileges', () => { before(async () => { await security.role.create('global_visualize_all_role', { elasticsearch: { @@ -150,7 +269,7 @@ export default function({ getPageObjects, getService }: KibanaFunctionalTestDefa kibana: [ { feature: { - visualize: ['read'], + visualize: ['all'], }, spaces: ['*'], }, @@ -183,78 +302,26 @@ export default function({ getPageObjects, getService }: KibanaFunctionalTestDefa }); describe('listing', () => { - before(async () => { - await PageObjects.settings.navigateTo(); - await PageObjects.settings.clickKibanaSavedObjects(); - }); - - it('shows two configs, a visualization and an index pattern', async () => { - const objects = await PageObjects.settings.getSavedObjectsInTable(); - expect(objects).to.eql([ - 'Advanced Settings [6.0.0]', - `Advanced Settings [${version}]`, - 'logstash-*', - 'A Pie', - ]); - }); - - it('can view only two configs and the visualization in application', async () => { - const bools = await PageObjects.settings.getSavedObjectsTableSummary(); - expect(bools).to.eql([ - { - title: 'Advanced Settings [6.0.0]', - canViewInApp: false, - }, - { - title: `Advanced Settings [${version}]`, - canViewInApp: false, - }, - { - title: 'logstash-*', - canViewInApp: false, - }, - { - title: 'A Pie', - canViewInApp: true, - }, - ]); - }); - - it(`can't delete all saved objects`, async () => { - await PageObjects.settings.clickSavedObjectsTableSelectAll(); - const actual = await PageObjects.settings.canSavedObjectsBeDeleted(); - expect(actual).to.be(false); + it('redirects to Kibana home', async () => { + await PageObjects.common.navigateToActualUrl('kibana', 'management/kibana/objects', { + ensureCurrentUrl: false, + shouldLoginIfPrompted: false, + }); + await testSubjects.existOrFail('homeApp'); }); }); describe('edit visualization', () => { - before(async () => { + it('redirects to Kibana home', async () => { await PageObjects.common.navigateToActualUrl( 'kibana', '/management/kibana/objects/savedVisualizations/75c3e060-1e7c-11e9-8488-65449e65d0ed', { loginIfPrompted: false, + ensureCurrentUrl: false, } ); - await testSubjects.existOrFail('savedObjectsEdit'); - }); - - it('shows delete button', async () => { - await testSubjects.missingOrFail('savedObjectEditDelete'); - }); - - it('shows save button', async () => { - await testSubjects.missingOrFail('savedObjectEditSave'); - }); - - it('has inputs without readonly attributes', async () => { - const form = await testSubjects.find('savedObjectEditForm'); - const inputs = await form.findAllByCssSelector('input'); - expect(inputs.length).to.be.greaterThan(0); - for (const input of inputs) { - const isEnabled = await input.isEnabled(); - expect(isEnabled).to.be(false); - } + await testSubjects.existOrFail('homeApp'); }); }); }); diff --git a/x-pack/test/functional/apps/saved_objects_management/index.ts b/x-pack/test/functional/apps/saved_objects_management/index.ts index b0a0adeb63f1..22628621a0f7 100644 --- a/x-pack/test/functional/apps/saved_objects_management/index.ts +++ b/x-pack/test/functional/apps/saved_objects_management/index.ts @@ -7,7 +7,7 @@ import { KibanaFunctionalTestDefaultProviders } from '../../../types/providers'; // eslint-disable-next-line import/no-default-export -export default function advancedSettingsApp({ +export default function savedObjectsManagementApp({ loadTestFile, }: KibanaFunctionalTestDefaultProviders) { describe('Saved objects management', function savedObjectsManagementAppTestSuite() { diff --git a/x-pack/test/ui_capabilities/common/saved_objects_management_builder.ts b/x-pack/test/ui_capabilities/common/saved_objects_management_builder.ts index c2cfb00a9490..e1f724c3bb17 100644 --- a/x-pack/test/ui_capabilities/common/saved_objects_management_builder.ts +++ b/x-pack/test/ui_capabilities/common/saved_objects_management_builder.ts @@ -8,6 +8,7 @@ class SavedObjectsTypeUICapabilitiesGroup { public all = ['delete', 'edit', 'read']; public read = ['read']; + public none = [] as string[]; } const savedObjectsTypeUICapabilitiesGroup = new SavedObjectsTypeUICapabilitiesGroup(); diff --git a/x-pack/test/ui_capabilities/security_and_spaces/tests/saved_objects_management.ts b/x-pack/test/ui_capabilities/security_and_spaces/tests/saved_objects_management.ts index c14774ced2aa..3f1cf9ce87a4 100644 --- a/x-pack/test/ui_capabilities/security_and_spaces/tests/saved_objects_management.ts +++ b/x-pack/test/ui_capabilities/security_and_spaces/tests/saved_objects_management.ts @@ -32,65 +32,42 @@ export default function savedObjectsManagementTests({ expect(uiCapabilities.value).to.have.property('savedObjectsManagement'); switch (scenario.id) { case 'superuser at everything_space': - case 'superuser at nothing_space': + case 'global_all at everything_space': + case 'dual_privileges_all at everything_space': + case 'everything_space_all at everything_space': + expect(uiCapabilities.success).to.be(true); + expect(uiCapabilities.value).to.have.property('savedObjectsManagement'); const expected = mapValues(uiCapabilities.value!.savedObjectsManagement, () => savedObjectsManagementBuilder.uiCapabilities('all') ); expect(uiCapabilities.value!.savedObjectsManagement).to.eql(expected); break; - case 'global_all at everything_space': - case 'dual_privileges_all at everything_space': - case 'everything_space_all at everything_space': - case 'global_all at nothing_space': - case 'dual_privileges_all at nothing_space': - case 'nothing_space_all at nothing_space': - expect(uiCapabilities.value!.savedObjectsManagement).to.eql( - savedObjectsManagementBuilder.build({ - all: [ - 'config', - 'graph-workspace', - 'map', - 'canvas-workpad', - 'canvas-element', - 'index-pattern', - 'visualization', - 'search', - 'dashboard', - 'telemetry', - 'timelion-sheet', - 'url', - 'infrastructure-ui-source', - ], - }) - ); - break; + case 'dual_privileges_read at everything_space': case 'global_read at everything_space': case 'everything_space_read at everything_space': - case 'dual_privileges_read at nothing_space': - case 'global_read at nothing_space': - case 'nothing_space_read at nothing_space': - expect(uiCapabilities.value!.savedObjectsManagement).to.eql( - savedObjectsManagementBuilder.build({ - read: [ - 'config', - 'graph-workspace', - 'map', - 'canvas-workpad', - 'canvas-element', - 'index-pattern', - 'visualization', - 'search', - 'dashboard', - 'timelion-sheet', - 'url', - 'infrastructure-ui-source', - ], - }) + expect(uiCapabilities.success).to.be(true); + expect(uiCapabilities.value).to.have.property('savedObjectsManagement'); + const readExpected = mapValues(uiCapabilities.value!.savedObjectsManagement, () => + savedObjectsManagementBuilder.uiCapabilities('read') ); + expect(uiCapabilities.value!.savedObjectsManagement).to.eql(readExpected); + break; + + case 'superuser at nothing_space': + case 'nothing_space_all at nothing_space': + case 'nothing_space_read at nothing_space': + case 'global_all at nothing_space': + case 'global_read at nothing_space': + case 'dual_privileges_all at nothing_space': + case 'dual_privileges_read at nothing_space': + expect(uiCapabilities.success).to.be(true); + expect(uiCapabilities.value).to.have.property('savedObjectsManagement'); + const noneExpected = mapValues(uiCapabilities.value!.savedObjectsManagement, () => + savedObjectsManagementBuilder.uiCapabilities('none') + ); + expect(uiCapabilities.value!.savedObjectsManagement).to.eql(noneExpected); break; - // if we don't have access at the space itself, all ui - // capabilities should be false case 'no_kibana_privileges at everything_space': case 'no_kibana_privileges at nothing_space': case 'legacy_all at everything_space': @@ -101,6 +78,7 @@ export default function savedObjectsManagementTests({ case 'nothing_space_read at everything_space': assertDeeplyFalse(uiCapabilities.value!.savedObjectsManagement); break; + default: throw new UnreachableError(scenario); } diff --git a/x-pack/test/ui_capabilities/security_only/tests/saved_objects_management.ts b/x-pack/test/ui_capabilities/security_only/tests/saved_objects_management.ts index 46d18e446e6b..877d353f2a4e 100644 --- a/x-pack/test/ui_capabilities/security_only/tests/saved_objects_management.ts +++ b/x-pack/test/ui_capabilities/security_only/tests/saved_objects_management.ts @@ -33,66 +33,30 @@ export default function savedObjectsManagementTests({ expect(uiCapabilities.value).to.have.property('savedObjectsManagement'); switch (scenario.username) { case 'superuser': + case 'all': + case 'dual_privileges_all': + expect(uiCapabilities.success).to.be(true); + expect(uiCapabilities.value).to.have.property('savedObjectsManagement'); const expected = mapValues(uiCapabilities.value!.savedObjectsManagement, () => savedObjectsManagementBuilder.uiCapabilities('all') ); expect(uiCapabilities.value!.savedObjectsManagement).to.eql(expected); break; - case 'all': - case 'dual_privileges_all': - expect(uiCapabilities.value!.savedObjectsManagement).to.eql( - savedObjectsManagementBuilder.build({ - all: [ - 'config', - 'graph-workspace', - 'map', - 'canvas-workpad', - 'canvas-element', - 'index-pattern', - 'visualization', - 'search', - 'dashboard', - 'telemetry', - 'timelion-sheet', - 'url', - 'infrastructure-ui-source', - ], - }) - ); - break; case 'read': case 'dual_privileges_read': - expect(uiCapabilities.value!.savedObjectsManagement).to.eql( - savedObjectsManagementBuilder.build({ - read: [ - 'config', - 'graph-workspace', - 'map', - 'canvas-workpad', - 'canvas-element', - 'index-pattern', - 'visualization', - 'search', - 'dashboard', - 'timelion-sheet', - 'url', - 'infrastructure-ui-source', - ], - }) + expect(uiCapabilities.success).to.be(true); + expect(uiCapabilities.value).to.have.property('savedObjectsManagement'); + const expectedRead = mapValues(uiCapabilities.value!.savedObjectsManagement, () => + savedObjectsManagementBuilder.uiCapabilities('read') ); + expect(uiCapabilities.value!.savedObjectsManagement).to.eql(expectedRead); break; case 'foo_all': - expect(uiCapabilities.value!.savedObjectsManagement).to.eql( - savedObjectsManagementBuilder.build({ - all: ['foo', 'telemetry'], - read: ['index-pattern', 'config'], - }) - ); - break; case 'foo_read': expect(uiCapabilities.value!.savedObjectsManagement).to.eql( savedObjectsManagementBuilder.build({ - read: ['foo', 'index-pattern', 'config'], + all: [], + read: [], }) ); break; diff --git a/x-pack/test/ui_capabilities/spaces_only/tests/saved_objects_management.ts b/x-pack/test/ui_capabilities/spaces_only/tests/saved_objects_management.ts index 264d767df3fb..513702c5e98c 100644 --- a/x-pack/test/ui_capabilities/spaces_only/tests/saved_objects_management.ts +++ b/x-pack/test/ui_capabilities/spaces_only/tests/saved_objects_management.ts @@ -22,14 +22,32 @@ export default function savedObjectsManagementTests({ describe('savedObjectsManagement', () => { SpaceScenarios.forEach(scenario => { it(`${scenario.name}`, async () => { - // spaces don't affect saved objects management, so we assert the same thing for every scenario - const uiCapabilities = await uiCapabilitiesService.get({ spaceId: scenario.id }); - expect(uiCapabilities.success).to.be(true); - expect(uiCapabilities.value).to.have.property('savedObjectsManagement'); - const expected = mapValues(uiCapabilities.value!.savedObjectsManagement, () => - savedObjectsManagementBuilder.uiCapabilities('all') - ); - expect(uiCapabilities.value!.savedObjectsManagement).to.eql(expected); + switch (scenario.id) { + case 'nothing_space': + // Saved Objects Managment is not available when everything is disabled. + const nothingSpaceCapabilities = await uiCapabilitiesService.get({ + spaceId: scenario.id, + }); + expect(nothingSpaceCapabilities.success).to.be(true); + expect(nothingSpaceCapabilities.value).to.have.property('savedObjectsManagement'); + const nothingSpaceExpected = mapValues( + nothingSpaceCapabilities.value!.savedObjectsManagement, + () => savedObjectsManagementBuilder.uiCapabilities('none') + ); + expect(nothingSpaceCapabilities.value!.savedObjectsManagement).to.eql( + nothingSpaceExpected + ); + break; + default: + // Otherwise it's available without restriction + const uiCapabilities = await uiCapabilitiesService.get({ spaceId: scenario.id }); + expect(uiCapabilities.success).to.be(true); + expect(uiCapabilities.value).to.have.property('savedObjectsManagement'); + const expected = mapValues(uiCapabilities.value!.savedObjectsManagement, () => + savedObjectsManagementBuilder.uiCapabilities('all') + ); + expect(uiCapabilities.value!.savedObjectsManagement).to.eql(expected); + } }); }); });