diff --git a/scm-ui/src/repos/permissions/containers/Permissions.js b/scm-ui/src/repos/permissions/containers/Permissions.js index e5b60474c4..7e41f2ff59 100644 --- a/scm-ui/src/repos/permissions/containers/Permissions.js +++ b/scm-ui/src/repos/permissions/containers/Permissions.js @@ -127,7 +127,7 @@ class Permissions extends React.Component { {permissions.map(permission => { return ( { state, ownProps.namespace, ownProps.repoName, - permission.name + permission ); const deleteLoading = isDeletePermissionPending( state, ownProps.namespace, ownProps.repoName, - permission.name + permission ); return { loading, deleteLoading }; diff --git a/scm-ui/src/repos/permissions/modules/permissions.js b/scm-ui/src/repos/permissions/modules/permissions.js index fc0e10e03a..86d78e7ae9 100644 --- a/scm-ui/src/repos/permissions/modules/permissions.js +++ b/scm-ui/src/repos/permissions/modules/permissions.js @@ -162,7 +162,7 @@ export function modifyPermissionPending( return { type: MODIFY_PERMISSION_PENDING, payload: permission, - itemId: namespace + "/" + repoName + "/" + permission.name + itemId: createItemId(permission, namespace, repoName) }; } @@ -177,7 +177,7 @@ export function modifyPermissionSuccess( permission, position: namespace + "/" + repoName }, - itemId: namespace + "/" + repoName + "/" + permission.name + itemId: createItemId(permission, namespace, repoName) }; } @@ -190,7 +190,7 @@ export function modifyPermissionFailure( return { type: MODIFY_PERMISSION_FAILURE, payload: { error, permission }, - itemId: namespace + "/" + repoName + "/" + permission.name + itemId: createItemId(permission, namespace, repoName) }; } @@ -342,7 +342,7 @@ export function deletePermissionPending( return { type: DELETE_PERMISSION_PENDING, payload: permission, - itemId: namespace + "/" + repoName + "/" + permission.name + itemId: createItemId(permission, namespace, repoName) }; } @@ -357,7 +357,7 @@ export function deletePermissionSuccess( permission, position: namespace + "/" + repoName }, - itemId: namespace + "/" + repoName + "/" + permission.name + itemId: createItemId(permission, namespace, repoName) }; } @@ -373,7 +373,7 @@ export function deletePermissionFailure( error, permission }, - itemId: namespace + "/" + repoName + "/" + permission.name + itemId: createItemId(permission, namespace, repoName) }; } @@ -400,6 +400,15 @@ function deletePermissionFromState( return newPermission; } +function createItemId( + permission: Permission, + namespace: string, + repoName: string +) { + let groupPermission = permission.groupPermission ? "@" : ""; + return namespace + "/" + repoName + "/" + groupPermission + permission.name; +} + // reducer export default function reducer( state: Object = {}, @@ -493,12 +502,12 @@ export function isModifyPermissionPending( state: Object, namespace: string, repoName: string, - permissionname: string + permission: Permission ) { return isPending( state, MODIFY_PERMISSION, - namespace + "/" + repoName + "/" + permissionname + createItemId(permission, namespace, repoName) ); } @@ -506,12 +515,12 @@ export function getModifyPermissionFailure( state: Object, namespace: string, repoName: string, - permissionname: string + permission: Permission ) { return getFailure( state, MODIFY_PERMISSION, - namespace + "/" + repoName + "/" + permissionname + createItemId(permission, namespace, repoName) ); } @@ -544,12 +553,12 @@ export function isDeletePermissionPending( state: Object, namespace: string, repoName: string, - permissionname: string + permission: Permission ) { return isPending( state, DELETE_PERMISSION, - namespace + "/" + repoName + "/" + permissionname + createItemId(permission, namespace, repoName) ); } @@ -557,12 +566,12 @@ export function getDeletePermissionFailure( state: Object, namespace: string, repoName: string, - permissionname: string + permission: Permission ) { return getFailure( state, DELETE_PERMISSION, - namespace + "/" + repoName + "/" + permissionname + createItemId(permission, namespace, repoName) ); } @@ -578,17 +587,12 @@ export function getDeletePermissionsFailure( if (permissions == null) return undefined; for (let i = 0; i < permissions.length; i++) { if ( - getDeletePermissionFailure( - state, - namespace, - repoName, - permissions[i].name - ) + getDeletePermissionFailure(state, namespace, repoName, permissions[i]) ) { return getFailure( state, DELETE_PERMISSION, - namespace + "/" + repoName + "/" + permissions[i].name + createItemId(permissions[i], namespace, repoName) ); } } @@ -607,17 +611,12 @@ export function getModifyPermissionsFailure( if (permissions == null) return undefined; for (let i = 0; i < permissions.length; i++) { if ( - getModifyPermissionFailure( - state, - namespace, - repoName, - permissions[i].name - ) + getModifyPermissionFailure(state, namespace, repoName, permissions[i]) ) { return getFailure( state, MODIFY_PERMISSION, - namespace + "/" + repoName + "/" + permissions[i].name + createItemId(permissions[i], namespace, repoName) ); } } diff --git a/scm-ui/src/repos/permissions/modules/permissions.test.js b/scm-ui/src/repos/permissions/modules/permissions.test.js index f96c313a52..8214bdee5e 100644 --- a/scm-ui/src/repos/permissions/modules/permissions.test.js +++ b/scm-ui/src/repos/permissions/modules/permissions.test.js @@ -45,7 +45,7 @@ import type { Permission, PermissionCollection } from "@scm-manager/ui-types"; const hitchhiker_puzzle42Permission_user_eins: Permission = { name: "user_eins", type: "READ", - groupPermission: true, + groupPermission: false, _links: { self: { href: @@ -570,13 +570,23 @@ describe("permissions selectors", () => { } }; expect( - isModifyPermissionPending(state, "hitchhiker", "puzzle42", "user_eins") + isModifyPermissionPending( + state, + "hitchhiker", + "puzzle42", + hitchhiker_puzzle42Permission_user_eins + ) ).toEqual(true); }); it("should return false, when modify permission is not pending", () => { expect( - isModifyPermissionPending({}, "hitchiker", "puzzle42", "user_eins") + isModifyPermissionPending( + {}, + "hitchiker", + "puzzle42", + hitchhiker_puzzle42Permission_user_eins + ) ).toEqual(false); }); @@ -587,13 +597,23 @@ describe("permissions selectors", () => { } }; expect( - getModifyPermissionFailure(state, "hitchhiker", "puzzle42", "user_eins") + getModifyPermissionFailure( + state, + "hitchhiker", + "puzzle42", + hitchhiker_puzzle42Permission_user_eins + ) ).toEqual(error); }); it("should return undefined when modify permission did not fail", () => { expect( - getModifyPermissionFailure({}, "hitchhiker", "puzzle42", "user_eins") + getModifyPermissionFailure( + {}, + "hitchhiker", + "puzzle42", + hitchhiker_puzzle42Permission_user_eins + ) ).toBe(undefined); }); @@ -646,13 +666,23 @@ describe("permissions selectors", () => { } }; expect( - isDeletePermissionPending(state, "hitchhiker", "puzzle42", "user_eins") + isDeletePermissionPending( + state, + "hitchhiker", + "puzzle42", + hitchhiker_puzzle42Permission_user_eins + ) ).toEqual(true); }); it("should return false, when delete permission is not pending", () => { expect( - isDeletePermissionPending({}, "hitchiker", "puzzle42", "user_eins") + isDeletePermissionPending( + {}, + "hitchiker", + "puzzle42", + hitchhiker_puzzle42Permission_user_eins + ) ).toEqual(false); }); @@ -663,13 +693,23 @@ describe("permissions selectors", () => { } }; expect( - getDeletePermissionFailure(state, "hitchhiker", "puzzle42", "user_eins") + getDeletePermissionFailure( + state, + "hitchhiker", + "puzzle42", + hitchhiker_puzzle42Permission_user_eins + ) ).toEqual(error); }); it("should return undefined when delete permission did not fail", () => { expect( - getDeletePermissionFailure({}, "hitchhiker", "puzzle42", "user_eins") + getDeletePermissionFailure( + {}, + "hitchhiker", + "puzzle42", + hitchhiker_puzzle42Permission_user_eins + ) ).toBe(undefined); });