19. Run Application (#1)

This commit is contained in:
Art
2021-09-04 11:17:11 +03:00
parent f14095c425
commit e83540de09
4 changed files with 92 additions and 5 deletions

View File

@ -56,6 +56,13 @@
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
<build>

View File

@ -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;

View File

@ -19,4 +19,7 @@ spring:
datasource:
url: jdbc:mysql://localhost:23306/support-portal
jpa:
show-sql: true
show-sql: true
logging:
level:
net.shyshkin: debug

View File

@ -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<User> savedUserOptional = userRepository.findById(id);
assertThat(savedUserOptional)
.hasValueSatisfying(userSaved -> assertThat(userSaved)
.hasNoNullFieldsOrProperties()
.satisfies(u -> log.debug("Saved User: {}", u)
)
);
Optional<UserPrincipal> 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();
}
}