From fdf70becbe10beca4ced819d57767d4cef4636fb Mon Sep 17 00:00:00 2001 From: RIHTARSIC Joze <joze.rihtarsic@ext.ec.europa.eu> Date: Thu, 13 Jul 2023 12:03:37 +0200 Subject: [PATCH] Add unit tests --- .../resource/ResourceResolverService.java | 2 +- .../resource/ResourceResolverServiceTest.java | 111 ++++++++++++++++++ .../services/ui/UIResourceServiceTest.java | 41 ++++--- 3 files changed, 132 insertions(+), 22 deletions(-) create mode 100644 smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/resource/ResourceResolverServiceTest.java diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/resource/ResourceResolverService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/resource/ResourceResolverService.java index 786a53a96..a6f07d1c3 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/resource/ResourceResolverService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/resource/ResourceResolverService.java @@ -139,7 +139,7 @@ public class ResourceResolverService { LOG.debug("Got subresource [{}]", subresource); if (subresource == null) { if (resourceRequest.getAction() != ResourceAction.CREATE_UPDATE) { - throw new SMPRuntimeException(ErrorCode.METADATA_NOT_EXISTS, resource.getIdentifierValue(), resource.getIdentifierScheme(), resourceId.getValue(), resourceId.getScheme()); + throw new SMPRuntimeException(ErrorCode.METADATA_NOT_EXISTS, resource.getIdentifierValue(), resource.getIdentifierScheme(), subResourceId.getValue(), subResourceId.getScheme()); } subresource = createNewSubResource(subResourceId, resource, subresourceDef); } diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/resource/ResourceResolverServiceTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/resource/ResourceResolverServiceTest.java new file mode 100644 index 000000000..38da422a3 --- /dev/null +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/resource/ResourceResolverServiceTest.java @@ -0,0 +1,111 @@ +package eu.europa.ec.edelivery.smp.services.resource; + +import eu.europa.ec.edelivery.smp.auth.SMPUserDetails; +import eu.europa.ec.edelivery.smp.config.ConversionTestConfig; +import eu.europa.ec.edelivery.smp.data.dao.SubresourceDao; +import eu.europa.ec.edelivery.smp.data.model.doc.DBResource; +import eu.europa.ec.edelivery.smp.data.model.doc.DBSubresource; +import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; +import eu.europa.ec.edelivery.smp.services.AbstractServiceIntegrationTest; +import eu.europa.ec.edelivery.smp.servlet.ResourceAction; +import eu.europa.ec.edelivery.smp.servlet.ResourceRequest; +import org.hamcrest.CoreMatchers; +import org.hamcrest.MatcherAssert; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.platform.commons.util.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.*; + + +@ContextConfiguration(classes = {ResourceResolverService.class, ConversionTestConfig.class}) +public class ResourceResolverServiceTest extends AbstractServiceIntegrationTest { + + + @Autowired + protected ResourceResolverService testInstance; + + @Autowired + protected SubresourceDao subresourceDao; + + @Before + public void prepareDatabase() { + // setup initial data! + testUtilsDao.clearData(); + testUtilsDao.createSubresources(); + } + + @Test + public void tesValidateRequestDataInvalid() { + + List<Object[]> faileTestData = Arrays.asList( + new Object[]{new ResourceRequest(null, null, null, null), "Resource Location vector coordinates must not be null"}, + new Object[]{new ResourceRequest(null, null, Collections.emptyList(), null), "Resource Location vector coordinates must not be null"}, + new Object[]{new ResourceRequest(null, null, Arrays.asList("1", "2", "3", "4", "5", "6"), null), "More than max. count (5) of Resource Location vector coordinates!"}, + new Object[]{new ResourceRequest(null, null, Arrays.asList("1", "2", "3"), null), "Can not resolve resource for unknown domain!"} + ); + + for (Object[] testData : faileTestData) { + ResourceRequest req = (ResourceRequest) testData[0]; + String expectedMessage = (String) testData[1]; + + SMPRuntimeException runtimeException = assertThrows(SMPRuntimeException.class, () -> testInstance.validateRequestData(req)); + MatcherAssert.assertThat(runtimeException.getMessage(), CoreMatchers.containsString(expectedMessage)); + } + } + + @Test + public void testResolveAndAuthorizeRequestForResource() { + // given + SMPUserDetails user = new SMPUserDetails(null, null, null); + DBResource resource = testUtilsDao.getResourceD1G1RD1(); + ResourceRequest req = createResourceRequest(resource); + req.setAuthorizedDomain(testUtilsDao.getD1()); + + // when + ResolvedData result = testInstance.resolveAndAuthorizeRequest(user, req); + // then + assertNotNull(result); + assertEquals(resource, result.getResource()); + assertNull(result.getSubresource()); + } + + @Test + @Ignore + public void testResolveAndAuthorizeRequestForSubresource() { + // given + SMPUserDetails user = new SMPUserDetails(null, null, null); + + DBSubresource subresource = testUtilsDao.getSubresourceD1G1RD1_S1(); + ResourceRequest req = createResourceRequest(subresource); + req.setAuthorizedDomain(subresource.getResource().getDomainResourceDef().getDomain()); + // when + ResolvedData result = testInstance.resolveAndAuthorizeRequest(user, req); + // then + assertNotNull(result); + assertEquals(subresource.getResource(), result.getResource()); + assertEquals(subresource, result.getSubresource()); + } + + public static ResourceRequest createResourceRequest(DBResource resource) { + return new ResourceRequest(ResourceAction.READ, null, Arrays.asList(resource.getIdentifierScheme() + "::" + resource.getIdentifierValue()), null); + } + + public static ResourceRequest createResourceRequest(DBSubresource subresource) { + DBResource res = subresource.getResource(); + return new ResourceRequest(ResourceAction.READ, null, + + Arrays.asList((StringUtils.isNotBlank(res.getIdentifierScheme())? res.getIdentifierScheme()+ "::":"") + subresource.getResource().getIdentifierValue(), + subresource.getSubresourceDef().getUrlSegment(), + (StringUtils.isNotBlank(subresource.getIdentifierScheme())? subresource.getIdentifierScheme()+ "::":"") + subresource.getIdentifierValue()), + null); + } +} + diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIResourceServiceTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIResourceServiceTest.java index 946b5a0f6..e60d188ac 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIResourceServiceTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIResourceServiceTest.java @@ -18,7 +18,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.convert.ConversionService; import org.springframework.test.context.ContextConfiguration; -import java.util.Optional; import java.util.UUID; import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_SG_SCHEMA_1; @@ -44,19 +43,19 @@ public class UIResourceServiceTest extends AbstractServiceIntegrationTest { } @Test - public void testGetGroupResources() { - ServiceResult<ResourceRO> result = testInstance.getGroupResources(testUtilsDao.getGroupD1G1().getId(), -1, -1, null); + public void testGetGroupResources() { + ServiceResult<ResourceRO> result = testInstance.getGroupResources(testUtilsDao.getGroupD1G1().getId(), -1, -1, null); // one resource is expected - see the data in testUtilsDao.createResources() assertNotNull(result); assertEquals(1, result.getCount().intValue()); } @Test - public void testGetResourcesForUserAndGroup() { - ServiceResult<ResourceRO> resultAdmin = testInstance.getResourcesForUserAndGroup(testUtilsDao.getUser1().getId(), MembershipRoleType.ADMIN, + public void testGetResourcesForUserAndGroup() { + ServiceResult<ResourceRO> resultAdmin = testInstance.getResourcesForUserAndGroup(testUtilsDao.getUser1().getId(), MembershipRoleType.ADMIN, testUtilsDao.getGroupD1G1().getId(), -1, -1, null); - ServiceResult<ResourceRO> resultViewer = testInstance.getResourcesForUserAndGroup(testUtilsDao.getUser1().getId(), MembershipRoleType.VIEWER, + ServiceResult<ResourceRO> resultViewer = testInstance.getResourcesForUserAndGroup(testUtilsDao.getUser1().getId(), MembershipRoleType.VIEWER, testUtilsDao.getGroupD1G1().getId(), -1, -1, null); // see the data in testUtilsDao.createResourceMemberships() assertEquals(1, resultAdmin.getCount().intValue()); @@ -64,14 +63,14 @@ public class UIResourceServiceTest extends AbstractServiceIntegrationTest { } @Test - public void testCreateResourceForGroup(){ + public void testCreateResourceForGroup() { // given ResourceRO testResource = TestROUtils.createResource(UUID.randomUUID().toString(), TEST_SG_SCHEMA_1, testUtilsDao.getDomainResourceDefD1R1().getResourceDef().getIdentifier()); // when ResourceRO result = testInstance.createResourceForGroup(testResource, testUtilsDao.getGroupD1G1().getId(), - testUtilsDao.getD1().getId(),testUtilsDao.getUser1().getId()); + testUtilsDao.getD1().getId(), testUtilsDao.getUser1().getId()); // then assertNotNull(result); assertEquals(testResource.getIdentifierValue(), result.getIdentifierValue()); @@ -79,16 +78,16 @@ public class UIResourceServiceTest extends AbstractServiceIntegrationTest { } @Test - public void testUpdateResourceForGroup(){ + public void testUpdateResourceForGroup() { // given DBResource dbResource = testUtilsDao.getResourceD1G1RD1(); - ResourceRO testResource = TestROUtils.createResource( dbResource.getIdentifierValue(), dbResource.getIdentifierScheme(),dbResource.getDomainResourceDef().getResourceDef().getIdentifier()); + ResourceRO testResource = TestROUtils.createResource(dbResource.getIdentifierValue(), dbResource.getIdentifierScheme(), dbResource.getDomainResourceDef().getResourceDef().getIdentifier()); assertNotEquals(dbResource.getVisibility(), VisibilityType.PRIVATE); testResource.setVisibility(VisibilityType.PRIVATE); // when ResourceRO result = testInstance.updateResourceForGroup(testResource, dbResource.getId(), - testUtilsDao.getGroupD1G1().getId(),testUtilsDao.getD1().getId()); + testUtilsDao.getGroupD1G1().getId(), testUtilsDao.getD1().getId()); // then assertNotNull(result); assertEquals(testResource.getIdentifierValue(), result.getIdentifierValue()); @@ -97,26 +96,26 @@ public class UIResourceServiceTest extends AbstractServiceIntegrationTest { } @Test - public void testDeleteResourceFromGroup(){ + public void testDeleteResourceFromGroup() { // given ResourceRO testResource = TestROUtils.createResource(UUID.randomUUID().toString(), TEST_SG_SCHEMA_1, testUtilsDao.getDomainResourceDefD1R1().getResourceDef().getIdentifier()); ResourceRO result = testInstance.createResourceForGroup(testResource, testUtilsDao.getGroupD1G1().getId(), - testUtilsDao.getD1().getId(),testUtilsDao.getUser1().getId()); + testUtilsDao.getD1().getId(), testUtilsDao.getUser1().getId()); Long resourceId = new Long(result.getResourceId()); assertNotNull(resourceDao.find(resourceId)); // when - testInstance.deleteResourceFromGroup(resourceId, testUtilsDao.getGroupD1G1().getId(),testUtilsDao.getD1().getId()); + testInstance.deleteResourceFromGroup(resourceId, testUtilsDao.getGroupD1G1().getId(), testUtilsDao.getD1().getId()); // then assertNull(resourceDao.find(resourceId)); } @Test - public void testGetResourceMembers(){ + public void testGetResourceMembers() { // given // see the data in testUtilsDao.createResourceMemberships() // when - ServiceResult<MemberRO> resourceMembers = testInstance.getResourceMembers(testUtilsDao.getResourceD1G1RD1().getId(), testUtilsDao.getGroupD1G1().getId(),-1,-1, null); + ServiceResult<MemberRO> resourceMembers = testInstance.getResourceMembers(testUtilsDao.getResourceD1G1RD1().getId(), testUtilsDao.getGroupD1G1().getId(), -1, -1, null); // then assertNotNull(resourceMembers); assertEquals(1, resourceMembers.getCount().intValue()); @@ -124,7 +123,7 @@ public class UIResourceServiceTest extends AbstractServiceIntegrationTest { } @Test - public void testAddUpdateMemberToResourceUpdate(){ + public void testAddUpdateMemberToResourceUpdate() { // given // see the data in testUtilsDao.createResourceMemberships() DBResourceMember resourceMember = testUtilsDao.getResourceMemberU1R1_D2G1RD1_Admin(); @@ -139,9 +138,9 @@ public class UIResourceServiceTest extends AbstractServiceIntegrationTest { } @Test - public void testAddUpdateMemberToResourceUAdd(){ + public void testAddUpdateMemberToResourceUAdd() { // given - int memberCount = testInstance.getResourceMembers(testUtilsDao.getResourceD1G1RD1().getId(), testUtilsDao.getGroupD1G1().getId(),-1,-1, null).getCount().intValue(); + int memberCount = testInstance.getResourceMembers(testUtilsDao.getResourceD1G1RD1().getId(), testUtilsDao.getGroupD1G1().getId(), -1, -1, null).getCount().intValue(); DBResourceMember dbMember = new DBResourceMember(); dbMember.setRole(MembershipRoleType.VIEWER); dbMember.setUser(testUtilsDao.getUser2()); @@ -151,7 +150,7 @@ public class UIResourceServiceTest extends AbstractServiceIntegrationTest { // when testInstance.addUpdateMemberToResource(testUtilsDao.getResourceD1G1RD1().getId(), testUtilsDao.getGroupD1G1().getId(), member, null); // then - ServiceResult<MemberRO> resourceMembers = testInstance.getResourceMembers(testUtilsDao.getResourceD1G1RD1().getId(), testUtilsDao.getGroupD1G1().getId(),-1,-1, null); - assertEquals(memberCount+1, resourceMembers.getCount().intValue()); + ServiceResult<MemberRO> resourceMembers = testInstance.getResourceMembers(testUtilsDao.getResourceD1G1RD1().getId(), testUtilsDao.getGroupD1G1().getId(), -1, -1, null); + assertEquals(memberCount + 1, resourceMembers.getCount().intValue()); } } -- GitLab