From e83540de09056bd0d5ac7edacc09c7f947f5e4a3 Mon Sep 17 00:00:00 2001 From: Art Date: Sat, 4 Sep 2021 11:17:11 +0300 Subject: [PATCH] 19. Run Application (#1) --- support-portal-backend/pom.xml | 7 ++ .../supportportal/backend/domain/User.java | 6 +- .../src/main/resources/application.yml | 5 +- .../backend/domain/UserPrincipalTest.java | 79 +++++++++++++++++++ 4 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/domain/UserPrincipalTest.java diff --git a/support-portal-backend/pom.xml b/support-portal-backend/pom.xml index 1f533e1..66217c7 100644 --- a/support-portal-backend/pom.xml +++ b/support-portal-backend/pom.xml @@ -56,6 +56,13 @@ spring-security-test test + + + com.github.javafaker + javafaker + 1.0.2 + + diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/User.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/User.java index 1b6d8bf..04eb146 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/User.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/User.java @@ -1,9 +1,6 @@ package net.shyshkin.study.fullstack.supportportal.backend.domain; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.*; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -18,6 +15,7 @@ import java.time.LocalDateTime; @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(onlyExplicitlyIncluded = true) +@Builder public class User implements Serializable { private static final long serialVersionUID = -4372214856545239049L; diff --git a/support-portal-backend/src/main/resources/application.yml b/support-portal-backend/src/main/resources/application.yml index ce95396..c11bf0b 100644 --- a/support-portal-backend/src/main/resources/application.yml +++ b/support-portal-backend/src/main/resources/application.yml @@ -19,4 +19,7 @@ spring: datasource: url: jdbc:mysql://localhost:23306/support-portal jpa: - show-sql: true \ No newline at end of file + show-sql: true +logging: + level: + net.shyshkin: debug \ No newline at end of file diff --git a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/domain/UserPrincipalTest.java b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/domain/UserPrincipalTest.java new file mode 100644 index 0000000..138d275 --- /dev/null +++ b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/domain/UserPrincipalTest.java @@ -0,0 +1,79 @@ +package net.shyshkin.study.fullstack.supportportal.backend.domain; + +import com.github.javafaker.Faker; +import lombok.extern.slf4j.Slf4j; +import net.shyshkin.study.fullstack.supportportal.backend.repository.UserRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import java.time.LocalDateTime; +import java.util.Optional; +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; + +@Slf4j +@SpringBootTest +@ActiveProfiles("local") +class UserPrincipalTest { + + public static final Faker FAKER = Faker.instance(); + + @Autowired + UserRepository userRepository; + private User user; + + @BeforeEach + void setUp() { + User fakeUser = createRandomUser(); + user = userRepository.save(fakeUser); + } + + @Test + void displayUser() { + //given + Long id = user.getId(); + int expectedAuthoritiesLength = user.getAuthorities().length + user.getRoles().length; + + //when + Optional savedUserOptional = userRepository.findById(id); + assertThat(savedUserOptional) + .hasValueSatisfying(userSaved -> assertThat(userSaved) + .hasNoNullFieldsOrProperties() + .satisfies(u -> log.debug("Saved User: {}", u) + ) + ); + + Optional userPrincipalOptional = savedUserOptional.map(UserPrincipal::new); + + //then + assertThat(userPrincipalOptional) + .hasValueSatisfying(userPrincipal -> assertThat(userPrincipal.getAuthorities()) + .isNotNull() + .isNotEmpty() + .hasSize(expectedAuthoritiesLength) + .satisfies(authorities -> log.debug("Authorities: {}", authorities))); + } + + private User createRandomUser() { + return User.builder() + .email(FAKER.bothify("????##@example.com")) + .firstName(FAKER.name().firstName()) + .lastName(FAKER.name().lastName()) + .username(FAKER.name().username()) + .password("bad_password") + .userId(UUID.randomUUID().toString()) + .isActive(true) + .isNotLocked(true) + .joinDate(LocalDateTime.now()) + .profileImageUrl("http://url_to_profile_img") + .lastLoginDate(LocalDateTime.now()) + .lastLoginDateDisplay(LocalDateTime.now()) + .roles(new String[]{"ROLE_ADMIN", "ROLE_USER"}) + .authorities(new String[]{"user:delete", "user:read"}) + .build(); + } +} \ No newline at end of file