Add missing "city" property in User and test
This commit is contained in:
@@ -26,6 +26,7 @@ public class User {
|
|||||||
private Integer number;
|
private Integer number;
|
||||||
private String numberExtension;
|
private String numberExtension;
|
||||||
private Integer postalCode;
|
private Integer postalCode;
|
||||||
|
private String city;
|
||||||
private String country;
|
private String country;
|
||||||
@ManyToMany(mappedBy = "users", fetch = FetchType.EAGER)
|
@ManyToMany(mappedBy = "users", fetch = FetchType.EAGER)
|
||||||
private List<BankAccount> bankAccounts;
|
private List<BankAccount> bankAccounts;
|
||||||
|
|||||||
@@ -16,5 +16,6 @@ public class UserDTO implements Serializable {
|
|||||||
private Integer number;
|
private Integer number;
|
||||||
private String numberExtension;
|
private String numberExtension;
|
||||||
private Integer postalCode;
|
private Integer postalCode;
|
||||||
|
private String city;
|
||||||
private String country;
|
private String country;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Accessors(chain = true)
|
@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 {
|
public class UserUpdateRequest implements Serializable {
|
||||||
@Pattern(regexp = "^[^\\s]+$")
|
@Pattern(regexp = "^[^\\s]+$")
|
||||||
private String password;
|
private String password;
|
||||||
@@ -17,5 +17,6 @@ public class UserUpdateRequest implements Serializable {
|
|||||||
private Integer number;
|
private Integer number;
|
||||||
private String numberExtension;
|
private String numberExtension;
|
||||||
private Integer postalCode;
|
private Integer postalCode;
|
||||||
|
private String city;
|
||||||
private String country;
|
private String country;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,8 +31,11 @@ public class UserService {
|
|||||||
|
|
||||||
private boolean applyUpdateToBuilderAndDecideIfNeedsLogout(UserUpdateRequest userUpdateRequest, User.UserBuilder builder) {
|
private boolean applyUpdateToBuilderAndDecideIfNeedsLogout(UserUpdateRequest userUpdateRequest, User.UserBuilder builder) {
|
||||||
boolean needsLogout = false;
|
boolean needsLogout = false;
|
||||||
if (userUpdateRequest.getCountry() != null) {
|
if (userUpdateRequest.getNumber() != null) {
|
||||||
builder.country(userUpdateRequest.getCountry());
|
builder.number(userUpdateRequest.getNumber());
|
||||||
|
}
|
||||||
|
if (userUpdateRequest.getNumberExtension() != null) {
|
||||||
|
builder.numberExtension(userUpdateRequest.getNumberExtension());
|
||||||
}
|
}
|
||||||
if (userUpdateRequest.getStreet() != null) {
|
if (userUpdateRequest.getStreet() != null) {
|
||||||
builder.street(userUpdateRequest.getStreet());
|
builder.street(userUpdateRequest.getStreet());
|
||||||
@@ -40,11 +43,11 @@ public class UserService {
|
|||||||
if (userUpdateRequest.getPostalCode() != null) {
|
if (userUpdateRequest.getPostalCode() != null) {
|
||||||
builder.postalCode(userUpdateRequest.getPostalCode());
|
builder.postalCode(userUpdateRequest.getPostalCode());
|
||||||
}
|
}
|
||||||
if (userUpdateRequest.getNumber() != null) {
|
if (userUpdateRequest.getCity() != null) {
|
||||||
builder.number(userUpdateRequest.getNumber());
|
builder.city(userUpdateRequest.getCity());
|
||||||
}
|
}
|
||||||
if (userUpdateRequest.getNumberExtension() != null) {
|
if (userUpdateRequest.getCountry() != null) {
|
||||||
builder.numberExtension(userUpdateRequest.getNumberExtension());
|
builder.country(userUpdateRequest.getCountry());
|
||||||
}
|
}
|
||||||
if (userUpdateRequest.getPassword() != null) {
|
if (userUpdateRequest.getPassword() != null) {
|
||||||
builder.password(passwordEncoder.encode(userUpdateRequest.getPassword()));
|
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