INC-1 add create user endpoint,generate tokens
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
package ru.soune.no_copy.service;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.springframework.context.MessageSource;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import ru.soune.no_copy.dto.RegisterRequest;
|
||||
import ru.soune.no_copy.entity.AuthToken;
|
||||
import ru.soune.no_copy.entity.User;
|
||||
import ru.soune.no_copy.exception.UserAlreadyExistsException;
|
||||
import ru.soune.no_copy.repository.AuthTokenRepository;
|
||||
import ru.soune.no_copy.repository.UserRepository;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class AuthTestService {
|
||||
|
||||
@Mock
|
||||
private UserRepository userRepository;
|
||||
|
||||
@Mock
|
||||
private AuthTokenRepository authTokenRepository;
|
||||
|
||||
@Mock
|
||||
private PasswordEncoder passwordEncoder;
|
||||
|
||||
@Mock
|
||||
private MessageSource messageSource;
|
||||
|
||||
@InjectMocks
|
||||
private AuthService authService;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
MockitoAnnotations.openMocks(this);
|
||||
}
|
||||
|
||||
@Test
|
||||
void registerSuccess() {
|
||||
RegisterRequest request = new RegisterRequest("John","A.","Doe","john@example.com","password123");
|
||||
|
||||
when(userRepository.existsByEmail(request.email())).thenReturn(false);
|
||||
when(passwordEncoder.encode(request.password())).thenReturn("hashed");
|
||||
when(userRepository.save(any(User.class))).thenAnswer(invocation -> invocation.getArgument(0));
|
||||
when(authTokenRepository.save(any(AuthToken.class))).thenAnswer(invocation -> invocation.getArgument(0));
|
||||
|
||||
AuthToken token = authService.register(request);
|
||||
User user = token.getUser();
|
||||
String email = user.getEmail();
|
||||
|
||||
assertNotNull(token);
|
||||
assertNotNull(token.getToken());
|
||||
assertNotNull(token.getUser());
|
||||
assertEquals("john@example.com", email);
|
||||
assertNotNull(token.getExpiresAt());
|
||||
}
|
||||
|
||||
@Test
|
||||
void registerExistingEmailThrows() {
|
||||
RegisterRequest request = new RegisterRequest("John","A.","Doe","john@example.com","123");
|
||||
|
||||
when(userRepository.existsByEmail(request.email())).thenReturn(true);
|
||||
when(messageSource.getMessage(anyString(), any(), any(Locale.class))).thenReturn("User exists");
|
||||
|
||||
UserAlreadyExistsException ex = assertThrows(UserAlreadyExistsException.class,
|
||||
() -> authService.register(request));
|
||||
|
||||
assertEquals("User exists", ex.getMessage());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user