diff --git a/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/__snapshots__/permission_team_scheme_settings.test.tsx.snap b/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/__snapshots__/permission_team_scheme_settings.test.tsx.snap index 73517daa97..ec63cf7ee8 100644 --- a/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/__snapshots__/permission_team_scheme_settings.test.tsx.snap +++ b/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/__snapshots__/permission_team_scheme_settings.test.tsx.snap @@ -1,28 +1,436 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings should match snapshot on edit with permissions 1`] = ``; +exports[`components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings should match snapshot on edit with permissions 1`] = ` +
+ +
+ + +
+
+
+
+
+
+ + + +
+
+ +
+
+ + +
+
+ + +
+
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + +
+
+
+ + } + /> + + + +
+ +
+
+
+`; exports[`components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings should match snapshot on edit with permissions 2`] = ` Object { "all_users": Object { "displayName": "All members", "name": "all_users", - "permissions": Array [], + "permissions": Array [ + "invite_user", + "add_reaction", + "delete_post", + "delete_post", + ], + }, + "channel_admin": Object { + "name": "channel_admin", + "permissions": Array [ + "delete_post", + ], + }, + "channel_guest": Object { + "permissions": Array [ + "delete_post", + ], + }, + "channel_user": Object { + "permissions": Array [ + "add_reaction", + ], }, - "channel_admin": undefined, - "channel_guest": undefined, - "channel_user": undefined, "guests": Object { "displayName": "Guests", "name": "guests", - "permissions": undefined, + "permissions": Array [ + "edit_post", + "delete_post", + ], + }, + "playbook_admin": Object { + "permissions": Array [ + "delete_post", + ], + }, + "playbook_member": Object { + "permissions": Array [ + "delete_post", + ], + }, + "run_member": Object { + "permissions": Array [ + "delete_post", + ], + }, + "team_admin": Object { + "name": "team_admin", + "permissions": Array [ + "add_user_to_team", + ], + }, + "team_guest": Object { + "permissions": Array [ + "edit_post", + ], + }, + "team_user": Object { + "permissions": Array [ + "invite_user", + ], }, - "playbook_admin": undefined, - "playbook_member": undefined, - "run_member": undefined, - "team_admin": undefined, - "team_guest": undefined, - "team_user": undefined, } `; diff --git a/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings.test.tsx b/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings.test.tsx index d259c446e6..2476dfb373 100644 --- a/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings.test.tsx +++ b/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings.test.tsx @@ -336,12 +336,14 @@ describe('components/admin_console/permission_schemes_settings/permission_team_s permissions: ['invite_user'], }, bbb: { + name: 'team_admin', permissions: ['add_user_to_team'], }, ccc: { permissions: ['add_reaction'], }, ddd: { + name: 'channel_admin', permissions: ['delete_post'], }, eee: { @@ -350,6 +352,18 @@ describe('components/admin_console/permission_schemes_settings/permission_team_s fff: { permissions: ['delete_post'], }, + ggg: { + permissions: ['delete_post'], + }, + hhh: { + permissions: ['delete_post'], + }, + iii: { + permissions: ['delete_post'], + }, + jjj: { + permissions: ['delete_post'], + }, }, }; @@ -361,6 +375,23 @@ describe('components/admin_console/permission_schemes_settings/permission_team_s expect(getAnyInstance(wrapper).getStateRoles()).toMatchSnapshot(); done(); }); + + const instance = getAnyInstance(wrapper); + + // A moderated permission should set team/channel admins + instance.togglePermission('channel_admin', [Permissions.CREATE_POST]); + expect(getAnyState(wrapper).roles.channel_admin.permissions.indexOf(Permissions.CREATE_POST)).toBeGreaterThan(-1); + + // toggle again and disable + instance.togglePermission('channel_admin', [Permissions.CREATE_POST]); + expect(getAnyState(wrapper).roles.channel_admin.permissions.indexOf(Permissions.CREATE_POST)).toBe(-1); + + instance.togglePermission('team_admin', [Permissions.CREATE_POST]); + expect(getAnyState(wrapper).roles.team_admin.permissions.indexOf(Permissions.CREATE_POST)).toBeGreaterThan(-1); + + // toggle again and disable + instance.togglePermission('team_admin', [Permissions.CREATE_POST]); + expect(getAnyState(wrapper).roles.team_admin.permissions.indexOf(Permissions.CREATE_POST)).toBe(-1); }); test('should match snapshot on edit without guest permissions', (done) => { diff --git a/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings.tsx b/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings.tsx index a2aa3291c2..9230254261 100644 --- a/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings.tsx +++ b/webapp/channels/src/components/admin_console/permission_schemes_settings/permission_team_scheme_settings/permission_team_scheme_settings.tsx @@ -502,7 +502,14 @@ export default class PermissionTeamSchemeSettings extends React.PureComponent { const roles = {...this.getStateRoles()} as RolesMap; - const role = {...roles[roleId]} as Role; + const rolesKey = Object.keys(roles).find((roleKey) => roles[roleKey].name === roleId); + + if (!rolesKey) { + return; + } + + const role = {...roles[rolesKey]} as Role; + const newPermissions = [...role.permissions]; for (const permission of permissions) { if (newPermissions.indexOf(permission) === -1) { @@ -512,7 +519,7 @@ export default class PermissionTeamSchemeSettings extends React.PureComponent