From e977510f26b63b1955bae683bbf348dbbc157f80 Mon Sep 17 00:00:00 2001 From: Dominik Mizyn Date: Tue, 27 Aug 2019 12:06:34 +0200 Subject: [PATCH] Tests Coverage up Tests Coverage up Issue-ID: PORTAL-710 Change-Id: Iac9e4203613930b905779b45bab83ddfe82bea74 Signed-off-by: Dominik Mizyn --- .../onap/portal/controller/LanguageController.java | 10 ++--- .../org/onap/portal/controller/UserController.java | 2 +- .../java/org/onap/portal/dao/fn/FnUserDao.java | 9 ++++- .../java/org/onap/portal/domain/db/fn/FnUser.java | 21 ++++++---- .../org/onap/portal/service/fn/FnUserService.java | 25 +++++------- .../portal/controller/LanguageControllerTest.java | 46 ++++++++++++++++++++++ .../onap/portal/controller/UserControllerTest.java | 44 ++++++++++++++++++--- .../onap/portal/service/fn/FnUserServiceTest.java | 21 ++++++++++ 8 files changed, 141 insertions(+), 37 deletions(-) diff --git a/portal-BE/src/main/java/org/onap/portal/controller/LanguageController.java b/portal-BE/src/main/java/org/onap/portal/controller/LanguageController.java index 8f2e50e6..90ea0680 100644 --- a/portal-BE/src/main/java/org/onap/portal/controller/LanguageController.java +++ b/portal-BE/src/main/java/org/onap/portal/controller/LanguageController.java @@ -107,7 +107,7 @@ public class LanguageController { response.setStatus(PortalRestStatusEnum.OK); } else { response.setMessage("FAILURE"); - response.setResponse("User for id:" + userId + " do not exist"); + response.setResponse("User for id: " + userId + " do not exist"); response.setStatus(PortalRestStatusEnum.ERROR); } } catch (Exception e) { @@ -120,11 +120,11 @@ public class LanguageController { } @GetMapping(value = "/languageSetting/user/{loginId}", produces = MediaType.APPLICATION_JSON_VALUE) - public FnLanguage getUserLanguage(@PathVariable("loginId") final Long loginId) { - if (fnUserService.getUser(loginId).isPresent()) { - return Optional.of(fnUserService.getUser(loginId).get().getLanguageId()).orElse(new FnLanguage()); + public FnLanguageDto getUserLanguage(final Principal principal, @PathVariable("loginId") final Long loginId) { + if (fnUserService.existById(loginId)) { + return fnLanguageMapper.fnLanguageToDto(Optional.of(fnUserService.getUser(loginId).get().getLanguageId()).orElse(new FnLanguage())); } - return new FnLanguage(); + return new FnLanguageDto(); } @PostMapping(value = "/language", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/portal-BE/src/main/java/org/onap/portal/controller/UserController.java b/portal-BE/src/main/java/org/onap/portal/controller/UserController.java index d514dfae..d339e455 100644 --- a/portal-BE/src/main/java/org/onap/portal/controller/UserController.java +++ b/portal-BE/src/main/java/org/onap/portal/controller/UserController.java @@ -111,7 +111,7 @@ public class UserController { user.setMiddleName(profileDetail.getMiddleName()); user.setLoginId(profileDetail.getLoginId()); if (!HIDDEN_DEFAULT_PASSWORD.equals(profileDetail.getLoginPassword())) { - user.setLoginPwd(CipherUtil.encryptPKC(profileDetail.getLoginPassword())); + user.setLoginPwd(CipherUtil.encryptPKC(profileDetail.getLoginPassword(), "AGLDdG4D04BKm2IxIWEr8o==!")); } userService.saveFnUser(principal, user); // Update user info in the session diff --git a/portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserDao.java b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserDao.java index 458cc669..8dbfb70f 100644 --- a/portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserDao.java +++ b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserDao.java @@ -58,5 +58,12 @@ public interface FnUserDao extends JpaRepository { FnUser getOne(Long integer); @Query - Optional> getUsersByOrgUserId(@Param("orgIds") String orgIds); + Optional> getUserWithOrgUserId(final @Param("orgId") String orgId); + + @Query + Optional> getUsersByOrgIds(final @Param("orgIds") List orgIds); + + @Query + Optional> getActiveUsers(); + } diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUser.java b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUser.java index cbca44c1..1399dd5c 100644 --- a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUser.java +++ b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUser.java @@ -43,7 +43,6 @@ package org.onap.portal.domain.db.fn; import java.time.LocalDateTime; import java.util.Collection; import java.util.Set; -import java.util.UUID; import java.util.stream.Collectors; import javax.persistence.CascadeType; import javax.persistence.Column; @@ -58,6 +57,8 @@ import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.NamedNativeQueries; import javax.persistence.NamedNativeQuery; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import javax.persistence.Table; @@ -72,7 +73,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import org.hibernate.annotations.DynamicUpdate; -import org.hibernate.annotations.GenericGenerator; import org.hibernate.validator.constraints.SafeHtml; import org.onap.portal.domain.db.cr.CrReportFileHistory; import org.onap.portal.domain.db.ep.EpPersUserWidgetPlacement; @@ -148,13 +148,18 @@ CREATE TABLE `fn_user` ( ) */ -@NamedNativeQueries({ - @NamedNativeQuery( - name = "getUsersByOrgUserId", - query = "SELECT * FROM FnUser WHERE where org_user_id in :orgIds" +@NamedQueries({ + @NamedQuery( + name = "FnUser.getUserWithOrgUserId", + query = "FROM FnUser WHERE orgUserId = :orgId"), + @NamedQuery( + name = "FnUser.getActiveUsers", + query = "FROM FnUser WHERE activeYn = 'Y'"), + @NamedQuery( + name = "FnUser.getUsersByOrgIds", + query = "FROM FnUser WHERE orgUserId IN :orgIds" ) }) - @Table(name = "fn_user", indexes = { @Index(name = "fn_user_address_id", columnList = "address_id"), @Index(name = "fn_user_alert_method_cd", columnList = "alert_method_cd"), @@ -350,7 +355,7 @@ public class FnUser implements UserDetails { private boolean guest; @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "fnUserList") private Set crReportFileHistorie; - @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) private Set fnRoles; @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) private Set fnRoleList; diff --git a/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserService.java b/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserService.java index aedac493..8c5806ea 100644 --- a/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserService.java +++ b/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserService.java @@ -59,7 +59,7 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class FnUserService implements UserDetailsService { - private final FnUserDao fnUserDao; + private FnUserDao fnUserDao; @Autowired public FnUserService(FnUserDao fnUserDao) { @@ -71,7 +71,7 @@ public class FnUserService implements UserDetailsService { } @Override - public FnUser loadUserByUsername(String username) throws UsernameNotFoundException { + public FnUser loadUserByUsername(final String username) throws UsernameNotFoundException { Optional fnUser = fnUserDao.findByLoginId(username); if (fnUser.isPresent()) { return fnUser.get(); @@ -80,36 +80,29 @@ public class FnUserService implements UserDetailsService { } } - public Optional getUser(Long id) { + public Optional getUser(final Long id) { return Optional.of(fnUserDao.getOne(id)); } List getUserWithOrgUserId(final String orgUserIdValue){ - Optional> fnUsers = Optional.of(fnUserDao.findAll() - .stream() - .filter(fnUser -> orgUserIdValue.equals(fnUser.getOrgUserId())) - .collect(Collectors.toList())); - return fnUsers.orElse(new ArrayList<>()); + return fnUserDao.getUserWithOrgUserId(orgUserIdValue).orElse(new ArrayList<>()); } - List getUsersByOrgIdsNotificationsResult(List orgIds){ + List getUsersByOrgIds(final List orgIds){ String ids = "(" + orgIds.stream().map(s -> "'" + s + "'").collect(Collectors.joining()) + ")"; - return fnUserDao.getUsersByOrgUserId(ids).orElse(new ArrayList<>()); + return fnUserDao.getUsersByOrgIds(orgIds).orElse(new ArrayList<>()); } - List getUsersByOrgIdsNotificationsResult(String orgIds){ - return fnUserDao.getUsersByOrgUserId(orgIds).orElse(new ArrayList<>()); - } List getActiveUsers(){ - return fnUserDao.findAll().stream().filter(fnUser -> "Y".equals(fnUser.getActiveYn())).collect(Collectors.toList()); + return fnUserDao.getActiveUsers().orElse(new ArrayList<>()); } - public void deleteUser(FnUser fnUser){ + public void deleteUser(final FnUser fnUser){ fnUserDao.delete(fnUser); } - public boolean existById(Long userId) { + public boolean existById(final Long userId) { return fnUserDao.existsById(userId); } } diff --git a/portal-BE/src/test/java/org/onap/portal/controller/LanguageControllerTest.java b/portal-BE/src/test/java/org/onap/portal/controller/LanguageControllerTest.java index 0f9f09ad..0977f286 100644 --- a/portal-BE/src/test/java/org/onap/portal/controller/LanguageControllerTest.java +++ b/portal-BE/src/test/java/org/onap/portal/controller/LanguageControllerTest.java @@ -41,6 +41,7 @@ package org.onap.portal.controller; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; @@ -49,6 +50,7 @@ import org.onap.portal.domain.db.fn.FnLanguage; import org.onap.portal.domain.db.fn.FnUser; import org.onap.portal.domain.dto.PortalRestResponse; import org.onap.portal.domain.dto.PortalRestStatusEnum; +import org.onap.portal.domain.dto.fn.FnLanguageDto; import org.onap.portal.service.fn.FnUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -139,6 +141,50 @@ class LanguageControllerTest { fnLanguageDao.delete(fnLanguage); } + @Test + void setUpUserLanguageWrongUserId(){ + //Given + FnLanguage fnLanguage = new FnLanguage(); + fnLanguage.setLanguageName("Polish"); + fnLanguage.setLanguageAlias("PL"); + + PortalRestResponse expected = new PortalRestResponse<>(); + expected.setMessage("FAILURE"); + expected.setStatus(PortalRestStatusEnum.ERROR); + expected.setResponse("User for id: 345 do not exist"); + + languageController.saveLanguage(principal, fnLanguage); + PortalRestResponse actual = languageController.setUpUserLanguage(principal, fnLanguage, 345L); + + assertEquals(expected.getMessage(), actual.getMessage()); + assertEquals(expected.getStatus(), actual.getStatus()); + assertEquals(expected.getResponse(), actual.getResponse()); + //Clean up + fnLanguageDao.delete(fnLanguage); + } + + + @Test + void getUserLanguage() { + FnLanguageDto expected = new FnLanguageDto(); + expected.setLanguageAlias("EN"); + expected.setLanguageName("English"); + + FnLanguageDto actual = languageController.getUserLanguage(principal, 1L); + + assertEquals(expected.getLanguageAlias(), actual.getLanguageAlias()); + assertEquals(expected.getLanguageName(), actual.getLanguageName()); + } + + @Test + void getUserLanguageNotExistingUser() { + FnLanguageDto expected = new FnLanguageDto(); + + FnLanguageDto actual = languageController.getUserLanguage(principal, 456L); + + assertNull(actual.getLanguageAlias()); + assertNull(actual.getLanguageName()); + } } \ No newline at end of file diff --git a/portal-BE/src/test/java/org/onap/portal/controller/UserControllerTest.java b/portal-BE/src/test/java/org/onap/portal/controller/UserControllerTest.java index b216799f..e3f1f7be 100644 --- a/portal-BE/src/test/java/org/onap/portal/controller/UserControllerTest.java +++ b/portal-BE/src/test/java/org/onap/portal/controller/UserControllerTest.java @@ -39,13 +39,17 @@ package org.onap.portal.controller; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; -import lombok.AllArgsConstructor; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; +import org.onap.portal.domain.db.fn.FnUser; import org.onap.portal.domain.dto.PortalRestResponse; import org.onap.portal.domain.dto.PortalRestStatusEnum; import org.onap.portal.domain.dto.ProfileDetail; +import org.onap.portal.service.fn.FnUserService; +import org.onap.portalsdk.core.onboarding.exception.CipherUtilException; +import org.onap.portalsdk.core.onboarding.util.CipherUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -54,14 +58,18 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations="classpath:test.properties") +@TestPropertySource(locations = "classpath:test.properties") class UserControllerTest { - private UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("demo", "XZa6pS1vC0qKXWtn9wcZWdLx61L0="); + private UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("demo", + "XZa6pS1vC0qKXWtn9wcZWdLx61L0="); + + private final FnUserService userService; private final UserController userController; @Autowired - UserControllerTest(UserController userController) { + UserControllerTest(final FnUserService userService, final UserController userController) { + this.userService = userService; this.userController = userController; } @@ -73,7 +81,8 @@ class UserControllerTest { expectedDetails.setEmail("demo@openecomp.org"); expectedDetails.setLoginId("demo"); expectedDetails.setLoginPassword("*****"); - PortalRestResponse expected = new PortalRestResponse<>(PortalRestStatusEnum.OK, "success", expectedDetails); + PortalRestResponse expected = new PortalRestResponse<>(PortalRestStatusEnum.OK, "success", + expectedDetails); PortalRestResponse actual = userController.getLoggedinUser(principal); @@ -92,7 +101,8 @@ class UserControllerTest { expectedDetails.setLoginPassword("*****"); PortalRestResponse actual = userController.modifyLoggedinUser(principal, expectedDetails); - PortalRestResponse expected = new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "lastName must not be blank", null); + PortalRestResponse expected = new PortalRestResponse<>(PortalRestStatusEnum.ERROR, + "lastName must not be blank", null); assertEquals(expected, actual); } @@ -109,4 +119,26 @@ class UserControllerTest { PortalRestResponse expected = new PortalRestResponse<>(PortalRestStatusEnum.OK, "success", null); assertEquals(expected, actual); } + + @Test + void modifyLoggedinUserChangePassword() throws CipherUtilException { + ProfileDetail expectedDetails = new ProfileDetail(); + expectedDetails.setFirstName("Demo"); + expectedDetails.setLastName("User"); + expectedDetails.setEmail("demo@openecomp.org"); + expectedDetails.setLoginId("demo"); + expectedDetails.setLoginPassword("123password"); + + FnUser user = userService.loadUserByUsername(principal.getName()); + String oldPassword = user.getLoginPwd(); + + PortalRestResponse actual = userController.modifyLoggedinUser(principal, expectedDetails); + PortalRestResponse expected = new PortalRestResponse<>(PortalRestStatusEnum.OK, "success", null); + + FnUser user2 = userService.loadUserByUsername(principal.getName()); + String newPassword = user2.getLoginPwd(); + + assertEquals(expected, actual); + assertNotEquals(oldPassword, newPassword); + } } \ No newline at end of file diff --git a/portal-BE/src/test/java/org/onap/portal/service/fn/FnUserServiceTest.java b/portal-BE/src/test/java/org/onap/portal/service/fn/FnUserServiceTest.java index 3f242fb4..26731eac 100644 --- a/portal-BE/src/test/java/org/onap/portal/service/fn/FnUserServiceTest.java +++ b/portal-BE/src/test/java/org/onap/portal/service/fn/FnUserServiceTest.java @@ -43,6 +43,10 @@ package org.onap.portal.service.fn; import static org.junit.jupiter.api.Assertions.*; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.onap.portal.domain.db.fn.FnLanguage; @@ -167,4 +171,21 @@ class FnUserServiceTest { assertEquals(expected.getSiloStatus(), actual.getSiloStatus()); assertEquals(expected.getLanguageId(), actual.getLanguageId()); } + + @Test + void getActiveUsers() { + assertEquals(12, fnUserService.getActiveUsers().size()); + } + + @Test + void getUserWithOrgUserId() { + assertEquals(1, fnUserService.getUserWithOrgUserId("cs0008").size()); + } + + @Test + void getUserWithOrgUserIds() { + List ids = new ArrayList<>(Arrays.asList("cs0008", "op0001")); + assertEquals(2, fnUserService.getUsersByOrgIds(ids).size()); + } + } \ No newline at end of file -- 2.16.6