Skip to content

Commit

Permalink
💥 splitting Permission external and internal representations
Browse files Browse the repository at this point in the history
Signed-off-by: dseurotech <davide.salvador@eurotech.com>
  • Loading branch information
dseurotech committed Jan 31, 2025
1 parent 9052f2e commit 6014649
Show file tree
Hide file tree
Showing 17 changed files with 333 additions and 393 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,31 +12,29 @@
*******************************************************************************/
package org.eclipse.kapua.integration.misc;

import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import java.util.Date;

import org.eclipse.kapua.commons.model.id.KapuaEid;
import org.eclipse.kapua.model.domain.Actions;
import org.eclipse.kapua.model.id.KapuaId;
import org.eclipse.kapua.qa.markers.junit.JUnitTests;
import org.eclipse.kapua.service.authorization.access.AccessPermission;
import org.eclipse.kapua.service.authorization.access.shiro.AccessPermissionImpl;
import org.eclipse.kapua.service.authorization.permission.Permission;
import org.eclipse.kapua.service.authorization.permission.shiro.PermissionImpl;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.mockito.Mockito;

import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import java.util.Date;


@Category(JUnitTests.class)
public class AccessPermissionImplTest {

AccessPermissionImpl accessPermissionImpl1, accessPermissionImpl2, accessPermissionImpl;
AccessPermission accessPermission;
PermissionImpl permission1, permission2;
Permission permission1, permission2;
Permission newPermission;
Date createdOn;

Expand All @@ -45,8 +43,8 @@ public void initialize() {
accessPermissionImpl1 = new AccessPermissionImpl(KapuaId.ONE);
accessPermissionImpl2 = new AccessPermissionImpl(KapuaId.ONE);
accessPermission = Mockito.mock(AccessPermission.class);
permission1 = Mockito.mock(PermissionImpl.class);
permission2 = Mockito.mock(PermissionImpl.class);
permission1 = new Permission("domain", Actions.connect, KapuaId.ONE, KapuaId.ANY, false);
permission2 = new Permission("another", null, null);
newPermission = Mockito.mock(Permission.class);
createdOn = new Date();

Expand All @@ -56,10 +54,6 @@ public void initialize() {
Mockito.when(accessPermission.getCreatedOn()).thenReturn(createdOn);
Mockito.when(accessPermission.getAccessInfoId()).thenReturn(KapuaId.ONE);
Mockito.when(accessPermission.getPermission()).thenReturn(permission1);
Mockito.when(permission1.getDomain()).thenReturn("domain");
Mockito.when(permission1.getAction()).thenReturn(Actions.connect);
Mockito.when(permission1.getTargetScopeId()).thenReturn(KapuaId.ONE);
Mockito.when(permission1.getGroupId()).thenReturn(KapuaId.ANY);

accessPermissionImpl = new AccessPermissionImpl(accessPermission);
}
Expand Down Expand Up @@ -168,8 +162,7 @@ public void hashCodeNullAccessInfoIdTest() {
Mockito.when(permission.getAction()).thenReturn(null);
Mockito.when(permission.getTargetScopeId()).thenReturn(null);
Mockito.when(permission.getGroupId()).thenReturn(null);
PermissionImpl permissionImpl = new PermissionImpl(permission);
accessPermissionImpl1.setPermission(permissionImpl);
accessPermissionImpl1.setPermission(permission);
Assert.assertEquals("Expected and actual values should be the same.", 924482, accessPermissionImpl1.hashCode());
}

Expand All @@ -181,8 +174,7 @@ public void hashCodeTest() {
Mockito.when(permission.getAction()).thenReturn(null);
Mockito.when(permission.getTargetScopeId()).thenReturn(null);
Mockito.when(permission.getGroupId()).thenReturn(null);
PermissionImpl permissionImpl = new PermissionImpl(permission);
accessPermissionImpl1.setPermission(permissionImpl);
accessPermissionImpl1.setPermission(permission);
Assert.assertEquals("Expected and actual values should be the same.", 925474, accessPermissionImpl1.hashCode());
}

Expand Down Expand Up @@ -252,7 +244,7 @@ public void equalsEqualAccessInfoIdsEqualPermissionsTest() {
public void equalsEqualAccessInfoIdsDifferentPermissionsTest() {
accessPermissionImpl1.setAccessInfoId(KapuaId.ONE);
accessPermissionImpl2.setAccessInfoId(KapuaId.ONE);
accessPermissionImpl1.setPermission(Mockito.mock(PermissionImpl.class));
accessPermissionImpl1.setPermission(new Permission("another", null, null));
Assert.assertFalse("False expected.", accessPermissionImpl1.equals(accessPermissionImpl2));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@

import java.util.Date;

import org.eclipse.kapua.model.domain.Actions;
import org.eclipse.kapua.model.id.KapuaId;
import org.eclipse.kapua.qa.markers.junit.JUnitTests;
import org.eclipse.kapua.service.authorization.permission.shiro.PermissionImpl;
import org.eclipse.kapua.service.authorization.permission.Permission;
import org.eclipse.kapua.service.authorization.role.RolePermission;
import org.eclipse.kapua.service.authorization.role.shiro.RolePermissionFactoryImpl;
import org.junit.Assert;
Expand All @@ -32,7 +33,7 @@ public class RolePermissionFactoryTest {
KapuaId scopeId;
RolePermission rolePermission;
Date createdOn, modifiedOn;
PermissionImpl permission;
Permission permission;

@Before
public void initialize() {
Expand All @@ -41,7 +42,7 @@ public void initialize() {
createdOn = new Date();
modifiedOn = new Date();
rolePermission = Mockito.mock(RolePermission.class);
permission = Mockito.mock(PermissionImpl.class);
permission = new Permission("domain", Actions.connect, KapuaId.ONE);

Mockito.when(rolePermission.getId()).thenReturn(KapuaId.ANY);
Mockito.when(rolePermission.getRoleId()).thenReturn(KapuaId.ONE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,13 @@
*******************************************************************************/
package org.eclipse.kapua.integration.misc;

import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import java.util.Date;

import org.eclipse.kapua.model.id.KapuaId;
import org.eclipse.kapua.qa.markers.junit.JUnitTests;
import org.eclipse.kapua.service.authorization.permission.Permission;
import org.eclipse.kapua.service.authorization.permission.shiro.PermissionImpl;
import org.eclipse.kapua.service.authorization.role.RolePermission;
import org.eclipse.kapua.service.authorization.role.shiro.RolePermissionImpl;
import org.junit.Assert;
Expand All @@ -24,11 +27,6 @@
import org.junit.experimental.categories.Category;
import org.mockito.Mockito;

import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import java.util.Date;


@Category(JUnitTests.class)
public class RolePermissionImplTest {

Expand All @@ -40,9 +38,9 @@ public class RolePermissionImplTest {

@Before
public void initialize() {
scopeIds = new KapuaId[]{null, KapuaId.ONE};
permission1 = Mockito.mock(Permission.class);
permission2 = Mockito.mock(PermissionImpl.class);
scopeIds = new KapuaId[] { null, KapuaId.ONE };
permission1 = new Permission(null, null, null);
permission2 = new Permission(null, null, null);
rolePermissionImpl1 = new RolePermissionImpl(KapuaId.ONE);
rolePermissionImpl2 = new RolePermissionImpl(KapuaId.ANY);
rolePermission = Mockito.mock(RolePermission.class);
Expand All @@ -69,7 +67,7 @@ public void rolePermissionImpScopeIdTest() {
for (KapuaId scopeId : scopeIds) {
RolePermissionImpl rolePermissionImpl = new RolePermissionImpl(scopeId);
Assert.assertEquals("Expected and actual values should be the same.", scopeId, rolePermissionImpl.getScopeId());
Assert.assertEquals("Expected and actual values should be the same.", new PermissionImpl(null, null, null, null), rolePermissionImpl.getPermission());
Assert.assertEquals("Expected and actual values should be the same.", new Permission(null, null, null), rolePermissionImpl.getPermission());
Assert.assertNull("Null expected.", rolePermissionImpl.getRoleId());
}
}
Expand All @@ -89,7 +87,7 @@ public void rolePermissionImplScopeIdNullPermissionTest() {
for (KapuaId scopeId : scopeIds) {
RolePermissionImpl rolePermissionImpl = new RolePermissionImpl(scopeId, null);
Assert.assertEquals("Expected and actual values should be the same.", scopeId, rolePermissionImpl.getScopeId());
Assert.assertEquals("Expected and actual values should be the same.", new PermissionImpl(null, null, null, null), rolePermissionImpl.getPermission());
Assert.assertEquals("Expected and actual values should be the same.", new Permission(null, null, null), rolePermissionImpl.getPermission());
}
}

Expand All @@ -112,7 +110,7 @@ public void rolePermissionImplNullRolePermissionTest() {

@Test
public void setAndGetRoleIdTest() {
KapuaId[] roleIds = {null, KapuaId.ONE};
KapuaId[] roleIds = { null, KapuaId.ONE };

RolePermissionImpl rolePermissionImpl1 = new RolePermissionImpl(KapuaId.ONE);
RolePermissionImpl rolePermissionImpl2 = new RolePermissionImpl(KapuaId.ANY, permission2);
Expand All @@ -135,8 +133,8 @@ public void setAndGetPermissionToStringTest() {
RolePermissionImpl rolePermissionImpl1 = new RolePermissionImpl(KapuaId.ONE);
RolePermissionImpl rolePermissionImpl2 = new RolePermissionImpl(KapuaId.ANY, permission2);
RolePermissionImpl rolePermissionImpl3 = new RolePermissionImpl(rolePermission);
Permission[] permissions = {null, permission1, permission2};
Permission[] expectedPermissions = {new PermissionImpl(null, null, null, null), new PermissionImpl(null, null, null, null), permission2};
Permission[] permissions = { null, permission1, permission2 };
Permission[] expectedPermissions = { new Permission(null, null, null), new Permission(null, null, null), permission2 };

for (int i = 0; i < permissions.length; i++) {
rolePermissionImpl1.setPermission(permissions[i]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@
@RunWith(Cucumber.class)
@CucumberOptions(
features = {
// "classpath:features/account/AccountServiceCreation.feature",
// "classpath:features/account/AccountExpirationI9n.feature",
// "classpath:features/account/FindSelfAccount.feature",
// "classpath:features/account/AccountGroupService.feature",
// "classpath:features/account/AccountDeviceRegistryService.feature",
// "classpath:features/account/AccountJobService.feature",
// "classpath:features/account/AccountRoleService.feature",
// "classpath:features/account/AccountTagService.feature",
// "classpath:features/account/AccountUserService.feature",
"classpath:features/account/AccountServiceCreation.feature",
"classpath:features/account/AccountExpirationI9n.feature",
"classpath:features/account/FindSelfAccount.feature",
"classpath:features/account/AccountGroupService.feature",
"classpath:features/account/AccountDeviceRegistryService.feature",
"classpath:features/account/AccountJobService.feature",
"classpath:features/account/AccountRoleService.feature",
"classpath:features/account/AccountTagService.feature",
"classpath:features/account/AccountUserService.feature",
"classpath:features/account/AccountCredentialService.feature"
},
glue = { "org.eclipse.kapua.qa.common",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,32 +12,30 @@
*******************************************************************************/
package org.eclipse.kapua.service.authorization.access;

import org.eclipse.kapua.model.KapuaEntity;
import org.eclipse.kapua.model.id.KapuaId;
import org.eclipse.kapua.model.id.KapuaIdAdapter;
import org.eclipse.kapua.service.authorization.permission.Permission;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import org.eclipse.kapua.model.KapuaEntity;
import org.eclipse.kapua.model.id.KapuaId;
import org.eclipse.kapua.model.id.KapuaIdAdapter;
import org.eclipse.kapua.service.authorization.permission.Permission;

/**
* Access permission entity.<br>
* Describes a {@link Permission} associated to the access info.<br>
* Wrapping of the {@link Permission} into this class is intended to adds auditing
* informations like {@link AccessPermission#getCreatedBy()} and{@link AccessPermission#getCreatedOn()}.<br>
* Access permission entity.<br> Describes a {@link Permission} associated to the access info.<br> Wrapping of the {@link Permission} into this class is intended to adds auditing informations like
* {@link AccessPermission#getCreatedBy()} and{@link AccessPermission#getCreatedOn()}.<br>
* <br>
* This is a not editable entity so it can be only removed or created and therefore any change to
* {@link AccessPermission#getAccessInfoId()} and {@link AccessPermission#getPermission()} property is forbidden.
* This is a not editable entity so it can be only removed or created and therefore any change to {@link AccessPermission#getAccessInfoId()} and {@link AccessPermission#getPermission()} property is
* forbidden.
*
* @since 1.0.0
*/
@XmlRootElement(name = "accessPermission")
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlType(propOrder = {"accessInfoId", "permission"}, //
@XmlType(propOrder = { "accessInfoId", "permission" }, //
factoryClass = AccessPermissionXmlRegistry.class, //
factoryMethod = "newAccessPermission")
public interface AccessPermission extends KapuaEntity {
Expand All @@ -52,7 +50,8 @@ default String getType() {
/**
* Sets the {@link AccessInfo} id of which this {@link AccessPermission} belongs.
*
* @param accessId The {@link AccessInfo} id.
* @param accessId
* The {@link AccessInfo} id.
* @since 1.0.0
*/
void setAccessInfoId(KapuaId accessId);
Expand All @@ -68,10 +67,10 @@ default String getType() {
KapuaId getAccessInfoId();

/**
* Sets the {@link Permission} that this {@link AccessPermission} has.<br>
* It up to the implementation class to make a clone of the given {@link Permission} or use the given {@link Permission}.
* Sets the {@link Permission} that this {@link AccessPermission} has.<br> It up to the implementation class to make a clone of the given {@link Permission} or use the given {@link Permission}.
*
* @param permission The {@link Permission} to set for this {@link AccessPermission}.
* @param permission
* The {@link Permission} to set for this {@link AccessPermission}.
* @since 1.0.0
*/
void setPermission(Permission permission);
Expand All @@ -82,6 +81,6 @@ default String getType() {
* @return The {@link Permission} that this {@link AccessPermission} has.
*/
@XmlElement(name = "permission")
<P extends Permission> P getPermission();
Permission getPermission();

}
Loading

0 comments on commit 6014649

Please sign in to comment.