diff --git a/components/admin_console/admin_definition.jsx b/components/admin_console/admin_definition.jsx index c8c6a585ac93..7c0f279bf037 100644 --- a/components/admin_console/admin_definition.jsx +++ b/components/admin_console/admin_definition.jsx @@ -2746,7 +2746,7 @@ export default { label: t('admin.team.siteNameTitle'), label_default: 'Site Name:', help_text: t('admin.team.siteNameDescription'), - help_text_default: 'Name of service shown in login screens and UI.', + help_text_default: 'Name of service shown in login screens and UI. When not specified, it defaults to "Mattermost".', placeholder: t('admin.team.siteNameExample'), placeholder_default: 'E.g.: "Mattermost"', max_length: Constants.MAX_SITENAME_LENGTH, diff --git a/components/admin_console/permission_schemes_settings/permission_schemes_settings.jsx b/components/admin_console/permission_schemes_settings/permission_schemes_settings.jsx index c560d3fa81a2..3e259fa5aa29 100644 --- a/components/admin_console/permission_schemes_settings/permission_schemes_settings.jsx +++ b/components/admin_console/permission_schemes_settings/permission_schemes_settings.jsx @@ -266,8 +266,12 @@ t('admin.permissions.permission.list_users_without_team.description'); t('admin.permissions.permission.list_users_without_team.name'); t('admin.permissions.permission.manage_channel_roles.description'); t('admin.permissions.permission.manage_channel_roles.name'); -t('admin.permissions.permission.manage_emojis.description'); -t('admin.permissions.permission.manage_emojis.name'); +t('admin.permissions.permission.create_emojis.description'); +t('admin.permissions.permission.create_emojis.name'); +t('admin.permissions.permission.delete_emojis.description'); +t('admin.permissions.permission.delete_emojis.name'); +t('admin.permissions.permission.delete_others_emojis.description'); +t('admin.permissions.permission.delete_others_emojis.name'); t('admin.permissions.permission.manage_jobs.description'); t('admin.permissions.permission.manage_jobs.name'); t('admin.permissions.permission.manage_oauth.description'); @@ -290,8 +294,10 @@ t('admin.permissions.permission.manage_team.description'); t('admin.permissions.permission.manage_team.name'); t('admin.permissions.permission.manage_team_roles.description'); t('admin.permissions.permission.manage_team_roles.name'); -t('admin.permissions.permission.manage_webhooks.description'); -t('admin.permissions.permission.manage_webhooks.name'); +t('admin.permissions.permission.manage_incoming_webhooks.description'); +t('admin.permissions.permission.manage_incoming_webhooks.name'); +t('admin.permissions.permission.manage_outgoing_webhooks.description'); +t('admin.permissions.permission.manage_outgoing_webhooks.name'); t('admin.permissions.permission.permanent_delete_user.description'); t('admin.permissions.permission.permanent_delete_user.name'); t('admin.permissions.permission.read_channel.description'); diff --git a/components/admin_console/permission_schemes_settings/permissions_tree/__snapshots__/permissions_tree.test.jsx.snap b/components/admin_console/permission_schemes_settings/permissions_tree/__snapshots__/permissions_tree.test.jsx.snap index f7a671aca19c..fcfba3162f35 100644 --- a/components/admin_console/permission_schemes_settings/permissions_tree/__snapshots__/permissions_tree.test.jsx.snap +++ b/components/admin_console/permission_schemes_settings/permissions_tree/__snapshots__/permissions_tree.test.jsx.snap @@ -241,10 +241,13 @@ exports[`components/admin_console/permission_schemes_settings/permission_tree sh Object { "id": "integrations", "permissions": Array [ - "manage_webhooks", + "manage_incoming_webhooks", + "manage_outgoing_webhooks", "manage_oauth", "manage_slash_commands", - "manage_emojis", + "create_emojis", + "delete_emojis", + "delete_others_emojis", ], }, ] @@ -378,10 +381,13 @@ exports[`components/admin_console/permission_schemes_settings/permission_tree sh Object { "id": "integrations", "permissions": Array [ - "manage_webhooks", + "manage_incoming_webhooks", + "manage_outgoing_webhooks", "manage_oauth", "manage_slash_commands", - "manage_emojis", + "create_emojis", + "delete_emojis", + "delete_others_emojis", ], }, ] @@ -515,10 +521,13 @@ exports[`components/admin_console/permission_schemes_settings/permission_tree sh Object { "id": "integrations", "permissions": Array [ - "manage_webhooks", + "manage_incoming_webhooks", + "manage_outgoing_webhooks", "manage_oauth", "manage_slash_commands", - "manage_emojis", + "create_emojis", + "delete_emojis", + "delete_others_emojis", ], }, ] @@ -652,10 +661,13 @@ exports[`components/admin_console/permission_schemes_settings/permission_tree sh Object { "id": "integrations", "permissions": Array [ - "manage_webhooks", + "manage_incoming_webhooks", + "manage_outgoing_webhooks", "manage_oauth", "manage_slash_commands", - "manage_emojis", + "create_emojis", + "delete_emojis", + "delete_others_emojis", ], }, ] @@ -793,10 +805,13 @@ exports[`components/admin_console/permission_schemes_settings/permission_tree sh Object { "id": "integrations", "permissions": Array [ - "manage_webhooks", + "manage_incoming_webhooks", + "manage_outgoing_webhooks", "manage_oauth", "manage_slash_commands", - "manage_emojis", + "create_emojis", + "delete_emojis", + "delete_others_emojis", ], }, ] diff --git a/components/admin_console/permission_schemes_settings/permissions_tree/permissions_tree.jsx b/components/admin_console/permission_schemes_settings/permissions_tree/permissions_tree.jsx index 11858275d790..3168ba9c3616 100644 --- a/components/admin_console/permission_schemes_settings/permissions_tree/permissions_tree.jsx +++ b/components/admin_console/permission_schemes_settings/permissions_tree/permissions_tree.jsx @@ -114,8 +114,11 @@ export default class PermissionsTree extends React.Component { updateGroups = () => { const {config, scope} = this.props; const integrationsGroup = this.groups[this.groups.length - 1]; - if ((config.EnableIncomingWebhooks === 'true' || config.EnableOutgoingWebhooks === 'true') && integrationsGroup.permissions.indexOf('manage_webhooks') === -1) { - integrationsGroup.permissions.push('manage_webhooks'); + if (config.EnableIncomingWebhooks === 'true' && integrationsGroup.permissions.indexOf('manage_incoming_webhooks') === -1) { + integrationsGroup.permissions.push('manage_incoming_webhooks'); + } + if (config.EnableOutgoingWebhooks === 'true' && integrationsGroup.permissions.indexOf('manage_outgoing_webhooks') === -1) { + integrationsGroup.permissions.push('manage_outgoing_webhooks'); } if (config.EnableOAuthServiceProvider === 'true' && integrationsGroup.permissions.indexOf('manage_oauth') === -1) { integrationsGroup.permissions.push('manage_oauth'); @@ -123,8 +126,14 @@ export default class PermissionsTree extends React.Component { if (config.EnableCommands === 'true' && integrationsGroup.permissions.indexOf('manage_slash_commands') === -1) { integrationsGroup.permissions.push('manage_slash_commands'); } - if (config.EnableCustomEmoji === 'true' && integrationsGroup.permissions.indexOf('manage_emojis') === -1) { - integrationsGroup.permissions.push('manage_emojis'); + if (config.EnableCustomEmoji === 'true' && integrationsGroup.permissions.indexOf('create_emojis') === -1) { + integrationsGroup.permissions.push('create_emojis'); + } + if (config.EnableCustomEmoji === 'true' && integrationsGroup.permissions.indexOf('delete_emojis') === -1) { + integrationsGroup.permissions.push('delete_emojis'); + } + if (config.EnableCustomEmoji === 'true' && integrationsGroup.permissions.indexOf('delete_others_emojis') === -1) { + integrationsGroup.permissions.push('delete_others_emojis'); } if (scope === 'team_scope' && this.groups[0].id !== 'teams_team_scope') { this.groups[0].id = 'teams_team_scope'; diff --git a/components/backstage/backstage_controller.jsx b/components/backstage/backstage_controller.jsx index 5d4ac8dbadb2..3e1a2987f45c 100644 --- a/components/backstage/backstage_controller.jsx +++ b/components/backstage/backstage_controller.jsx @@ -64,7 +64,7 @@ export default class BackstageController extends React.Component { enableOutgoingWebhooks: PropTypes.bool.isRequired, enableCommands: PropTypes.bool.isRequired, enableOAuthServiceProvider: PropTypes.bool.isRequired, - canCreateCustomEmoji: PropTypes.bool.isRequired, + canCreateOrDeleteCustomEmoji: PropTypes.bool.isRequired, } scrollToTop = () => { @@ -107,7 +107,7 @@ export default class BackstageController extends React.Component { enableOutgoingWebhooks={this.props.enableOutgoingWebhooks} enableCommands={this.props.enableCommands} enableOAuthServiceProvider={this.props.enableOAuthServiceProvider} - canCreateCustomEmoji={this.props.canCreateCustomEmoji} + canCreateOrDeleteCustomEmoji={this.props.canCreateOrDeleteCustomEmoji} /> @@ -61,11 +61,11 @@ export default class EmojiListItem extends React.Component { deleteButton = ( diff --git a/components/emoji/emoji_page.jsx b/components/emoji/emoji_page.jsx index 6e5fb41292a9..938bbaa35379 100644 --- a/components/emoji/emoji_page.jsx +++ b/components/emoji/emoji_page.jsx @@ -58,7 +58,7 @@ export default class EmojiPage extends React.Component { incomingHooks[key]). diff --git a/components/integrations/installed_outgoing_webhooks/index.js b/components/integrations/installed_outgoing_webhooks/index.js index 0098fd6deb4b..769efb03e3b0 100644 --- a/components/integrations/installed_outgoing_webhooks/index.js +++ b/components/integrations/installed_outgoing_webhooks/index.js @@ -18,7 +18,7 @@ import InstalledOutgoingWebhook from './installed_outgoing_webhooks.jsx'; function mapStateToProps(state) { const config = getConfig(state); const teamId = getCurrentTeamId(state); - const canManageOthersWebhooks = haveITeamPermission(state, {team: teamId, permission: Permissions.MANAGE_OTHERS_WEBHOOKS}); + const canManageOthersWebhooks = haveITeamPermission(state, {team: teamId, permission: Permissions.MANAGE_OTHERS_OUTGOING_WEBHOOKS}); const outgoingHooks = getOutgoingHooks(state); const outgoingWebhooks = Object.keys(outgoingHooks). map((key) => outgoingHooks[key]). diff --git a/components/integrations/integrations.jsx b/components/integrations/integrations.jsx index 8f689e5a784c..1c33bf14273e 100644 --- a/components/integrations/integrations.jsx +++ b/components/integrations/integrations.jsx @@ -47,7 +47,7 @@ export default class Integrations extends React.Component { options.push( diff --git a/components/main_menu/main_menu.test.jsx b/components/main_menu/main_menu.test.jsx index 8751a7a224ad..56e438906cc7 100644 --- a/components/main_menu/main_menu.test.jsx +++ b/components/main_menu/main_menu.test.jsx @@ -18,7 +18,7 @@ describe('components/Menu', () => { appDownloadLink: null, enableCommands: false, enableCustomEmoji: false, - canCreateCustomEmoji: false, + canCreateOrDeleteCustomEmoji: false, enableIncomingWebhooks: false, enableOAuthServiceProvider: false, enableOutgoingWebhooks: false, @@ -62,7 +62,7 @@ describe('components/Menu', () => { appDownloadLink: 'test', enableCommands: true, enableCustomEmoji: true, - canCreateCustomEmoji: true, + canCreateOrDeleteCustomEmoji: true, enableIncomingWebhooks: true, enableOAuthServiceProvider: true, enableOutgoingWebhooks: true, @@ -84,7 +84,7 @@ describe('components/Menu', () => { appDownloadLink: 'test', enableCommands: true, enableCustomEmoji: true, - canCreateCustomEmoji: true, + canCreateOrDeleteCustomEmoji: true, enableIncomingWebhooks: true, enableOAuthServiceProvider: true, enableOutgoingWebhooks: true, diff --git a/components/suggestion/switch_channel_provider.jsx b/components/suggestion/switch_channel_provider.jsx index 47e924f3c3ac..ad84eb641e58 100644 --- a/components/suggestion/switch_channel_provider.jsx +++ b/components/suggestion/switch_channel_provider.jsx @@ -12,10 +12,11 @@ import { getDirectAndGroupChannels, getSortedUnreadChannelIds, makeGetChannel, + getMyChannelMemberships, } from 'mattermost-redux/selectors/entities/channels'; -import {getMyChannelMemberships} from 'mattermost-redux/selectors/entities/common'; -import {getBool} from 'mattermost-redux/selectors/entities/preferences'; +import {getBool, getMyPreferences} from 'mattermost-redux/selectors/entities/preferences'; import {getConfig} from 'mattermost-redux/selectors/entities/general'; +import {getLastPostPerChannel} from 'mattermost-redux/selectors/entities/posts'; import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams'; import { getCurrentUser, @@ -27,7 +28,11 @@ import { import * as ChannelActions from 'mattermost-redux/actions/channels'; import {logError} from 'mattermost-redux/actions/errors'; -import {sortChannelsByTypeAndDisplayName} from 'mattermost-redux/utils/channel_utils'; +import { + sortChannelsByTypeAndDisplayName, + isDirectChannelVisible, + isUnreadChannel, +} from 'mattermost-redux/utils/channel_utils'; import DraftIcon from 'components/svg/draft_icon'; import GlobeIcon from 'components/svg/globe_icon'; @@ -385,7 +390,7 @@ export default class SwitchChannelProvider extends Provider { user, newChannel ); - const isDMVisible = getBool(getState(), Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, user.id, false); + const isDMVisible = isDirectChannelVisible(user.id, config, getMyPreferences(state), channel, getLastPostPerChannel(state)[channel.id], isUnreadChannel(getMyChannelMemberships(state), channel)); if (isDMVisible) { wrappedChannel.type = Constants.MENTION_CHANNELS; } else { diff --git a/i18n/en.json b/i18n/en.json index 44868f7541f4..0c2e6f5a4183 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -918,8 +918,12 @@ "admin.permissions.permission.list_users_without_team.name": "List users without team", "admin.permissions.permission.manage_channel_roles.description": "Manage channel roles", "admin.permissions.permission.manage_channel_roles.name": "Manage channel roles", - "admin.permissions.permission.manage_emojis.description": "Create and delete custom emoji.", - "admin.permissions.permission.manage_emojis.name": "Manage Custom Emoji", + "admin.permissions.permission.create_emojis.description": "Create custom emoji.", + "admin.permissions.permission.create_emojis.name": "Create Custom Emoji", + "admin.permissions.permission.delete_emojis.description": "Delete custom emoji.", + "admin.permissions.permission.delete_emojis.name": "Delete Custom Emoji", + "admin.permissions.permission.delete_others_emojis.description": "Delete others' custom emoji.", + "admin.permissions.permission.delete_others_emojis.name": "Delete Others' Custom Emoji", "admin.permissions.permission.manage_jobs.description": "Manage jobs", "admin.permissions.permission.manage_jobs.name": "Manage jobs", "admin.permissions.permission.manage_oauth.description": "Create, edit and delete OAuth 2.0 application tokens.", @@ -942,8 +946,10 @@ "admin.permissions.permission.manage_team_roles.name": "Manage team roles", "admin.permissions.permission.manage_team.description": "Manage team", "admin.permissions.permission.manage_team.name": "Manage team", - "admin.permissions.permission.manage_webhooks.description": "Create, edit, and delete incoming and outgoing webhooks.", - "admin.permissions.permission.manage_webhooks.name": "Manage Webhooks", + "admin.permissions.permission.manage_incoming_webhooks.description": "Create, edit, and delete incoming webhooks.", + "admin.permissions.permission.manage_incoming_webhooks.name": "Manage Incoming Webhooks", + "admin.permissions.permission.manage_outgoing_webhooks.description": "Create, edit, and delete outgoing webhooks.", + "admin.permissions.permission.manage_outgoing_webhooks.name": "Manage Outgoing Webhooks", "admin.permissions.permission.permanent_delete_user.description": "Permanent delete user", "admin.permissions.permission.permanent_delete_user.name": "Permanent delete user", "admin.permissions.permission.read_channel.description": "Read channel", @@ -1409,7 +1415,7 @@ "admin.team.showFullname": "Show first and last name", "admin.team.showNickname": "Show nickname if one exists, otherwise show first and last name", "admin.team.showUsername": "Show username (default)", - "admin.team.siteNameDescription": "Name of service shown in login screens and UI.", + "admin.team.siteNameDescription": "Name of service shown in login screens and UI. When not specified, it defaults to \"Mattermost\".", "admin.team.siteNameExample": "E.g.: \"Mattermost\"", "admin.team.siteNameTitle": "Site Name:", "admin.team.teamCreationDescription": "When false, only System Administrators can create teams.", diff --git a/i18n/ko.json b/i18n/ko.json index 289ee904196a..7072484a054f 100644 --- a/i18n/ko.json +++ b/i18n/ko.json @@ -1328,7 +1328,7 @@ "admin.team.showFullname": "본명으로 보기", "admin.team.showNickname": "별명이 있으면 별명으로, 없으면 본명으로 보기", "admin.team.showUsername": "사용자명으로 보기 (기본)", - "admin.team.siteNameDescription": "Name of service shown in login screens and UI.", + "admin.team.siteNameDescription": "Name of service shown in login screens and UI. When not specified, it defaults to \"Mattermost\".", "admin.team.siteNameExample": "예시 \"Mattermost\"", "admin.team.siteNameTitle": "사이트 이름:", "admin.team.teamCreationDescription": "When false, only System Administrators can create teams.", diff --git a/package-lock.json b/package-lock.json index d6b261b1e512..fc548044264d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9497,8 +9497,8 @@ "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" }, "mattermost-redux": { - "version": "github:mattermost/mattermost-redux#33634b9633331e769312c42001b9f8d72e492781", - "from": "github:mattermost/mattermost-redux#33634b9633331e769312c42001b9f8d72e492781", + "version": "github:mattermost/mattermost-redux#7cdad4bd96d10ac7b69e8f9de8443f7fc7a116e5", + "from": "github:mattermost/mattermost-redux#7cdad4bd96d10ac7b69e8f9de8443f7fc7a116e5", "requires": { "deep-equal": "1.0.1", "eslint-plugin-header": "2.0.0", diff --git a/package.json b/package.json index 231ab908aa46..6d32aaf3a45c 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "localforage": "1.7.3", "localforage-observable": "1.4.0", "marked": "github:mattermost/marked#7ad73fe76f2264c533767f9105e7c7cff0fa34f1", - "mattermost-redux": "github:mattermost/mattermost-redux#33634b9633331e769312c42001b9f8d72e492781", + "mattermost-redux": "github:mattermost/mattermost-redux#7cdad4bd96d10ac7b69e8f9de8443f7fc7a116e5", "moment-timezone": "0.5.23", "pdfjs-dist": "2.0.489", "perfect-scrollbar": "0.8.1", @@ -161,9 +161,7 @@ "setupFiles": [ "jest-canvas-mock" ], - "setupFilesAfterEnv": [ - "/tests/setup.js" - ], + "setupTestFrameworkScriptFile": "/tests/setup.js", "testURL": "http://localhost:8065" }, "jest-junit": { diff --git a/plugins/test/__snapshots__/main_menu_action.test.jsx.snap b/plugins/test/__snapshots__/main_menu_action.test.jsx.snap index c5bef5ce2a2e..89d9f80b1030 100644 --- a/plugins/test/__snapshots__/main_menu_action.test.jsx.snap +++ b/plugins/test/__snapshots__/main_menu_action.test.jsx.snap @@ -156,7 +156,8 @@ exports[`plugins/MainMenuActions should match snapshot and click plugin item for Array [ "manage_slash_commands", "manage_oauth", - "manage_webhooks", + "manage_incoming_webhooks", + "manage_outgoing_webhooks", ] } teamId="someteamid" diff --git a/plugins/test/main_menu_action.test.jsx b/plugins/test/main_menu_action.test.jsx index a327250ef917..31fbe567a2c6 100644 --- a/plugins/test/main_menu_action.test.jsx +++ b/plugins/test/main_menu_action.test.jsx @@ -26,7 +26,7 @@ describe('plugins/MainMenuActions', () => { showDropdown: true, onToggleDropdown: () => {}, //eslint-disable-line no-empty-function pluginMenuItems: [{id: 'someplugin', text: 'some plugin text', action: pluginAction}], - canCreateCustomEmoji: true, + canCreateOrDeleteCustomEmoji: true, moreTeamsToJoin: true, actions: { openModal: jest.fn(), diff --git a/utils/constants.jsx b/utils/constants.jsx index 2cbda39513ce..861867fe2b2c 100644 --- a/utils/constants.jsx +++ b/utils/constants.jsx @@ -491,8 +491,10 @@ export const PermissionsScope = { [Permissions.PERMANENT_DELETE_USER]: 'system_scope', [Permissions.UPLOAD_FILE]: 'channel_scope', [Permissions.GET_PUBLIC_LINK]: 'system_scope', - [Permissions.MANAGE_WEBHOOKS]: 'team_scope', - [Permissions.MANAGE_OTHERS_WEBHOOKS]: 'team_scope', + [Permissions.MANAGE_INCOMING_WEBHOOKS]: 'team_scope', + [Permissions.MANAGE_OTHERS_INCOMING_WEBHOOKS]: 'team_scope', + [Permissions.MANAGE_OUTGOING_WEBHOOKS]: 'team_scope', + [Permissions.MANAGE_OTHERS_OUTGOING_WEBHOOKS]: 'team_scope', [Permissions.MANAGE_OAUTH]: 'system_scope', [Permissions.MANAGE_SYSTEM_WIDE_OAUTH]: 'system_scope', [Permissions.CREATE_POST]: 'channel_scope', @@ -511,8 +513,9 @@ export const PermissionsScope = { [Permissions.READ_USER_ACCESS_TOKEN]: 'system_scope', [Permissions.REVOKE_USER_ACCESS_TOKEN]: 'system_scope', [Permissions.MANAGE_JOBS]: 'system_scope', - [Permissions.MANAGE_EMOJIS]: 'team_scope', - [Permissions.MANAGE_OTHERS_EMOJIS]: 'team_scope', + [Permissions.CREATE_EMOJIS]: 'team_scope', + [Permissions.DELETE_EMOJIS]: 'team_scope', + [Permissions.DELETE_OTHERS_EMOJIS]: 'team_scope', }; export const DefaultRolePermissions = { @@ -544,7 +547,8 @@ export const DefaultRolePermissions = { Permissions.MANAGE_PRIVATE_CHANNEL_MEMBERS, Permissions.DELETE_POST, Permissions.EDIT_POST, - Permissions.MANAGE_EMOJIS, + Permissions.MANAGE_CREATE_EMOJIS, + Permissions.MANAGE_DELETE_EMOJIS, ], channel_admin: [ Permissions.MANAGE_CHANNEL_ROLES, @@ -556,10 +560,10 @@ export const DefaultRolePermissions = { Permissions.IMPORT_TEAM, Permissions.MANAGE_TEAM_ROLES, Permissions.MANAGE_CHANNEL_ROLES, - Permissions.MANAGE_OTHERS_WEBHOOKS, Permissions.MANAGE_SLASH_COMMANDS, Permissions.MANAGE_OTHERS_SLASH_COMMANDS, - Permissions.MANAGE_WEBHOOKS, + Permissions.MANAGE_INCOMING_WEBHOOKS, + Permissions.MANAGE_OUTGOING_WEBHOOKS, Permissions.DELETE_POST, Permissions.DELETE_OTHERS_POSTS, ], diff --git a/utils/policy_roles_adapter.js b/utils/policy_roles_adapter.js index 29d0f25c2756..0c9119009287 100644 --- a/utils/policy_roles_adapter.js +++ b/utils/policy_roles_adapter.js @@ -22,12 +22,14 @@ const MAPPING = { enableOnlyAdminIntegrations: { true: [ - {roleName: 'team_user', permission: Permissions.MANAGE_WEBHOOKS, shouldHave: false}, + {roleName: 'team_user', permission: Permissions.MANAGE_INCOMING_WEBHOOKS, shouldHave: false}, + {roleName: 'team_user', permission: Permissions.MANAGE_OUTGOING_WEBHOOKS, shouldHave: false}, {roleName: 'team_user', permission: Permissions.MANAGE_SLASH_COMMANDS, shouldHave: false}, {roleName: 'system_user', permission: Permissions.MANAGE_OAUTH, shouldHave: false}, ], false: [ - {roleName: 'team_user', permission: Permissions.MANAGE_WEBHOOKS, shouldHave: true}, + {roleName: 'team_user', permission: Permissions.MANAGE_INCOMING_WEBHOOKS, shouldHave: true}, + {roleName: 'team_user', permission: Permissions.MANAGE_OUTGOING_WEBHOOKS, shouldHave: true}, {roleName: 'team_user', permission: Permissions.MANAGE_SLASH_COMMANDS, shouldHave: true}, {roleName: 'system_user', permission: Permissions.MANAGE_OAUTH, shouldHave: true}, ], diff --git a/utils/policy_roles_adapter.test.jsx b/utils/policy_roles_adapter.test.jsx index 6b31fa138103..a0fb1356ac62 100644 --- a/utils/policy_roles_adapter.test.jsx +++ b/utils/policy_roles_adapter.test.jsx @@ -129,11 +129,11 @@ describe('PolicyRolesAdapter', () => { describe('enableOnlyAdminIntegrations', () => { test('true', () => { roles.system_user.permissions = [Permissions.MANAGE_OAUTH]; - roles.team_user.permissions = [Permissions.MANAGE_WEBHOOKS, Permissions.MANAGE_SLASH_COMMANDS]; + roles.team_user.permissions = [Permissions.MANAGE_INCOMING_WEBHOOKS, Permissions.MANAGE_OUTGOING_WEBHOOKS, Permissions.MANAGE_SLASH_COMMANDS]; const updatedRoles = rolesFromMapping({enableOnlyAdminIntegrations: 'true'}, roles); expect(Object.values(updatedRoles).length).toEqual(2); expect(updatedRoles.system_user.permissions).not.toEqual(expect.arrayContaining([Permissions.MANAGE_OAUTH])); - expect(updatedRoles.team_user.permissions).not.toEqual(expect.arrayContaining([Permissions.MANAGE_WEBHOOKS, Permissions.MANAGE_SLASH_COMMANDS])); + expect(updatedRoles.team_user.permissions).not.toEqual(expect.arrayContaining([Permissions.MANAGE_INCOMING_WEBHOOKS, Permissions.MANAGE_OUTGOING_WEBHOOKS, Permissions.MANAGE_SLASH_COMMANDS])); }); test('false', () => { @@ -142,7 +142,7 @@ describe('PolicyRolesAdapter', () => { const updatedRoles = rolesFromMapping({enableOnlyAdminIntegrations: 'false'}, roles); expect(Object.values(updatedRoles).length).toEqual(2); expect(updatedRoles.system_user.permissions).toEqual(expect.arrayContaining([Permissions.MANAGE_OAUTH])); - expect(updatedRoles.team_user.permissions).toEqual(expect.arrayContaining([Permissions.MANAGE_WEBHOOKS, Permissions.MANAGE_SLASH_COMMANDS])); + expect(updatedRoles.team_user.permissions).toEqual(expect.arrayContaining([Permissions.MANAGE_INCOMING_WEBHOOKS, Permissions.MANAGE_OUTGOING_WEBHOOKS, Permissions.MANAGE_SLASH_COMMANDS])); }); }); @@ -167,13 +167,15 @@ describe('PolicyRolesAdapter', () => { describe('enableOnlyAdminIntegrations', () => { test('returns the expected policy value for a enableOnlyAdminIntegrations policy', () => { - addPermissionToRole(Permissions.MANAGE_WEBHOOKS, roles.team_user); + addPermissionToRole(Permissions.MANAGE_INCOMING_WEBHOOKS, roles.team_user); + addPermissionToRole(Permissions.MANAGE_OUTGOING_WEBHOOKS, roles.team_user); addPermissionToRole(Permissions.MANAGE_SLASH_COMMANDS, roles.team_user); addPermissionToRole(Permissions.MANAGE_OAUTH, roles.system_user); let value = mappingValueFromRoles('enableOnlyAdminIntegrations', roles); expect(value).toEqual('false'); - removePermissionFromRole(Permissions.MANAGE_WEBHOOKS, roles.team_user); + removePermissionFromRole(Permissions.MANAGE_INCOMING_WEBHOOKS, roles.team_user); + removePermissionFromRole(Permissions.MANAGE_OUTGOING_WEBHOOKS, roles.team_user); removePermissionFromRole(Permissions.MANAGE_SLASH_COMMANDS, roles.team_user); removePermissionFromRole(Permissions.MANAGE_OAUTH, roles.system_user); value = mappingValueFromRoles('enableOnlyAdminIntegrations', roles);