package org.jboss.tools.maven.ui.bot.test.repository;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.hasItem;
import java.util.Arrays;
import java.util.List;
import org.jboss.reddeer.workbench.ui.dialogs.WorkbenchPreferenceDialog;
import org.jboss.tools.maven.reddeer.maven.ui.preferences.ConfiguratorPreferencePage;
import org.jboss.tools.maven.reddeer.wizards.ConfigureMavenRepositoriesWizard;
import org.jboss.tools.maven.ui.bot.test.AbstractMavenSWTBotTest;
import org.jboss.tools.maven.ui.bot.test.utils.RepositoryExists;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class MavenRepositories extends AbstractMavenSWTBotTest{
private static final String EAP_REPO = "redhat-ga-repository";
private static final String JBOSS_REPO = "jboss-public-repository";
private static final String BINTRAY = "bintray";
private static final String SPRINGSOURCE_EXTERNAL = "com-springsource-repository-bundles-external";
private static final String SPRINGSOURCE = "com-springsource-repository-bundles-release";
private static final String JAVANET = "java-net-public";
private static final String APACHE = "repository-apache-org";
private static final String EMPTY = "";
@BeforeClass
public static void setup(){
WorkbenchPreferenceDialog preferenceDialog = new WorkbenchPreferenceDialog();
preferenceDialog.open();
ConfiguratorPreferencePage jm = new ConfiguratorPreferencePage();
preferenceDialog.select(jm);
ConfigureMavenRepositoriesWizard mr = jm.configureRepositories();
boolean deleted = mr.removeAllRepos();
if(deleted){
mr.confirm();
} else {
mr.cancel();
}
preferenceDialog.ok();
}
@AfterClass
public static void clean(){
WorkbenchPreferenceDialog preferenceDialog = new WorkbenchPreferenceDialog();
preferenceDialog.open();
ConfiguratorPreferencePage jm = new ConfiguratorPreferencePage();
preferenceDialog.select(jm);
ConfigureMavenRepositoriesWizard mr = jm.configureRepositories();
boolean deleted = mr.removeAllRepos();
if(deleted){
mr.confirm();
} else {
mr.cancel();
}
preferenceDialog.ok();
}
@Test
public void checkPredefinedRepositories(){
WorkbenchPreferenceDialog preferenceDialog = new WorkbenchPreferenceDialog();
preferenceDialog.open();
ConfiguratorPreferencePage jm = new ConfiguratorPreferencePage();
preferenceDialog.select(jm);
ConfigureMavenRepositoriesWizard mr = jm.configureRepositories();
List<String> repositories = mr.getRepositoriesList();
List<String> expected = Arrays.asList(EAP_REPO,JBOSS_REPO,BINTRAY,SPRINGSOURCE,SPRINGSOURCE_EXTERNAL,JAVANET,APACHE, EMPTY);
mr.cancel();
preferenceDialog.cancel();
for(String ex: expected){
assertThat(ex+" repository is missing in wizard choices",repositories, hasItem(ex));
}
assertEquals(expected.size(),repositories.size());
}
@Test
public void modifyEAPRepo(){
String repoId = addRepo(EAP_REPO);
assertTrue("EAP Repository is missing in Maven repositories view", new RepositoryExists(EAP_REPO).test());
editRepo(repoId);
assertTrue("EAP Repository is present in Maven repositories view", new RepositoryExists(EAP_REPO).test());
removeRepo(repoId+" (Inactive)");
assertFalse("EAP Repository is still present in Maven repositories view", new RepositoryExists(EAP_REPO).test());
}
@Test
public void modifyJBossRepo(){
String repoId = addRepo(JBOSS_REPO);
assertTrue("JBoss Repository is missing in Maven repositories view", new RepositoryExists(JBOSS_REPO).test());
editRepo(repoId);
assertTrue("JBOSS Repository is present in Maven repositories view", new RepositoryExists(JBOSS_REPO).test());
removeRepo(repoId+" (Inactive)");
assertFalse("JBoss Repository is missing in Maven repositories view", new RepositoryExists(JBOSS_REPO).test());
}
public String addRepo(String repo){
WorkbenchPreferenceDialog preferenceDialog = new WorkbenchPreferenceDialog();
preferenceDialog.open();
ConfiguratorPreferencePage jm = new ConfiguratorPreferencePage();
preferenceDialog.select(jm);
ConfigureMavenRepositoriesWizard mr = jm.configureRepositories();
String repoId = mr.chooseRepositoryFromList(repo,true,false);
mr.confirm();
jm.apply();
preferenceDialog.ok();
return repoId;
}
public void editRepo(String repoId){
WorkbenchPreferenceDialog preferenceDialog = new WorkbenchPreferenceDialog();
preferenceDialog.open();
ConfiguratorPreferencePage jm = new ConfiguratorPreferencePage();
preferenceDialog.select(jm);
ConfigureMavenRepositoriesWizard mr = jm.configureRepositories();
mr.editRepo(repoId, false, null, null, null);
mr.confirm();
jm.apply();
preferenceDialog.ok();
}
public void removeRepo(String repoId){
WorkbenchPreferenceDialog preferenceDialog = new WorkbenchPreferenceDialog();
preferenceDialog.open();
ConfiguratorPreferencePage jm = new ConfiguratorPreferencePage();
preferenceDialog.select(jm);
ConfigureMavenRepositoriesWizard mr = jm.configureRepositories();
mr.removeRepo(repoId);
mr.confirm();
preferenceDialog.ok();
}
}