package org.axway.grapes.tests.acceptance.steps; import net.thucydides.core.pages.Pages; import org.axway.grapes.commons.datamodel.Dependency; import org.axway.grapes.commons.datamodel.Module; import org.axway.grapes.commons.datamodel.Scope; import org.axway.grapes.tests.acceptance.TestConfiguration; import org.axway.grapes.tests.acceptance.pages.ListPage; import org.axway.grapes.tests.acceptance.pages.ModulePage; import org.axway.grapes.tests.acceptance.pages.PromotionReportPage; import org.axway.grapes.utils.client.GrapesCommunicationException; import javax.naming.AuthenticationException; import java.util.List; import static com.thoughtworks.selenium.SeleneseTestCase.assertEquals; import static net.thucydides.core.matchers.BeanMatchers.the; import static net.thucydides.core.pages.PageObject.withParameters; import static org.hamcrest.Matchers.*; public class ModuleSteps extends GrapesAbstractSteps { private final TestConfiguration config = TestConfiguration.getInstance(); private PromotionReportPage promotionReportPage = getPages().get(PromotionReportPage.class); private ModulePage modulePage = getPages().get(ModulePage.class); private ListPage listPage = getPages().get(ListPage.class); public ModuleSteps(final Pages pages) { super(pages); promotionReportPage.setDefaultBaseUrl(config.getGrapesBaseUrl()); modulePage.setDefaultBaseUrl(config.getGrapesBaseUrl()); listPage.setDefaultBaseUrl(config.getGrapesBaseUrl()); } //OPEN NEW PAGES public void look_for_module(final String name, final String version) { modulePage.open("module.info", withParameters(name, version)); } public void look_for_module_names() { listPage.open("module.names", withParameters()); } public void look_for_module_versions(final String moduleName) { listPage.open("module.versions", withParameters(moduleName)); } public void look_for_module_dependencies(final String moduleName, final String moduleVersion) { listPage.open("module.dependencies", withParameters(moduleName, moduleVersion)); } public void look_for_product_thirdparty(final String moduleName, final String moduleVersion) { listPage.open("product.thirdparty", withParameters(moduleName, moduleVersion)); } public void look_for_module_ancestors(final String moduleName, final String moduleVersion) { listPage.open("module.ancestors", withParameters(moduleName, moduleVersion)); } public void look_for_product_dependency_report(final String moduleName, final String moduleVersion) { listPage.open("product.dependency.report", withParameters(moduleName, moduleVersion)); } public void look_for_product_licenses(final String moduleName, final String moduleVersion) { listPage.open("product.licenses", withParameters(moduleName, moduleVersion)); } public void getPromotionReport(final String moduleName, final String moduleVersion) { promotionReportPage.open("module.promotion.report.recursive", withParameters(moduleName, moduleVersion)); } // POST OR DELETE public void postModule(final Module module) throws GrapesCommunicationException, AuthenticationException { final TestConfiguration config = TestConfiguration.getInstance(); getClient().postModule(module, config.getGrapesNotifier(), config.getGrapesNotifierPwd()); } public void delete_module(final String moduleName, final String moduleVersion) throws GrapesCommunicationException, AuthenticationException { final TestConfiguration config = TestConfiguration.getInstance(); getClient().deleteModule(moduleName, moduleVersion, config.getGrapesNotifier(), config.getGrapesNotifierPwd()); } public void promoteModule(final String moduleName, final String moduleVersion) throws GrapesCommunicationException, AuthenticationException { final TestConfiguration config = TestConfiguration.getInstance(); getClient().promoteModule(moduleName, moduleVersion, config.getGrapesNotifier(), config.getGrapesNotifierPwd()); } // PAGE CHECKS public void should_display_module_info(final String name, final String version) { modulePage.displays_name(name); modulePage.displays_version(version); } public void should_display_module_artifact(final String artifactGroupid, final String artifactId, final String artifactVersion, final String artifactClassifier, final String artifactType, final String artifactExtension) { modulePage.has_artifact(the("GroupId", is(artifactGroupid)), the("ArtifactId", is(artifactId)), the("Version", is(artifactVersion)), the("Classifier", is(artifactClassifier)), the("Type", is(artifactType)), the("Extension", is(artifactExtension))); } public void should_display_module_names(final List<String> names) { for(String name: names){ listPage.has_info(the("name", is(name))); } } public void should_display_module_versions(final List<String> versions) { for(String version: versions){ listPage.has_info(the("version", is(version))); } } public void should_display_module_dependencies(final List<Dependency> dependencies) { for(Dependency dependency: dependencies){ listPage.has_info(the("Target", equalTo(dependency.getTarget().getGavc())), the("Scope", equalTo(dependency.getScope().toString().toLowerCase()))); } } public void should_display_module_ancestor(final Module ancestor, final String target, final Scope scope) { listPage.has_info(the("Source", containsString(ancestor.getName())), the("Target", equalTo(target)), the("Scope", equalTo(scope.toString().toLowerCase()))); } public void should_be_promoted() { modulePage.is_promoted(); } public void should_get_error_404() { assertEquals("Error 404 Not Found", modulePage.getTitle()); } public void should_see_not_up_to_date(final String groupId, final String artifactId , final String currentVersion, final String lastVersion) { listPage.has_info(the("GroupId", equalTo(groupId)), the("ArtifactId", equalTo(artifactId)), the("Last Release Version", equalTo(lastVersion)), the("Current Version", equalTo(currentVersion))); } public void should_see_license(final String licenseName) { listPage.has_info(the("license", containsString(licenseName))); } public void checkThatTheReportSayingOk() { promotionReportPage.promotionIsPossible(); } public void checkPromotionReportFailures(final List<String> shouldNotBeUsed, final List<String> hasToBePromoted) { promotionReportPage.promotionIsNotPossible(); promotionReportPage.shouldNotBeUsed(shouldNotBeUsed); promotionReportPage.hasToBePromoted(hasToBePromoted); } }