package com.globant.katari.registration.application;
import static com.globant.katari.registration.SpringTestUtils.createSmtpServer;
import static com.globant.katari.registration.SpringTestUtils.getContext;
import static org.hamcrest.CoreMatchers.is;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.globant.katari.registration.domain.RecoverPasswordRequest;
import com.globant.katari.registration.domain.RegistrationRepository;
import com.globant.katari.tools.DummySmtpServer;
import com.globant.katari.user.domain.User;
import com.globant.katari.user.domain.UserRepository;
/**
*
* @author waabox (emiliano[dot]arango[at]globant[dot]com)
*/
public class ActivateUserCommandTest {
private UserRepository userRepository;
private DummySmtpServer smtpServer;
private RegistrationRepository registrationRepository;
private ActivateUserCommand activateUserCommand;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
smtpServer = createSmtpServer();
activateUserCommand = (ActivateUserCommand) getContext().getBean(
"registration.activateUserCommand");
userRepository = (UserRepository) getContext().getBean(
"user.userRepository");
registrationRepository = (RegistrationRepository) getContext().getBean(
"registration.registrationRepository");
}
/**
* @throws java.lang.Exception
*/
@After
public void tearDown() throws Exception {
smtpServer.stop();
}
@Test
public void testExecute() throws Exception {
User user = activateUserCommand.execute();
Assert.assertNull(user);
User newUser = new User("testingActivate", "testingActivate@globant.com");
userRepository.save(newUser);
RecoverPasswordRequest request = new RecoverPasswordRequest(newUser);
registrationRepository.saveRecoverPasswordRequest(request);
request = registrationRepository.findRecoverPasswordRequest(newUser.getId(),
request.getToken());
activateUserCommand.setUserId(newUser.getId());
activateUserCommand.setToken(request.getToken());
user = activateUserCommand.execute();
Assert.assertNotNull(user);
Assert.assertThat(user.getName(), is(newUser.getName()));
Assert.assertThat(user.getEmail(), is(newUser.getEmail()));
}
}