package org.axway.grapes.tests.acceptance.stories;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
import org.axway.grapes.tests.acceptance.TestConfiguration;
import org.axway.grapes.tests.acceptance.materials.TestCaseLoader;
import org.axway.grapes.tests.acceptance.materials.cases.*;
import org.axway.grapes.utils.client.GrapesCommunicationException;
import org.jbehave.core.annotations.AfterStories;
import org.jbehave.core.annotations.BeforeScenario;
import org.jbehave.core.annotations.Given;
import javax.naming.AuthenticationException;
public class AbstractStory {
public final static TestCaseLoader dbClient = TestCaseLoader.getInstance();
@BeforeScenario
@AfterStories
public void cleanDb(){
dbClient.dropDatabase();
}
@AfterStories
public void shutdownGrapes() {
final TestConfiguration config = TestConfiguration.getInstance();
final ClientConfig cfg = new DefaultClientConfig();
cfg.getProperties().put(ClientConfig.PROPERTY_READ_TIMEOUT, 60000);
cfg.getClasses().add(com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider.class);
final Client jerseyClient = Client.create(cfg);
jerseyClient.addFilter(new HTTPBasicAuthFilter(config.getGrapesAdminUser(), config.getGrapesAdminPassword()));
final StringBuilder serverURL = new StringBuilder();
serverURL.append("http://");
serverURL.append(config.getGrapesHost());
serverURL.append(":");
serverURL.append(config.getGrapesAdminPort());
serverURL.append("/tasks/kill");
try{
jerseyClient.resource(serverURL.toString()).post(ClientResponse.class);
}
catch (Exception e){
//
}
}
@Given("$testCaseName loaded in the database")
public void loadSimpleModuleCase(final String testCaseName) throws AuthenticationException, GrapesCommunicationException {
final TestCase testCase = resolveTestCase(testCaseName);
dbClient.loadTestCase(testCase);
}
public final TestCase resolveTestCase(final String name){
if(name.equalsIgnoreCase("SimpleModuleCase")){
return new TC01_SimpleModuleCase();
}
if(name.equalsIgnoreCase("ModuleWithAllKindOfDependenciesCase")){
return new TC02_ModuleWithAllKindOfDependenciesCase();
}
if(name.equalsIgnoreCase("SimpleAncestorCase")){
return new TC03_SimpleAncestorCase();
}
if(name.equalsIgnoreCase("ProductCase")){
return new TC04_ProductCase();
}
return null;
}
}