diff --git a/src/main/java/com/fredmaina/chatapp/Auth/services/AuthService.java b/src/main/java/com/fredmaina/chatapp/Auth/services/AuthService.java index 3364ab0..db9caeb 100644 --- a/src/main/java/com/fredmaina/chatapp/Auth/services/AuthService.java +++ b/src/main/java/com/fredmaina/chatapp/Auth/services/AuthService.java @@ -49,12 +49,12 @@ public class AuthService { @CacheEvict(value = "usernameCheck", key = "#request.username.toLowerCase()") public AuthResponse signUp(SignUpRequest request) { AuthResponse authResponse = new AuthResponse(); - if (request.getUsername() != null && userRepository.findByUsernameIgnoreCase(request.getUsername()).isPresent()) { - authResponse.setMessage("Username already exists (case-insensitive)"); + if (request.getUsername() != null && userRepository.existsByUsernameIgnoreCase(request.getUsername())) { + authResponse.setMessage("Username already exists"); authResponse.setSuccess(false); return authResponse; } - if (userRepository.findByEmail(request.getEmail()).isPresent()) { + if (userRepository.existsByEmail(request.getEmail())) { authResponse.setMessage("Email already exists"); authResponse.setSuccess(false); return authResponse; @@ -80,14 +80,8 @@ public AuthResponse signUp(SignUpRequest request) { authResponse.setUser(user); authResponse.setToken(token); } catch (DataIntegrityViolationException e) { - if (e.getMessage().contains("users_email_key")) { - authResponse.setMessage("Email already exists"); - } else if (e.getMessage().contains("idx_user_username") || e.getMessage().contains("users_username_key")) { - authResponse.setMessage("Username already exists"); - } else { - log.error("Data integrity violation during sign up: {}", e.getMessage()); - authResponse.setMessage("Data integrity violation"); - } + log.error("Data integrity violation during sign up: {}", e.getMessage()); + authResponse.setMessage("Data integrity violation"); authResponse.setSuccess(false); } catch (Exception e) { log.error("Unexpected error during sign up: {}", e.getMessage(), e); @@ -240,7 +234,6 @@ public AuthResponse setUsername(String email, String username) { .message("Username set successfully") .build(); } catch (DataIntegrityViolationException e) { - log.error("Data integrity violation while setting username for email {}: {}", email, e.getMessage()); return AuthResponse.builder() .message("Username already taken or another data issue occurred.") diff --git a/src/test/java/com/fredmaina/chatapp/Auth/Services/AuthServiceTest.java b/src/test/java/com/fredmaina/chatapp/Auth/Services/AuthServiceTest.java index b77792a..bec2dd7 100644 --- a/src/test/java/com/fredmaina/chatapp/Auth/Services/AuthServiceTest.java +++ b/src/test/java/com/fredmaina/chatapp/Auth/Services/AuthServiceTest.java @@ -11,7 +11,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.*; -import org.springframework.dao.DataIntegrityViolationException; import org.springframework.security.crypto.password.PasswordEncoder; import java.util.Optional; @@ -68,14 +67,13 @@ void testSignUp_duplicateEmail() { request.setPassword("mypassword"); request.setEmail("fred@example.com"); - when(passwordEncoder.encode(anyString())).thenReturn("encodedPassword"); - when(userRepository.save(any(User.class))).thenThrow( - new DataIntegrityViolationException("users_email_key")); + when(userRepository.existsByEmail("fred@example.com")).thenReturn(true); AuthResponse response = authService.signUp(request); assertFalse(response.isSuccess()); assertEquals("Email already exists", response.getMessage()); + verify(userRepository, never()).save(any(User.class)); } @Test @@ -85,14 +83,13 @@ void testSignUp_duplicateUsername() { request.setPassword("mypassword"); request.setEmail("fred@example.com"); - when(passwordEncoder.encode(anyString())).thenReturn("encodedPassword"); - when(userRepository.save(any(User.class))).thenThrow( - new DataIntegrityViolationException("users_username_key")); + when(userRepository.existsByUsernameIgnoreCase("fredmaina123")).thenReturn(true); AuthResponse response = authService.signUp(request); assertFalse(response.isSuccess()); assertEquals("Username already exists", response.getMessage()); + verify(userRepository, never()).save(any(User.class)); } @Test