From 0eedcf8269f52052ff8507989612531fceabcc65 Mon Sep 17 00:00:00 2001 From: Art Date: Thu, 9 Sep 2021 22:54:47 +0300 Subject: [PATCH] 78.2 Find user (#9) --- .../backend/controller/UserResource.java | 5 ++ .../controller/UserResourceUnSecureTest.java | 56 +++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java index 3fdad08..ba026ca 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java @@ -69,6 +69,11 @@ public class UserResource { return userService.updateUser(currentUsername, userDto); } + @GetMapping("{username}") + public User findUser(@PathVariable String username) { + return userService.findByUsername(username); + } + private void authenticate(String username, String password) { Authentication auth = new UsernamePasswordAuthenticationToken(username, password); authenticationManager.authenticate(auth); diff --git a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java index 769ee3d..a02564a 100644 --- a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java +++ b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java @@ -411,4 +411,60 @@ class UserResourceUnSecureTest extends BaseUserTest { } } + + @Nested + class FindUserTests { + + @BeforeEach + void setUp() { + user = userRepository + .findAll() + .stream() + .findAny() + .orElseGet(() -> userRepository.save(createRandomUser())); + } + + @Test + void findUser_present() { + + //given + String username = user.getUsername(); + + //when + var responseEntity = restTemplate.getForEntity("/user/{username}", User.class, username); + + //then + log.debug("Response Entity: {}", responseEntity); + assertThat(responseEntity.getStatusCode()).isEqualTo(OK); + assertThat(responseEntity.getBody()) + .isNotNull() + .hasNoNullFieldsOrPropertiesExcept("lastLoginDate", "lastLoginDateDisplay") + .hasFieldOrPropertyWithValue("username", username) + .hasFieldOrPropertyWithValue("email", user.getEmail()) + .hasFieldOrPropertyWithValue("firstName", user.getFirstName()) + .hasFieldOrPropertyWithValue("lastName", user.getLastName()) + .hasFieldOrPropertyWithValue("isActive", user.isActive()) + .hasFieldOrPropertyWithValue("isNotLocked", user.isNotLocked()) + .hasFieldOrPropertyWithValue("role", user.getRole()); + } + + @Test + void findUser_absent() { + + //given + String username = FAKER.name().username(); + + //when + var responseEntity = restTemplate.getForEntity("/user/{username}", HttpResponse.class, username); + + //then + log.debug("Response Entity: {}", responseEntity); + assertThat(responseEntity.getStatusCode()).isEqualTo(BAD_REQUEST); + assertThat(responseEntity.getBody()) + .isNotNull() + .hasNoNullFieldsOrProperties() + .hasFieldOrPropertyWithValue("httpStatus", BAD_REQUEST) + .hasFieldOrPropertyWithValue("message", String.format("User with username `%s` not found", username).toUpperCase()); + } + } } \ No newline at end of file