【发布时间】:2021-05-31 11:30:11
【问题描述】:
我在将实体保存到数据库时对我的用户密码进行哈希处理。 这样做时,我无法更新用户名,而无需再次对密码进行哈希处理。
我为它写了测试,但失败了。
@Test
@DisplayName("Update")
public void testForUpdate() {
final User user = new User("UserForUpdate", "UpdatedUser123");
this.userService.save(user);
User found = this.userService.findOneByUsernameAndPassword(user.getUsername(), user.getPassword());
assertTrue(found.getId() != null, "Found real user");
this.userService.save(found);
final User asserted = this.userService.findOneByUsernameAndPassword(found.getUsername(), user.getPassword());
assertTrue(asserted != null, "Updated user found");
assertTrue(user.getId() == asserted.getId(), "User ID is persisted");
}
UserService 的保存方法如下所示:
@Override
public User save(User newUser) {
newUser.setPassword(passwordEncoder.encode(newUser.getPassword()));
return repository.save(newUser);
}
这样保存是不是我做错了什么?
我应该如何进行才能正确实施 CRUD 更新?
感谢大家的指点
【问题讨论】:
标签: junit spring-security spring-data-jpa