package de.twenty11.skysail.server.ext.notes;
import javax.persistence.EntityManagerFactory;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.util.Factory;
import org.jbehave.core.annotations.BeforeStory;
import org.restlet.Component;
import org.restlet.data.Protocol;
import de.twenty11.skysail.server.ResourceTestWithUnguardedAppication;
import de.twenty11.skysail.server.internal.SkysailComponent;
import de.twenty11.skysail.server.um.domain.SkysailUser;
import de.twenty11.skysail.server.um.repos.UserRepository;
import de.twenty11.skysail.server.um.services.UserManager;
public class AcceptanceTests extends ResourceTestWithUnguardedAppication<NotesApplication> {
protected static Component component = new SkysailComponent();
private UserManager userManagerForTests;
static {
component.getServers().add(Protocol.HTTP, TEST_PORT);
try {
component.start();
} catch (Exception e) {
e.printStackTrace();
}
}
private class UserManagerForTests implements UserManager {
private UserRepository userRepository;
public UserManagerForTests(EntityManagerFactory enitityManagerFactory) {
userRepository = new UserRepository(enitityManagerFactory);
}
@Override
public SkysailUser findByUsername(String username) {
return userRepository.getByName(username);
}
}
@BeforeStory
public void setUp() {
de.twenty11.skysail.server.um.db.FlywaySetup flywaySetupUm = new de.twenty11.skysail.server.um.db.FlywaySetup();
flywaySetupUm.setEntityManager(getEmfForTests("NotesPU"));
flywaySetupUm.setLocation("dbmig/server_um/derby");
flywaySetupUm.init();
de.twenty11.skysail.server.ext.notes.db.FlywaySetup flywaySetupNotes = new de.twenty11.skysail.server.ext.notes.db.FlywaySetup();
flywaySetupNotes.setEntityManager(getEmfForTests("NotesPU"));
flywaySetupNotes.setLocation("dbmig/server_ext_notes/derby");
flywaySetupNotes.init();
userManagerForTests = new UserManagerForTests(getEmfForTests("NotesPU"));
application = (NotesApplication) setUpApplication(new NotesApplication());
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
application.setEntityManager(getEmfForTests("NotesPU"));
// UserManager userManager = Mockito.mock(UserManager.class);
// Mockito.when(userManager.findByUsername(org.mockito.Matchers.anyString())).thenReturn(new SkysailUser());
application.setUserManager(userManagerForTests);
component.getDefaultHost().attach(application);
}
}