You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
1.3 KiB

  1. package de.fd.fh.server.access;
  2. import de.fd.fh.server.user.UserId;
  3. import de.fd.fh.server.user.UserRepository;
  4. import de.fd.fh.server.user.UserService;
  5. import de.fd.fh.server.user.events.ChangePasswordEvent;
  6. import org.junit.jupiter.api.Test;
  7. import org.mockito.ArgumentCaptor;
  8. import static org.junit.jupiter.api.Assertions.*;
  9. import static org.mockito.ArgumentMatchers.any;
  10. import static org.mockito.BDDMockito.then;
  11. import static org.mockito.Mockito.*;
  12. class AccessContextEventListenerTest
  13. {
  14. @Test
  15. void given_changePasswordEvent_when_passwordChanged_should_changePassword()
  16. {
  17. final ChangePasswordEvent event = new ChangePasswordEvent(UserId.of("12345"), "newPwd");
  18. final AccessRepository repository = mock(AccessRepository.class);
  19. when(repository.findByUserId(any(UserId.class)))
  20. .thenReturn(new Access());
  21. final ArgumentCaptor<Access> captor = ArgumentCaptor.forClass(Access.class);
  22. new AccessContextEventListener(repository).update(null, event);
  23. verify(repository).save(captor.capture());
  24. assertEquals("newPwd", captor.getValue().getPassword(), "Have to be the new password");
  25. then(repository).should().findByUserId(any(UserId.class));
  26. then(repository).should().save(any(Access.class));
  27. then(repository).shouldHaveNoMoreInteractions();
  28. }
  29. }