Add missing "city" property in User and test
This commit is contained in:
@@ -26,6 +26,7 @@ public class User {
|
||||
private Integer number;
|
||||
private String numberExtension;
|
||||
private Integer postalCode;
|
||||
private String city;
|
||||
private String country;
|
||||
@ManyToMany(mappedBy = "users", fetch = FetchType.EAGER)
|
||||
private List<BankAccount> bankAccounts;
|
||||
|
||||
@@ -16,5 +16,6 @@ public class UserDTO implements Serializable {
|
||||
private Integer number;
|
||||
private String numberExtension;
|
||||
private Integer postalCode;
|
||||
private String city;
|
||||
private String country;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@AtLeastOneFieldNotEmpty(fieldNames = {"password", "street", "number", "numberExtension", "postalCode", "country"})
|
||||
@AtLeastOneFieldNotEmpty(fieldNames = {"password", "street", "number", "numberExtension", "postalCode", "city", "country"})
|
||||
public class UserUpdateRequest implements Serializable {
|
||||
@Pattern(regexp = "^[^\\s]+$")
|
||||
private String password;
|
||||
@@ -17,5 +17,6 @@ public class UserUpdateRequest implements Serializable {
|
||||
private Integer number;
|
||||
private String numberExtension;
|
||||
private Integer postalCode;
|
||||
private String city;
|
||||
private String country;
|
||||
}
|
||||
|
||||
@@ -31,8 +31,11 @@ public class UserService {
|
||||
|
||||
private boolean applyUpdateToBuilderAndDecideIfNeedsLogout(UserUpdateRequest userUpdateRequest, User.UserBuilder builder) {
|
||||
boolean needsLogout = false;
|
||||
if (userUpdateRequest.getCountry() != null) {
|
||||
builder.country(userUpdateRequest.getCountry());
|
||||
if (userUpdateRequest.getNumber() != null) {
|
||||
builder.number(userUpdateRequest.getNumber());
|
||||
}
|
||||
if (userUpdateRequest.getNumberExtension() != null) {
|
||||
builder.numberExtension(userUpdateRequest.getNumberExtension());
|
||||
}
|
||||
if (userUpdateRequest.getStreet() != null) {
|
||||
builder.street(userUpdateRequest.getStreet());
|
||||
@@ -40,11 +43,11 @@ public class UserService {
|
||||
if (userUpdateRequest.getPostalCode() != null) {
|
||||
builder.postalCode(userUpdateRequest.getPostalCode());
|
||||
}
|
||||
if (userUpdateRequest.getNumber() != null) {
|
||||
builder.number(userUpdateRequest.getNumber());
|
||||
if (userUpdateRequest.getCity() != null) {
|
||||
builder.city(userUpdateRequest.getCity());
|
||||
}
|
||||
if (userUpdateRequest.getNumberExtension() != null) {
|
||||
builder.numberExtension(userUpdateRequest.getNumberExtension());
|
||||
if (userUpdateRequest.getCountry() != null) {
|
||||
builder.country(userUpdateRequest.getCountry());
|
||||
}
|
||||
if (userUpdateRequest.getPassword() != null) {
|
||||
builder.password(passwordEncoder.encode(userUpdateRequest.getPassword()));
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
package net.kapcake.bankingservice;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
class BankingServiceApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package net.kapcake.bankingservice.services;
|
||||
|
||||
import net.kapcake.bankingservice.model.domain.User;
|
||||
import net.kapcake.bankingservice.model.dtos.UserUpdateRequest;
|
||||
import net.kapcake.bankingservice.repositories.UserRepository;
|
||||
import net.kapcake.bankingservice.security.UserDetailsImpl;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.mockito.stubbing.Answer;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class UserServiceTest {
|
||||
public static final String TEST_USER_1 = "test-user-1";
|
||||
@Mock
|
||||
private static PasswordEncoder passwordEncoder;
|
||||
@Mock
|
||||
private static UserRepository userRepository;
|
||||
private User user1;
|
||||
private UserService userService;
|
||||
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
userService = new UserService(userRepository, passwordEncoder);
|
||||
|
||||
user1 = new User().setId(1L).setUsername(TEST_USER_1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateUser() {
|
||||
UserDetailsImpl authenticatedUser = new UserDetailsImpl(user1);
|
||||
String updatedPassword = "update";
|
||||
String encodedPassword = "encoded";
|
||||
UserUpdateRequest userUpdateRequest = new UserUpdateRequest().setPassword(updatedPassword);
|
||||
final User[] updatedUser = new User[1];
|
||||
|
||||
when(userRepository.findByUsername(TEST_USER_1)).thenReturn(Optional.of(user1));
|
||||
when(userRepository.save(any())).then((Answer<Void>) invocationOnMock -> {
|
||||
updatedUser[0] = invocationOnMock.getArgument(0);
|
||||
return null;
|
||||
});
|
||||
when(passwordEncoder.encode(updatedPassword)).thenReturn(encodedPassword);
|
||||
|
||||
boolean needsLogout = userService.updateUser(authenticatedUser, userUpdateRequest);
|
||||
assertTrue(needsLogout);
|
||||
assertEquals(encodedPassword, updatedUser[0].getPassword());
|
||||
|
||||
userUpdateRequest = new UserUpdateRequest()
|
||||
.setNumber(2)
|
||||
.setNumberExtension("ext")
|
||||
.setStreet("Street")
|
||||
.setPostalCode(9999)
|
||||
.setCity("City")
|
||||
.setCountry("Luxembourg");
|
||||
|
||||
assertNull(updatedUser[0].getNumber());
|
||||
assertNull(updatedUser[0].getNumberExtension());
|
||||
assertNull(updatedUser[0].getStreet());
|
||||
assertNull(updatedUser[0].getPostalCode());
|
||||
assertNull(updatedUser[0].getCity());
|
||||
assertNull(updatedUser[0].getCountry());
|
||||
|
||||
needsLogout = userService.updateUser(authenticatedUser, userUpdateRequest);
|
||||
assertFalse(needsLogout);
|
||||
assertEquals(2, updatedUser[0].getNumber());
|
||||
assertEquals("ext", updatedUser[0].getNumberExtension());
|
||||
assertEquals("Street", updatedUser[0].getStreet());
|
||||
assertEquals(9999, updatedUser[0].getPostalCode());
|
||||
assertEquals("City", updatedUser[0].getCity());
|
||||
assertEquals("Luxembourg", updatedUser[0].getCountry());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user