Skip to content

Commit e4b2a93

Browse files
authored
Merge pull request #52 from SelimHorri/test
Test
2 parents 40d51f6 + f3914b5 commit e4b2a93

File tree

3 files changed

+230
-0
lines changed

3 files changed

+230
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package tn.cita.app.repository;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import org.junit.jupiter.api.BeforeEach;
6+
import org.junit.jupiter.api.Test;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa;
9+
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
10+
11+
import tn.cita.app.container.AbstractTestSharedMySQLContainer;
12+
import tn.cita.app.domain.entity.Credential;
13+
14+
@DataJpaTest(showSql = true)
15+
@AutoConfigureDataJpa
16+
class CredentialRepositoryTest extends AbstractTestSharedMySQLContainer {
17+
18+
@Autowired
19+
private CredentialRepository credentialRepository;
20+
21+
@BeforeEach
22+
void setUp() throws Exception {
23+
24+
}
25+
26+
@Test
27+
void givenValidUsername_whenFindCredentialByUsernameIgnoringCase_thenCredentialShouldBeFound() {
28+
29+
final var username = "selimhorri";
30+
final var optionalCredential = this.credentialRepository.findByUsernameIgnoreCase(username.toUpperCase());
31+
32+
assertThat(optionalCredential).isNotNull();
33+
assertThat(optionalCredential.isPresent()).isTrue();
34+
assertThat(optionalCredential.get()).isNotNull();
35+
assertThat(optionalCredential.get()).isInstanceOf(Credential.class);
36+
assertThat(optionalCredential.get().getUsername()).isEqualTo(username);
37+
assertThat(optionalCredential.get().getCustomer()).isNull();
38+
}
39+
40+
41+
42+
}
43+
44+
45+
46+
47+
48+
49+
50+
51+
52+
53+
54+
55+
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package tn.cita.app.service.impl;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.junit.Assert.assertThrows;
5+
6+
import org.junit.jupiter.api.BeforeEach;
7+
import org.junit.jupiter.api.Test;
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.boot.test.context.SpringBootTest;
10+
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
11+
import org.springframework.security.core.userdetails.UserDetailsService;
12+
13+
import tn.cita.app.dto.request.LoginRequest;
14+
import tn.cita.app.exception.wrapper.IllegalCredentialsException;
15+
import tn.cita.app.service.AuthenticationService;
16+
import tn.cita.app.util.JwtUtil;
17+
18+
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
19+
class AuthenticationServiceImplTest {
20+
21+
@Autowired
22+
private JwtUtil jwtUtil;
23+
24+
@Autowired
25+
private UserDetailsService userDetailsService;
26+
27+
@Autowired
28+
private AuthenticationService authenticationService;
29+
private LoginRequest loginRequest;
30+
// private LoginResponse loginResponse;
31+
32+
@BeforeEach
33+
void setUp() throws Exception {
34+
35+
loginRequest = new LoginRequest("selimhorri", "0000");
36+
}
37+
38+
@Test
39+
void givenValidLoginRequest_whenCredentialsAreValid_thenLoginResponseShouldProcessed() {
40+
41+
final var expectedLoginResponse = this.authenticationService.login(this.loginRequest);
42+
assertThat(expectedLoginResponse).isNotNull();
43+
assertThat(expectedLoginResponse.getUsername()).isEqualTo(loginRequest.getUsername());
44+
45+
final var validateToken = this.jwtUtil.validateToken(expectedLoginResponse.getJwtToken(),
46+
this.userDetailsService.loadUserByUsername(loginRequest.getUsername()));
47+
assertThat(validateToken).isTrue();
48+
}
49+
50+
@Test
51+
void givenInvalidLoginRequest_whenCredentialsAreInvalid_thenShouldThrowIllegalCredentialsException() {
52+
this.loginRequest = new LoginRequest("selimhorri", "1111");
53+
final var illegalCredentialsException = assertThrows(IllegalCredentialsException.class, () -> this.authenticationService.login(this.loginRequest));
54+
assertThat(illegalCredentialsException).isNotNull();
55+
assertThat(illegalCredentialsException.getMessage()).isEqualTo("Bad credentials");
56+
}
57+
58+
59+
60+
}
61+
62+
63+
64+
65+
66+
67+
68+
69+
70+
71+
72+
73+
74+
75+
76+
77+
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package tn.cita.app.service.impl;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.junit.Assert.assertThrows;
5+
import static org.mockito.Mockito.when;
6+
7+
import java.util.Optional;
8+
9+
import org.junit.jupiter.api.BeforeEach;
10+
import org.junit.jupiter.api.Test;
11+
import org.springframework.beans.factory.annotation.Autowired;
12+
import org.springframework.boot.test.context.SpringBootTest;
13+
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
14+
import org.springframework.boot.test.mock.mockito.MockBean;
15+
import org.springframework.security.crypto.password.PasswordEncoder;
16+
17+
import tn.cita.app.domain.UserRoleBasedAuthority;
18+
import tn.cita.app.domain.entity.Credential;
19+
import tn.cita.app.domain.entity.Employee;
20+
import tn.cita.app.exception.wrapper.CredentialNotFoundException;
21+
import tn.cita.app.repository.CredentialRepository;
22+
import tn.cita.app.service.CredentialService;
23+
24+
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
25+
class CredentialServiceImplTest {
26+
27+
@MockBean
28+
private CredentialRepository credentialRepository;
29+
30+
@Autowired
31+
private PasswordEncoder passwordEncoder;
32+
33+
@Autowired
34+
private CredentialService credentialService;
35+
private Credential credential;
36+
37+
@BeforeEach
38+
void setUp() throws Exception {
39+
40+
final var username = "selimhorri";
41+
this.credential = Credential.builder()
42+
.id(null)
43+
.username(username)
44+
.password(this.passwordEncoder.encode("0000"))
45+
.userRoleBasedAuthority(UserRoleBasedAuthority.EMPLOYEE)
46+
.isEnabled(true)
47+
.employee(
48+
Employee.builder()
49+
.firstname("Selim")
50+
.lastname("Horri")
51+
.build())
52+
.build();
53+
54+
when(this.credentialRepository.findByUsernameIgnoreCase(username))
55+
.thenReturn(Optional.of(this.credential));
56+
}
57+
58+
@Test
59+
void givenValidUsername_whenFindCredentialByUsername_thenCredentialShouldBeFound() {
60+
61+
final var credentialDtoExpected = this.credentialService.findByUsername(this.credential.getUsername());
62+
63+
assertThat(credentialDtoExpected).isNotNull();
64+
assertThat(credentialDtoExpected.getUsername()).isEqualTo(this.credential.getUsername());
65+
assertThat(credentialDtoExpected.getPassword()).isEqualTo(this.credential.getPassword());
66+
assertThat(credentialDtoExpected.getIsEnabled()).isTrue();
67+
}
68+
69+
@Test
70+
void givenInvalidUsername_whenFindCredentialByUsername_thenCredentialNotFoundExceptionShouldBeThrown() {
71+
72+
final var newUsername = this.credential.getUsername() + "iii";
73+
final var credentialNotFoundException = assertThrows(CredentialNotFoundException.class,
74+
() -> this.credentialService.findByUsername(newUsername));
75+
76+
assertThat(credentialNotFoundException).isNotNull();
77+
assertThat(credentialNotFoundException.getMessage()).startsWith("Credential ");
78+
assertThat(credentialNotFoundException.getMessage()).endsWith(" not found");
79+
assertThat(credentialNotFoundException.getMessage()).isEqualTo(String
80+
.format("Credential with username %s not found", newUsername));
81+
}
82+
83+
84+
85+
}
86+
87+
88+
89+
90+
91+
92+
93+
94+
95+
96+
97+
98+

0 commit comments

Comments
 (0)