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