diff --git a/smp-resource-extensions/oasis-cppa3-spi/src/test/java/eu/europa/ec/smp/spi/utils/DatatypeConverterTest.java b/smp-resource-extensions/oasis-cppa3-spi/src/test/java/eu/europa/ec/smp/spi/utils/DatatypeConverterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..476d3f9c9e35b26bfddeb3b4f1930ccf35f968d5 --- /dev/null +++ b/smp-resource-extensions/oasis-cppa3-spi/src/test/java/eu/europa/ec/smp/spi/utils/DatatypeConverterTest.java @@ -0,0 +1,47 @@ +package eu.europa.ec.smp.spi.utils; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import java.time.OffsetDateTime; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +class DatatypeConverterTest { + + @ParameterizedTest + @CsvSource({"2020,1,1,10,0,1, 2020-01-01T10:00:00.000+01:00", + "2020,1,1,10,0,-1, 2020-01-01T10:00:00.000-01:00", + "2020,2,1,10,0,1, 2020-02-01T10:00:00.000+01:00", + "2020,1,2,10,0,1, 2020-01-02T10:00:00.000+01:00", + "2020,1,1,12,0,1, 2020-01-01T12:00:00.000+01:00", + "2020,1,1,10,1,1, 2020-01-01T10:01:00.000+01:00", + "2020,1,1,10,1,1, 2020-01-01T10:01:00+01:00", + "2020,1,1,10,1,1, 2020-01-01T10:01+01:00", + "2020,1,1,10,0,0, 2020-01-01T10:00:00Z"}) + void parseDateTime(int year, int mont, int day, int hour, int minutes, int offset, String value) { + OffsetDateTime dateTime = DatatypeConverter.parseDateTime(value); + assertNotNull(dateTime); + assertEquals(year, dateTime.getYear()); + assertEquals(mont, dateTime.getMonthValue()); + assertEquals(day, dateTime.getDayOfMonth()); + assertEquals(hour, dateTime.getHour()); + assertEquals(minutes, dateTime.getMinute()); + assertEquals(offset, dateTime.getOffset().getTotalSeconds() / 3600); + } + + @Test + void printDateTime() { + + String value = DatatypeConverter.printDateTime(OffsetDateTime.now()); + assertNotNull(value); + } + + @Test + void printDate() { + String value = DatatypeConverter.printDate(OffsetDateTime.now()); + assertNotNull(value); + } +} diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ErrorRO.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ErrorRO.java deleted file mode 100644 index 52c96ce9d501a153b5bf8a34560e05873a0274ea..0000000000000000000000000000000000000000 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ErrorRO.java +++ /dev/null @@ -1,39 +0,0 @@ -package eu.europa.ec.edelivery.smp.data.ui; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.json.JsonMapper; - -import java.io.Serializable; - -/** - * @author Sebastian-Ion TINCU - * @since 4.0.1 - */ -public class ErrorRO implements Serializable { - - protected String message; - - public ErrorRO(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - @JsonIgnore - public int getContentLength() { - try { - return JsonMapper.builder() - .findAndAddModules() - .build().writeValueAsString(this).length(); - } catch (JsonProcessingException e) { - return -1; - } - } -} diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/auth/SMPCertificateAuthenticationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/auth/SMPCertificateAuthenticationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ec4bd1f72b47497a9dbbf854fb895a8bbea3671d --- /dev/null +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/auth/SMPCertificateAuthenticationTest.java @@ -0,0 +1,92 @@ +package eu.europa.ec.edelivery.smp.auth; + +import eu.europa.ec.edelivery.security.PreAuthenticatedCertificatePrincipal; +import eu.europa.ec.edelivery.smp.data.model.user.DBUser; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.springframework.security.core.GrantedAuthority; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class SMPCertificateAuthenticationTest { + + PreAuthenticatedCertificatePrincipal mockPrincipal = Mockito.mock(PreAuthenticatedCertificatePrincipal.class); + List<GrantedAuthority> mockListAuthorities = Collections.singletonList(Mockito.mock(GrantedAuthority.class)); + DBUser mockUser = Mockito.mock(DBUser.class); + SMPCertificateAuthentication testInstance = new SMPCertificateAuthentication(mockPrincipal, mockListAuthorities, mockUser); + @Test + void testGetAuthorities() { + + Collection<? extends GrantedAuthority> result = testInstance.getAuthorities(); + + assertNotNull(result); + assertEquals(mockListAuthorities, result); + + } + + @Test + void testGetCredentials() { + String credential = "mockCredentials"; + Mockito.when(mockPrincipal.getCredentials()).thenReturn(credential); + Object result = testInstance.getCredentials(); + + assertNotNull(result); + assertEquals(credential, result); + } + + @Test + void testGetDetails() { + Object result = testInstance.getDetails(); + + assertNotNull(result); + assertEquals(mockPrincipal, result); + } + + @Test + void testGetPrincipal() { + Object result = testInstance.getPrincipal(); + + assertNotNull(result); + assertEquals(mockPrincipal, result); + } + + @Test + void isAuthenticated() { + boolean result = testInstance.isAuthenticated(); + + assertFalse(result); + } + + @Test + void testSetAuthenticated() { + boolean b = true; + testInstance.setAuthenticated(b); + + assertTrue(testInstance.isAuthenticated()); + } + + @Test + void testGetName() { + String mockname = "mockName"; + Mockito.when(mockPrincipal.getName(Mockito.anyInt())).thenReturn(mockname); + + String result = testInstance.getName(); + + assertNotNull(result); + assertEquals(mockname, result); + } + + @Test + void testToString() { + String mockname = "mockName"; + Mockito.when(mockPrincipal.getName(Mockito.anyInt())).thenReturn(mockname); + String result = testInstance.toString(); + + assertNotNull(result); + assertEquals(mockname, result); + } +} diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/servlet/ResourceResponseTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/servlet/ResourceResponseTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f5ab899f6e76052d101b526f6b2bae31a503bb4a --- /dev/null +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/servlet/ResourceResponseTest.java @@ -0,0 +1,76 @@ +package eu.europa.ec.edelivery.smp.servlet; + +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import javax.servlet.http.HttpServletResponse; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.*; + +class ResourceResponseTest { + + HttpServletResponse mockHttpServletResponse = Mockito.mock(HttpServletResponse.class); + ResourceResponse testInstance = new ResourceResponse(mockHttpServletResponse); + + @Test + void testGetHttpStatus() { + int httpStatus = 200; + Mockito.when(mockHttpServletResponse.getStatus()).thenReturn(httpStatus); + int result = testInstance.getHttpStatus(); + + assertEquals(httpStatus, result); + } + + @Test + void testSetHttpStatus() { + int httpStatus = 200; + testInstance.setHttpStatus(httpStatus); + + Mockito.verify(mockHttpServletResponse).setStatus(httpStatus); + } + + @Test + void testGetMimeType() { + String mimeType = "mockMimeType"; + Mockito.when(mockHttpServletResponse.getContentType()).thenReturn(mimeType); + String result = testInstance.getMimeType(); + + assertEquals(mimeType, result); + } + + @Test + void testSetContentType() { + String mimeType = "mockMimeType"; + testInstance.setContentType(mimeType); + + Mockito.verify(mockHttpServletResponse).setContentType(mimeType); + } + + @Test + void testGetHttpHeader() { + String name = "mockName"; + String value = "mockValue"; + Mockito.when(mockHttpServletResponse.getHeader(name)).thenReturn(value); + String result = testInstance.getHttpHeader(name); + + assertEquals(value, result); + } + + @Test + void testSetHttpHeader() { + String name = "mockName"; + String value = "mockValue"; + testInstance.setHttpHeader(name, value); + + Mockito.verify(mockHttpServletResponse).setHeader(name, value); + } + + @Test + void testGetOutputStream() throws IOException { + testInstance.getOutputStream(); + + Mockito.verify(mockHttpServletResponse).getOutputStream(); + } +} diff --git a/smp-webapp/pom.xml b/smp-webapp/pom.xml index d6446e72deae32f068133e6bad87a97d75856b42..8aa32d9aa4a3505b5ec7e41407012def98072ded 100644 --- a/smp-webapp/pom.xml +++ b/smp-webapp/pom.xml @@ -167,9 +167,28 @@ <artifactId>maven-surefire-plugin</artifactId> <configuration> <runOrder>alphabetical</runOrder> + <excludes> + <exclude>**/*IntegrationTest.java</exclude> + </excludes> + </configuration> + </plugin> + <plugin> + <artifactId>maven-failsafe-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>integration-test</goal> + <goal>verify</goal> + </goals> + </execution> + </executions> + <configuration> + <includes> + <include>**/*IntegrationTest.java</include> + </includes> </configuration> - </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/MockMvcUtils.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/MockMvcUtils.java index ba656f46869f82eb8116cfda0baed4039bee4e04..5bbc6af0f956f362d176eed9eb86c62dd350944d 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/MockMvcUtils.java +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/MockMvcUtils.java @@ -8,7 +8,6 @@ import eu.europa.ec.edelivery.smp.data.ui.DomainRO; import eu.europa.ec.edelivery.smp.data.ui.GroupRO; import eu.europa.ec.edelivery.smp.data.ui.SearchUserRO; import eu.europa.ec.edelivery.smp.data.ui.UserRO; -import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpHeaders; @@ -30,7 +29,6 @@ import java.util.List; import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.*; import static org.junit.Assert.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; @@ -44,11 +42,11 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. * @since 4.2 */ public class MockMvcUtils { - public static Logger LOG = LoggerFactory.getLogger(MockMvcUtils.class); + public static Logger LOG = LoggerFactory.getLogger(MockMvcUtils.class); static ObjectMapper mapper = JsonMapper.builder() .findAndAddModules() .build(); - + // The values match the values in the test data in webapp_integration_test_data.sql public static final String SYS_ADMIN_USERNAME = "sys_admin"; public static final String SYS_ADMIN_PASSWD = "test123"; public static final String SMP_ADMIN_USERNAME = "smp_admin"; @@ -61,6 +59,8 @@ public class MockMvcUtils { public static final String MOCK_LOGGED_USER = "mock_logged_user"; + public static final String RESOURCE_001_IDENTIFIER_VALUE = "urn:australia:ncpb"; + public static RequestPostProcessor getHttpBasicSystemAdminCredentials() { return httpBasic(SYS_ADMIN_USERNAME, SYS_ADMIN_PASSWD); } @@ -120,11 +120,11 @@ public class MockMvcUtils { .andReturn(); // assert successful login byte[] asByteArray = result.getResponse().getContentAsByteArray(); - System.out.println("User logged with data: "+ new String(asByteArray)); + System.out.println("User logged with data: " + new String(asByteArray)); UserRO userRO = mapper.readValue(asByteArray, UserRO.class); assertNotNull(userRO); - MockHttpSession session = (MockHttpSession)result.getRequest().getSession(); + MockHttpSession session = (MockHttpSession) result.getRequest().getSession(); session.setAttribute(MOCK_LOGGED_USER, userRO); return session; } @@ -166,7 +166,7 @@ public class MockMvcUtils { .andExpect(status().isOk()).andReturn(); //then - return getArrayFromResponse(result, GroupRO.class); + return getArrayFromResponse(result, GroupRO.class); } public static List<SearchUserRO> geUsersByUsernameFilter(MockMvc mvc, MockHttpSession session, UserRO userRO, String username) throws Exception { @@ -180,8 +180,6 @@ public class MockMvcUtils { } - - public static <T> T getObjectFromResponse(MvcResult result, Class<T> clazz) throws IOException { return mapper.readValue(result.getResponse().getContentAsByteArray(), clazz); diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/TestROUtils.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/TestROUtils.java index 6665f2a660bef81f544376badb4c261ffccb3b8d..61e5a91953b4d11e42fcd9205af9b7aa62e3a754 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/TestROUtils.java +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/TestROUtils.java @@ -23,4 +23,13 @@ public class TestROUtils { public static String anyString() { return UUID.randomUUID().toString(); } + + + public static String createSMP10ServiceGroupPayload(String id, String sch) { + + return "<ServiceGroup xmlns=\"http://docs.oasis-open.org/bdxr/ns/SMP/2016/05\">" + + "<ParticipantIdentifier scheme=\"" + sch + "\">" + id + "</ParticipantIdentifier>" + + "<ServiceMetadataReferenceCollection />" + + "</ServiceGroup>"; + } } diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/AbstractControllerTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/AbstractControllerTest.java index 9a4a27a846e8c7399dcb780829072115e219aba6..c18993834ee04da04a55e7a2f1cd7cb284cdf6a2 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/AbstractControllerTest.java +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/AbstractControllerTest.java @@ -3,22 +3,39 @@ package eu.europa.ec.edelivery.smp.ui; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import eu.europa.ec.edelivery.smp.data.dao.ConfigurationDao; +import eu.europa.ec.edelivery.smp.data.enums.MembershipRoleType; +import eu.europa.ec.edelivery.smp.data.enums.VisibilityType; +import eu.europa.ec.edelivery.smp.data.ui.*; import eu.europa.ec.edelivery.smp.test.SmpTestWebAppConfig; import eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils; +import eu.europa.ec.edelivery.smp.test.testutils.TestROUtils; import eu.europa.ec.edelivery.smp.test.testutils.X509CertificateTestUtils; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockHttpSession; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.MvcResult; import org.springframework.web.context.WebApplicationContext; import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; +import static eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils.getObjectFromResponse; +import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.*; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @ExtendWith(SpringExtension.class) @WebAppConfiguration @@ -43,6 +60,11 @@ abstract public class AbstractControllerTest { configurationDao.reloadPropertiesFromDatabase(); } + /** + * Helper method for getting the ObjectMapper. + * + * @return ObjectMapper + */ public ObjectMapper getObjectMapper() { if (mapper == null) { mapper = new ObjectMapper(); @@ -50,4 +72,154 @@ abstract public class AbstractControllerTest { } return mapper; } + + /** + * Test helper method for Adding a new member with viewer role to a domain. + * + * @param session MockHttpSession of the user that is adding the new member + * @param domainRO Domain to which the new member is added + * @param domainAdminUser User that is adding the new member + * @param newMemberUsername Username of the new member + * @return MemberRO of the new member + * @throws Exception + */ + public MemberRO addDomainMember(MockHttpSession session, DomainRO domainRO, UserRO domainAdminUser, String newMemberUsername) throws Exception { + String pathTemplate = CONTEXT_PATH_EDIT_DOMAIN + '/' + SUB_CONTEXT_PATH_EDIT_DOMAIN_MEMBER_PUT; + return addMember(session, newMemberUsername, MembershipRoleType.VIEWER, pathTemplate, + domainAdminUser.getUserId(), domainRO.getDomainId()); + } + + /** + * Test helper method for Adding a new member with viewer role to a group. + * + * @param session MockHttpSession of the user that is adding the new member + * @param domainRO Domain to which the new member is added + * @param groupRO Group to which the new member is added + * @param domainAdminUser User that is adding the new member + * @param newMemberUsername Username of the new member + * @return MemberRO of the new member + * @throws Exception + **/ + public MemberRO addGroupMember(MockHttpSession session, DomainRO domainRO, GroupRO groupRO, UserRO domainAdminUser, String newMemberUsername) throws Exception { + String pathTemplate = CONTEXT_PATH_EDIT_GROUP + '/' + SUB_CONTEXT_PATH_EDIT_GROUP_MEMBER_PUT; + return addMember(session, newMemberUsername, MembershipRoleType.VIEWER, pathTemplate, + domainAdminUser.getUserId(), domainRO.getDomainId(), groupRO.getGroupId()); + } + + /** + * Test helper method for Adding a new member with viewer role to a resourse. + * + * @param session MockHttpSession of the user that is adding the new member + * @param domainRO Domain to which the new member is added + * @param groupRO Group to which the new member is added + * @param resourceRO Resource to which the new member is added + * @param domainAdminUser User that is adding the new member + * @param newMemberUsername Username of the new member + * @return MemberRO of the new member + * @throws Exception + **/ + public MemberRO addResourceMember(MockHttpSession session, DomainRO domainRO, GroupRO groupRO, ResourceRO resourceRO, UserRO domainAdminUser, String newMemberUsername) throws Exception { + String pathTemplate = CONTEXT_PATH_EDIT_RESOURCE + '/' + SUB_CONTEXT_PATH_EDIT_RESOURCE_MEMBER_PUT; + return addMember(session, newMemberUsername, MembershipRoleType.VIEWER, pathTemplate, + domainAdminUser.getUserId(), domainRO.getDomainId(), groupRO.getGroupId(), resourceRO.getResourceId()); + } + + /** + * Generic Test helper method for Adding a new member with given role to a resource/group/domain. + * + * @param session MockHttpSession of the user that is adding the new member + * @param newMemberUsername Username of the new member + * @param roleType Role of the new member + * @param urlTemplate URL template of the resource/group/domain to which the new member is added + * @param encPathIds Encoded path ids of the adminUserID, domain id, group id resource id, ... + * @return MemberRO of the new member + * @throws Exception + */ + public MemberRO addMember(MockHttpSession session, String newMemberUsername, MembershipRoleType roleType, String urlTemplate, String... encPathIds) throws Exception { + + MemberRO memberToAdd = new MemberRO(); + memberToAdd.setRoleType(roleType); + memberToAdd.setUsername(newMemberUsername); + + // when + MvcResult result = mvc.perform(put(urlTemplate, encPathIds) + .session(session) + .with(csrf()) + .contentType(MediaType.APPLICATION_JSON) + .content(getObjectMapper().writeValueAsBytes(memberToAdd))) + .andExpect(status().isOk()).andReturn(); + + //then + return getObjectFromResponse(result, MemberRO.class); + } + + /** + * Test helper method for creating and adding new resource to group. + * + * @param session MockHttpSession of the user that is adding the new resource + * @param domainRO Domain to which the new member is added + * @param groupRO Group to which the new member is added + * @param domainAdminUser User that is adding the new member + * @return ResourceRO return created resource + * @throws Exception + **/ + public ResourceRO addResourceToGroup(MockHttpSession session, DomainRO domainRO, GroupRO groupRO, UserRO domainAdminUser) throws Exception { + // create resource + ResourceRO resource = new ResourceRO(); + resource.setResourceTypeIdentifier("edelivery-oasis-smp-1.0-servicegroup"); + resource.setIdentifierValue(UUID.randomUUID().toString()); + resource.setIdentifierScheme("test-test-test"); + resource.setVisibility(VisibilityType.PUBLIC); + // add it to the group + MvcResult result = mvc.perform(put(CONTEXT_PATH_EDIT_RESOURCE + '/' + SUB_CONTEXT_PATH_EDIT_RESOURCE_CREATE, + domainAdminUser.getUserId(), domainRO.getDomainId(), groupRO.getGroupId()) + .session(session) + .with(csrf()) + .contentType(MediaType.APPLICATION_JSON) + .content(getObjectMapper().writeValueAsBytes(resource))) + .andExpect(status().isOk()).andReturn(); + + + return getObjectFromResponse(result, ResourceRO.class); + } + + /** + * Test helper method for Adding a new group to a domain. + * + * @param session + * @param domainRO + * @param domainAdminUser + * @return + * @throws Exception + */ + public GroupRO addGroupToDomain(MockHttpSession session, DomainRO domainRO, UserRO domainAdminUser) throws Exception { + GroupRO groupRO = TestROUtils.createGroup(); + MvcResult addGroupResult = mvc.perform(put(CONTEXT_PATH_EDIT_GROUP + '/' + SUB_CONTEXT_PATH_EDIT_GROUP_CREATE, + domainAdminUser.getUserId(), domainRO.getDomainId()) + .session(session) + .with(csrf()) + .contentType(MediaType.APPLICATION_JSON) + .content(getObjectMapper().writeValueAsBytes(groupRO))) + .andExpect(status().isOk()).andReturn(); + return getObjectFromResponse(addGroupResult, GroupRO.class); + } + + public List<ResourceRO> getEditResourcesForGroup(MockHttpSession session, UserRO userRO, DomainRO domainRO, GroupRO groupRO, String filter, String roleType) + throws Exception { + + MvcResult result = mvc.perform(get(CONTEXT_PATH_EDIT_RESOURCE, userRO.getUserId(), domainRO.getDomainId(), groupRO.getGroupId()) + .session(session) + .param(PARAM_PAGINATION_FILTER, filter) + .param(PARAM_NAME_TYPE, roleType) + .with(csrf())) + .andExpect(status().isOk()).andReturn(); + + //then + ServiceResult serviceResult = getObjectFromResponse(result, ServiceResult.class); + if (serviceResult == null || serviceResult.getServiceEntities().isEmpty()) { + return Collections.emptyList(); + } + return (List<ResourceRO>) serviceResult.getServiceEntities().stream().map(o -> getObjectMapper().convertValue(o, ResourceRO.class)) + .collect(Collectors.toList()); + } } diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/DocumentEditControllerIntegrationTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/DocumentEditControllerIntegrationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..292face0b48e4d5ee2570f0acff076d85ae4b39e --- /dev/null +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/DocumentEditControllerIntegrationTest.java @@ -0,0 +1,192 @@ +package eu.europa.ec.edelivery.smp.ui.edit; + +import eu.europa.ec.edelivery.smp.data.ui.*; +import eu.europa.ec.edelivery.smp.data.ui.exceptions.ErrorResponseRO; +import eu.europa.ec.edelivery.smp.exceptions.ErrorBusinessCode; +import eu.europa.ec.edelivery.smp.services.ui.UIDocumentService; +import eu.europa.ec.edelivery.smp.test.testutils.TestROUtils; +import eu.europa.ec.edelivery.smp.ui.AbstractControllerTest; +import org.hamcrest.MatcherAssert; +import org.hamcrest.Matchers; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockHttpSession; +import org.springframework.test.web.servlet.MvcResult; + +import java.io.IOException; +import java.util.List; + +import static eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils.*; +import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +class DocumentEditControllerIntegrationTest extends AbstractControllerTest { + private static final String PATH = CONTEXT_PATH_EDIT_DOCUMENT; + + @Autowired + protected UIDocumentService documentService; + + @BeforeEach + public void setup() throws IOException { + super.setup(); + } + + @Test + public void testGetDocumentForNewResource() throws Exception { + // given when + MockHttpSession session = loginWithSystemAdmin(mvc); + UserRO userRO = getLoggedUserData(mvc, session); + List<DomainRO> domainsForUser = geUserDomainsForRole(mvc, session, userRO, null); + assertEquals(1, domainsForUser.size()); + DomainRO domainRO = domainsForUser.get(0); + List<GroupRO> groupsForUser = geUserGroups(mvc, session, userRO, domainRO, null); + assertFalse(groupsForUser.isEmpty()); // set the webapp_integration_test_data.sql file + GroupRO groupRO = groupsForUser.get(0); + // add new resource + ResourceRO resourceRO = addResourceToGroup(session, domainRO, groupRO, userRO); + + // when + MvcResult result = mvc.perform(get(PATH + '/' + SUB_CONTEXT_PATH_EDIT_DOCUMENT_GET, + userRO.getUserId(), resourceRO.getResourceId()) + .session(session) + .with(csrf()) + ) + .andExpect(status().isOk()).andReturn(); + // then + DocumentRo documentRo = getObjectFromResponse(result, DocumentRo.class); + assertNotNull(documentRo); + assertTrue(documentRo.getAllVersions().isEmpty()); // was just created without document + } + + @Test + public void testGetDocumentForResource() throws Exception { + // given when + MockHttpSession session = loginWithSystemAdmin(mvc); + UserRO userRO = getLoggedUserData(mvc, session); + List<DomainRO> domainsForUser = geUserDomainsForRole(mvc, session, userRO, null); + assertEquals(1, domainsForUser.size()); + DomainRO domainRO = domainsForUser.get(0); + List<GroupRO> groupsForUser = geUserGroups(mvc, session, userRO, domainRO, null); + assertFalse(groupsForUser.isEmpty()); // set the webapp_integration_test_data.sql file + GroupRO groupRO = groupsForUser.get(0); + + List<ResourceRO> resources = getEditResourcesForGroup(session, userRO, domainRO, groupRO, RESOURCE_001_IDENTIFIER_VALUE, null); + assertEquals(1, resources.size()); + ResourceRO resourceRO = resources.get(0); + + // when + MvcResult result = mvc.perform(get(PATH + '/' + SUB_CONTEXT_PATH_EDIT_DOCUMENT_GET, + userRO.getUserId(), resourceRO.getResourceId()) + .session(session) + .with(csrf()) + ) + .andExpect(status().isOk()).andReturn(); + // then + DocumentRo documentRo = getObjectFromResponse(result, DocumentRo.class); + assertNotNull(documentRo); + assertFalse(documentRo.getAllVersions().isEmpty()); // was just created without document + assertNotNull(documentRo.getPayload()); + } + + @Test + public void testValidateDocumentOk() throws Exception { + // given when + MockHttpSession session = loginWithSystemAdmin(mvc); + UserRO userRO = getLoggedUserData(mvc, session); + List<DomainRO> domainsForUser = geUserDomainsForRole(mvc, session, userRO, null); + assertEquals(1, domainsForUser.size()); + DomainRO domainRO = domainsForUser.get(0); + List<GroupRO> groupsForUser = geUserGroups(mvc, session, userRO, domainRO, null); + assertFalse(groupsForUser.isEmpty()); // set the webapp_integration_test_data.sql file + GroupRO groupRO = groupsForUser.get(0); + + List<ResourceRO> resources = getEditResourcesForGroup(session, userRO, domainRO, groupRO, RESOURCE_001_IDENTIFIER_VALUE, null); + assertEquals(1, resources.size()); + ResourceRO resourceRO = resources.get(0); + + // document to validate + DocumentRo documentRo = new DocumentRo(); + documentRo.setPayload(TestROUtils.createSMP10ServiceGroupPayload(resourceRO.getIdentifierValue(), resourceRO.getIdentifierScheme())); + + // when + mvc.perform(post(PATH + '/' + SUB_CONTEXT_PATH_EDIT_DOCUMENT_VALIDATE, + userRO.getUserId(), resourceRO.getResourceId()) + .contentType(MediaType.APPLICATION_JSON) + .content(getObjectMapper().writeValueAsBytes(documentRo)) + .session(session) + .with(csrf()) + ) + .andExpect(status().isOk()).andReturn(); + } + + @Test + public void testValidateDocumentInvalid() throws Exception { + // given when + MockHttpSession session = loginWithSystemAdmin(mvc); + UserRO userRO = getLoggedUserData(mvc, session); + List<DomainRO> domainsForUser = geUserDomainsForRole(mvc, session, userRO, null); + assertEquals(1, domainsForUser.size()); + DomainRO domainRO = domainsForUser.get(0); + List<GroupRO> groupsForUser = geUserGroups(mvc, session, userRO, domainRO, null); + assertFalse(groupsForUser.isEmpty()); // set the webapp_integration_test_data.sql file + GroupRO groupRO = groupsForUser.get(0); + + List<ResourceRO> resources = getEditResourcesForGroup(session, userRO, domainRO, groupRO, RESOURCE_001_IDENTIFIER_VALUE, null); + assertEquals(1, resources.size()); + ResourceRO resourceRO = resources.get(0); + + // document to validate + DocumentRo documentRo = new DocumentRo(); + documentRo.setPayload("invalid payload"); + + // when + MvcResult result = mvc.perform(post(PATH + '/' + SUB_CONTEXT_PATH_EDIT_DOCUMENT_VALIDATE, + userRO.getUserId(), resourceRO.getResourceId()) + .contentType(MediaType.APPLICATION_JSON) + .content(getObjectMapper().writeValueAsBytes(documentRo)) + .session(session) + .with(csrf()) + ) + .andExpect(status().is4xxClientError()).andReturn(); + + ErrorResponseRO errorRO = getObjectFromResponse(result, ErrorResponseRO.class); + assertNotNull(errorRO); + assertEquals(ErrorBusinessCode.TECHNICAL.name(), errorRO.getBusinessCode()); + MatcherAssert.assertThat(errorRO.getErrorDescription(), Matchers.containsString("Invalid request [ResourceValidation]")); + } + + @Test + public void testGenerateDocument() throws Exception { + // given when + MockHttpSession session = loginWithSystemAdmin(mvc); + UserRO userRO = getLoggedUserData(mvc, session); + List<DomainRO> domainsForUser = geUserDomainsForRole(mvc, session, userRO, null); + assertEquals(1, domainsForUser.size()); + DomainRO domainRO = domainsForUser.get(0); + List<GroupRO> groupsForUser = geUserGroups(mvc, session, userRO, domainRO, null); + assertFalse(groupsForUser.isEmpty()); // set the webapp_integration_test_data.sql file + GroupRO groupRO = groupsForUser.get(0); + + List<ResourceRO> resources = getEditResourcesForGroup(session, userRO, domainRO, groupRO, RESOURCE_001_IDENTIFIER_VALUE, null); + assertEquals(1, resources.size()); + ResourceRO resourceRO = resources.get(0); + + // when + MvcResult response = mvc.perform(post(PATH + '/' + SUB_CONTEXT_PATH_EDIT_DOCUMENT_GENERATE, + userRO.getUserId(), resourceRO.getResourceId()) + .session(session) + .with(csrf()) + ) + .andExpect(status().isOk()).andReturn(); + + DocumentRo result = getObjectFromResponse(response, DocumentRo.class); + assertNotNull(result); + assertNotNull(result.getPayload()); + } +} diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditControllerIntegrationTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditControllerIntegrationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..878d899234502ed9fc26b052fed18ff2b5fbf64f --- /dev/null +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditControllerIntegrationTest.java @@ -0,0 +1,160 @@ +package eu.europa.ec.edelivery.smp.ui.edit; + +import eu.europa.ec.edelivery.smp.data.enums.MembershipRoleType; +import eu.europa.ec.edelivery.smp.data.ui.DomainRO; +import eu.europa.ec.edelivery.smp.data.ui.MemberRO; +import eu.europa.ec.edelivery.smp.data.ui.ServiceResult; +import eu.europa.ec.edelivery.smp.data.ui.UserRO; +import eu.europa.ec.edelivery.smp.services.ui.UIGroupPublicService; +import eu.europa.ec.edelivery.smp.ui.AbstractControllerTest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockHttpSession; +import org.springframework.test.web.servlet.MvcResult; + +import java.io.IOException; +import java.util.List; + +import static eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils.*; +import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + + +public class DomainEditControllerIntegrationTest extends AbstractControllerTest { + private static final String PATH = CONTEXT_PATH_EDIT_DOMAIN; + + @Autowired + protected UIGroupPublicService uiGroupPublicService; + + @BeforeEach + public void setup() throws IOException { + super.setup(); + } + + @ParameterizedTest + @CsvSource({ + ", 1", + "'', 1", + "domain-admin, 1", + "group-admin, 1", + "resource-admin, 1", + }) + public void testGetDomains(String roleType, int values) throws Exception { + // given when + MockHttpSession session = loginWithSystemAdmin(mvc); + UserRO userRO = getLoggedUserData(mvc, session); + List<DomainRO> domainsForUser = geUserDomainsForRole(mvc, session, userRO, null); + assertEquals(1, domainsForUser.size()); + DomainRO domainRO = domainsForUser.get(0); + // when + MvcResult result = mvc.perform(get(PATH, userRO.getUserId(), domainRO.getDomainId()) + .session(session) + .param(PARAM_NAME_TYPE, roleType) + .with(csrf())) + .andExpect(status().isOk()).andReturn(); + + //then + List<DomainRO> listDomains = getArrayFromResponse(result, DomainRO.class); + assertNotNull(listDomains); + assertEquals(values, listDomains.size()); + } + + + @Test + public void testGetDomainMembers() throws Exception { + // given + MockHttpSession session = loginWithSystemAdmin(mvc); + UserRO userRO = getLoggedUserData(mvc, session); + List<DomainRO> domainsForUser = geUserDomainsForRole(mvc, session, userRO, null); + assertEquals(1, domainsForUser.size()); + DomainRO domainRO = domainsForUser.get(0); + + // when + MvcResult result = mvc.perform(get(PATH + '/' + SUB_CONTEXT_PATH_EDIT_DOMAIN_MEMBER, userRO.getUserId(), domainRO.getDomainId()) + .session(session) + .with(csrf())) + .andExpect(status().isOk()).andReturn(); + + //then + ServiceResult serviceResult = getObjectFromResponse(result, ServiceResult.class); + assertNotNull(serviceResult); + assertEquals(1, serviceResult.getServiceEntities().size()); + MemberRO memberRO = getObjectMapper().convertValue(serviceResult.getServiceEntities().get(0), MemberRO.class); + + // the admin user who created group is automatically added as member + assertEquals(userRO.getUsername(), memberRO.getUsername()); + } + + @Test + public void testAddDomainMember() throws Exception { + // given + MockHttpSession session = loginWithSystemAdmin(mvc); + UserRO userRO = getLoggedUserData(mvc, session); + List<DomainRO> domainsForUser = geUserDomainsForRole(mvc, session, userRO, null); + assertEquals(1, domainsForUser.size()); + DomainRO domainRO = domainsForUser.get(0); + + //when + MemberRO response = addDomainMember(session, domainRO, userRO, SG_USER_USERNAME); + // then + assertNotNull(response); + assertEquals(SG_USER_USERNAME, response.getUsername()); + } + + @Test + public void testDeleteDomainMember() throws Exception { + // given + MockHttpSession session = loginWithSystemAdmin(mvc); + UserRO userRO = getLoggedUserData(mvc, session); + List<DomainRO> domainsForUser = geUserDomainsForRole(mvc, session, userRO, null); + assertEquals(1, domainsForUser.size()); + DomainRO domainRO = domainsForUser.get(0); + + MemberRO member = addDomainMember(session, domainRO, userRO, SG_USER_USERNAME); + + MvcResult deleteGroupMemberResult = mvc.perform(delete(PATH + '/' + SUB_CONTEXT_PATH_EDIT_DOMAIN_MEMBER_DELETE, userRO.getUserId(), domainRO.getDomainId(), member.getMemberId()) + .session(session) + .with(csrf())) + .andExpect(status().isOk()).andReturn(); + + //then + MemberRO response = getObjectFromResponse(deleteGroupMemberResult, MemberRO.class); + assertNotNull(response); + assertEquals(SG_USER_USERNAME, response.getUsername()); + } + + @Test + public void testUpdateDomainMember() throws Exception { + // given + MockHttpSession session = loginWithSystemAdmin(mvc); + UserRO userRO = getLoggedUserData(mvc, session); + List<DomainRO> domainsForUser = geUserDomainsForRole(mvc, session, userRO, null); + assertEquals(1, domainsForUser.size()); + DomainRO domainRO = domainsForUser.get(0); + MemberRO member = addDomainMember(session, domainRO, userRO, SG_USER_USERNAME); + assertEquals(MembershipRoleType.VIEWER, member.getRoleType()); + member.setRoleType(MembershipRoleType.ADMIN); + + + MvcResult deleteGroupMemberResult = mvc.perform(put(PATH + '/' + SUB_CONTEXT_PATH_EDIT_DOMAIN_MEMBER_PUT, userRO.getUserId(), domainRO.getDomainId(), member.getMemberId()) + .session(session) + .with(csrf()) + .contentType(MediaType.APPLICATION_JSON) + .content(getObjectMapper().writeValueAsBytes(member))) + .andExpect(status().isOk()).andReturn(); + + //then + MemberRO response = getObjectFromResponse(deleteGroupMemberResult, MemberRO.class); + assertNotNull(response); + assertEquals(SG_USER_USERNAME, response.getUsername()); + assertEquals(member.getRoleType(), response.getRoleType()); + } +} diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditControllerTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditControllerTest.java index 13a87b6b24de520bbf1b50e02da8336af9d920af..6e63dcd6c38c65b47ed30aa3f4ba2c7f9a2091b1 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditControllerTest.java +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditControllerTest.java @@ -45,7 +45,7 @@ public class DomainEditControllerTest extends AbstractControllerTest { "'', 1", "domain-admin, 1", "group-admin, 1", - "resource-admin, 0", + "resource-admin, 1", }) public void testGetDomains(String roleType, int values) throws Exception { // given when diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditControllerIntegrationTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditControllerIntegrationTest.java index 78f2a720edb20e990656352355aa75d2bf91b596..6fc5705dfd1475e41893fa50ee2c3a28741ef5e5 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditControllerIntegrationTest.java +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditControllerIntegrationTest.java @@ -46,7 +46,7 @@ public class GroupEditControllerIntegrationTest extends AbstractControllerTest { ", 2", "'', 2", "group-admin, 1", - "resource-admin, 0", + "resource-admin, 1", "group-viewer, 0", "all-roles, 1" }) @@ -253,36 +253,4 @@ public class GroupEditControllerIntegrationTest extends AbstractControllerTest { assertEquals(member.getRoleType(), response.getRoleType()); } - - public GroupRO addGroupToDomain(MockHttpSession session, DomainRO domainRO, UserRO domainAdminUser) throws Exception { - - - GroupRO groupRO = TestROUtils.createGroup(); - MvcResult addGroupResult = mvc.perform(put(PATH + '/' + SUB_CONTEXT_PATH_EDIT_GROUP_CREATE, domainAdminUser.getUserId(), domainRO.getDomainId()) - .session(session) - .with(csrf()) - .contentType(MediaType.APPLICATION_JSON) - .content(getObjectMapper().writeValueAsBytes(groupRO))) - .andExpect(status().isOk()).andReturn(); - return getObjectFromResponse(addGroupResult, GroupRO.class); - } - - public MemberRO addGroupMember(MockHttpSession session, DomainRO domainRO, GroupRO groupRO, UserRO domainAdminUser, String newMemberUsername) throws Exception { - - MemberRO memberToAdd = new MemberRO(); - memberToAdd.setRoleType(MembershipRoleType.VIEWER); - memberToAdd.setUsername(newMemberUsername); - - // when - MvcResult result = mvc.perform(put(PATH + '/' + SUB_CONTEXT_PATH_EDIT_GROUP_MEMBER_PUT, domainAdminUser.getUserId(), domainRO.getDomainId(), groupRO.getGroupId()) - .session(session) - .with(csrf()) - .contentType(MediaType.APPLICATION_JSON) - .content(getObjectMapper().writeValueAsBytes(memberToAdd))) - .andExpect(status().isOk()).andReturn(); - - //then - return getObjectFromResponse(result, MemberRO.class); - } - } diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/ResourceEditControllerIntegrationTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/ResourceEditControllerIntegrationTest.java index 173d42883c9812cc5ec0634bce3ed8f02c45b558..1cf6a766ebd088e0783545fdc9088686b59e6f5f 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/ResourceEditControllerIntegrationTest.java +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/edit/ResourceEditControllerIntegrationTest.java @@ -1,12 +1,9 @@ package eu.europa.ec.edelivery.smp.ui.edit; -import eu.europa.ec.edelivery.smp.data.enums.MembershipRoleType; import eu.europa.ec.edelivery.smp.data.enums.VisibilityType; import eu.europa.ec.edelivery.smp.data.ui.*; -import eu.europa.ec.edelivery.smp.services.ui.UIGroupPublicService; import eu.europa.ec.edelivery.smp.services.ui.UIResourceSearchService; import eu.europa.ec.edelivery.smp.services.ui.filters.ResourceFilter; -import eu.europa.ec.edelivery.smp.test.testutils.TestROUtils; import eu.europa.ec.edelivery.smp.ui.AbstractControllerTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -20,7 +17,6 @@ import org.springframework.test.web.servlet.MvcResult; import java.io.IOException; import java.util.List; import java.util.UUID; -import java.util.stream.Collectors; import static eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils.*; import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.*; @@ -44,11 +40,12 @@ public class ResourceEditControllerIntegrationTest extends AbstractControllerTes super.setup(); } + // test must match the webapp_integration_test_data.sql file! @ParameterizedTest @CsvSource({ ",'', 2", ",'group-admin', 2", - ",'resource-admin', 0", + ",'resource-admin', 1", "'','', 2", "ehealth-actorid-qns,'', 2", // filter by group match "'No match at all','', 0", @@ -131,16 +128,16 @@ public class ResourceEditControllerIntegrationTest extends AbstractControllerTes int initialSize = getResourceCount(); // when - MvcResult result = mvc.perform(delete(PATH + '/' + SUB_CONTEXT_PATH_EDIT_RESOURCE_DELETE, userRO.getUserId(), domainRO.getDomainId(), groupRO.getGroupId(),addedResource.getResourceId()) + MvcResult result = mvc.perform(delete(PATH + '/' + SUB_CONTEXT_PATH_EDIT_RESOURCE_DELETE, userRO.getUserId(), domainRO.getDomainId(), groupRO.getGroupId(), addedResource.getResourceId()) .session(session) .with(csrf())) - .andExpect(status().isOk()).andReturn(); + .andExpect(status().isOk()).andReturn(); // then ResourceRO response = getObjectFromResponse(result, ResourceRO.class); assertNotNull(response); assertEquals(addedResource.getIdentifierValue(), response.getIdentifierValue()); assertEquals(addedResource.getIdentifierScheme(), response.getIdentifierScheme()); - assertEquals(initialSize - 1, getResourceCount()); + assertEquals(initialSize - 1, getResourceCount()); } @Test @@ -172,7 +169,6 @@ public class ResourceEditControllerIntegrationTest extends AbstractControllerTes assertEquals(addedResource.getIdentifierScheme(), response.getIdentifierScheme()); } - @Test public void testGetGroupMembers() throws Exception { // given @@ -216,14 +212,14 @@ public class ResourceEditControllerIntegrationTest extends AbstractControllerTes ResourceRO addedResource = addResourceToGroup(session, domainRO, groupRO, userRO); //when - MemberRO response = addResourceMember(session, domainRO, groupRO,addedResource, userRO, SG_USER_USERNAME); + MemberRO response = addResourceMember(session, domainRO, groupRO, addedResource, userRO, SG_USER_USERNAME); // then assertNotNull(response); assertEquals(SG_USER_USERNAME, response.getUsername()); } @Test - public void testDeleteGroupMember() throws Exception { + public void testDeleteGroupMember() throws Exception { // given MockHttpSession session = loginWithSystemAdmin(mvc); UserRO userRO = getLoggedUserData(mvc, session); @@ -277,46 +273,7 @@ public class ResourceEditControllerIntegrationTest extends AbstractControllerTes } - public MemberRO addResourceMember(MockHttpSession session, DomainRO domainRO, GroupRO groupRO, ResourceRO resourceRO, UserRO domainAdminUser, String newMemberUsername) throws Exception { - - MemberRO memberToAdd = new MemberRO(); - memberToAdd.setRoleType(MembershipRoleType.VIEWER); - memberToAdd.setUsername(newMemberUsername); - - // when - MvcResult result = mvc.perform(put(PATH + '/' + SUB_CONTEXT_PATH_EDIT_RESOURCE_MEMBER_PUT, - domainAdminUser.getUserId(), domainRO.getDomainId(), groupRO.getGroupId(), resourceRO.getResourceId()) - .session(session) - .with(csrf()) - .contentType(MediaType.APPLICATION_JSON) - .content(getObjectMapper().writeValueAsBytes(memberToAdd))) - .andExpect(status().isOk()).andReturn(); - - //then - return getObjectFromResponse(result, MemberRO.class); - } - - - public ResourceRO addResourceToGroup(MockHttpSession session, DomainRO domainRO, GroupRO groupRO, UserRO domainAdminUser) throws Exception { - - ResourceRO resource = new ResourceRO(); - resource.setResourceTypeIdentifier("edelivery-oasis-smp-1.0-servicegroup"); - resource.setIdentifierValue(UUID.randomUUID().toString()); - resource.setIdentifierScheme("test-test-test"); - resource.setVisibility(VisibilityType.PUBLIC); - - MvcResult result = mvc.perform(put(PATH + '/' + SUB_CONTEXT_PATH_EDIT_RESOURCE_CREATE, domainAdminUser.getUserId(), domainRO.getDomainId(), groupRO.getGroupId()) - .session(session) - .with(csrf()) - .contentType(MediaType.APPLICATION_JSON) - .content(getObjectMapper().writeValueAsBytes(resource))) - .andExpect(status().isOk()).andReturn(); - - - return getObjectFromResponse(result, ResourceRO.class); - } - - public int getResourceCount(){ - return uiResourceSearchService.getTableList(-1,-1, null, null, new ResourceFilter()).getCount().intValue(); + public int getResourceCount() { + return uiResourceSearchService.getTableList(-1, -1, null, null, new ResourceFilter()).getCount().intValue(); } } diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/SearchResourceIntegrationTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/SearchResourceIntegrationTest.java index 5aaace5de71d01ab9a36b783251fa231cf7f30eb..07ac51282f24e41c87817f23052ad15e7072cd7e 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/SearchResourceIntegrationTest.java +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/SearchResourceIntegrationTest.java @@ -66,8 +66,7 @@ public class SearchResourceIntegrationTest { @Test public void testSearchByAnonymous() throws Exception { // given when - MvcResult result = mvc.perform(get(CONTEXT_PATH_PUBLIC_SEARCH_PARTICIPANT) - ).andExpect(status().isOk()).andReturn(); + MvcResult result = mvc.perform(get(CONTEXT_PATH_PUBLIC_SEARCH_PARTICIPANT)).andExpect(status().isOk()).andReturn(); //then ObjectMapper mapper = new ObjectMapper(); @@ -76,4 +75,4 @@ public class SearchResourceIntegrationTest { assertNotNull(res); assertEquals(2, res.getServiceEntities().size()); } -} \ No newline at end of file +} diff --git a/smp-webapp/src/test/resources/webapp_integration_test_data.sql b/smp-webapp/src/test/resources/webapp_integration_test_data.sql index 31e8184860547149971085282df6711d7f7b747e..1688a5596e7c594510c4f16803c9a7c476f0ef35 100644 --- a/smp-webapp/src/test/resources/webapp_integration_test_data.sql +++ b/smp-webapp/src/test/resources/webapp_integration_test_data.sql @@ -131,10 +131,11 @@ insert into SMP_GROUP_MEMBER (ID, FK_GROUP_ID, FK_USER_ID, MEMBERSHIP_ROLE, CREA -- set ownership insert into SMP_RESOURCE_MEMBER (ID, FK_RESOURCE_ID, FK_USER_ID, MEMBERSHIP_ROLE, CREATED_ON, LAST_UPDATED_ON) values (-1, -1, 1, 'ADMIN', NOW(), NOW()), -(-2, -2, 1, 'ADMIN', NOW(), NOW()), -(-3, -1, 5, 'ADMIN', NOW(), NOW()), -(-4, -1, 2, 'ADMIN', NOW(), NOW()), -(-5, -1, 6, 'ADMIN', NOW(), NOW()); +(-2, -1, 3, 'ADMIN', NOW(), NOW()), +(-3, -2, 1, 'ADMIN', NOW(), NOW()), +(-4, -1, 5, 'ADMIN', NOW(), NOW()), +(-5, -1, 2, 'ADMIN', NOW(), NOW()), +(-6, -1, 6, 'ADMIN', NOW(), NOW());