blob: a0f22c6a7d0c571a4eaacc791ab232fa0f25f49b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015, 2016 Christian Gaege and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christian Gaege - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.hudson.tests.client;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.eclipse.mylyn.commons.repositories.core.RepositoryLocation;
import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil.PrivilegeLevel;
import org.eclipse.mylyn.hudson.tests.support.HudsonFixture;
import org.eclipse.mylyn.hudson.tests.support.HudsonHarness;
import org.eclipse.mylyn.internal.hudson.core.client.HudsonException;
import org.eclipse.mylyn.internal.hudson.core.client.HudsonUrlUtil;
import org.eclipse.mylyn.internal.hudson.core.client.RestfulHudsonClient;
import org.junit.Assert;
import junit.framework.TestCase;
/**
* @author Christian Gaege
*/
public class HudsonUrlUtilTest extends TestCase {
private HudsonUrlUtil hudsonUrlUtil;
private HudsonHarness harness;
private RepositoryLocation repositoryLocation;
@Override
protected void setUp() throws Exception {
harness = HudsonFixture.current().createHarness();
RestfulHudsonClient client = harness.connect(PrivilegeLevel.ANONYMOUS);
repositoryLocation = client.getLocation();
hudsonUrlUtil = new HudsonUrlUtil(repositoryLocation);
}
public void testBaseUrl() {
Assert.assertEquals(repositoryLocation.getUrl(), hudsonUrlUtil.baseUrl());
}
public void testAssembleJobUrl() throws HudsonException {
String jobName = harness.getPlanNestedTwo();
String folderUrl = repositoryLocation.getUrl();
String expectedJobUrl = folderUrl + "job/" + jobName + "/";
Assert.assertEquals(expectedJobUrl, hudsonUrlUtil.assembleJobUrl(jobName, folderUrl));
}
public void testAssembleJobUrlWithWhitespace() throws HudsonException, URISyntaxException {
String jobName = harness.getPlanWhitespace();
String folderUrl = repositoryLocation.getUrl();
String encodedJobName = new URI(null, jobName, null).toASCIIString();
String expectedJobUrl = folderUrl + "job/" + encodedJobName + "/";
Assert.assertEquals(expectedJobUrl, hudsonUrlUtil.assembleJobUrl(jobName, folderUrl));
}
public void testGroupJobNamesByFolderUrlWithoutJobUrls() throws HudsonException {
Map<String, List<String>> jobNamesByFolderUrl = hudsonUrlUtil.groupJobNamesByFolderUrl(new ArrayList<String>());
Assert.assertNotNull(jobNamesByFolderUrl);
Assert.assertTrue(jobNamesByFolderUrl.isEmpty());
}
public void testGroupJobNameByFolderUrlWithJobUrlIds() throws HudsonException {
String baseUrl = repositoryLocation.getUrl();
String folderUrl = baseUrl + "job/test-folder/";
String subFolderUrl = folderUrl + "job/test-sub-folder/";
List<String> jobIds = new ArrayList<String>();
jobIds.add(baseUrl + "job/test-succeeding/");
jobIds.add(baseUrl + "job/test-white%20space/");
jobIds.add(folderUrl + "job/test-nested-one/");
jobIds.add(subFolderUrl + "job/test-nested-two/");
Map<String, List<String>> jobNamesByFolderUrl = hudsonUrlUtil.groupJobNamesByFolderUrl(jobIds);
Assert.assertNotNull(jobNamesByFolderUrl);
Assert.assertEquals(3, jobNamesByFolderUrl.keySet().size());
Assert.assertTrue(jobNamesByFolderUrl.containsKey(baseUrl));
List<String> baseUrlJobs = jobNamesByFolderUrl.get(baseUrl);
Assert.assertNotNull(baseUrlJobs);
Assert.assertTrue(baseUrlJobs.contains("test-succeeding"));
Assert.assertTrue(baseUrlJobs.contains("test-white space"));
Assert.assertTrue(jobNamesByFolderUrl.containsKey(baseUrl));
List<String> folderUrlJobs = jobNamesByFolderUrl.get(folderUrl);
Assert.assertNotNull(folderUrlJobs);
Assert.assertTrue(folderUrlJobs.contains("test-nested-one"));
Assert.assertTrue(jobNamesByFolderUrl.containsKey(baseUrl));
List<String> subFolderUrlJobs = jobNamesByFolderUrl.get(subFolderUrl);
Assert.assertNotNull(subFolderUrlJobs);
Assert.assertTrue(subFolderUrlJobs.contains("test-nested-two"));
}
public void testGroupJobNameByFolderUrlWithJobNameIds() throws HudsonException {
String baseUrl = repositoryLocation.getUrl();
List<String> jobIds = new ArrayList<String>();
jobIds.add(harness.getPlanGit());
jobIds.add(harness.getPlanWhitespace());
Map<String, List<String>> jobNamesByFolderUrl = hudsonUrlUtil.groupJobNamesByFolderUrl(jobIds);
Assert.assertNotNull(jobNamesByFolderUrl);
Assert.assertEquals(1, jobNamesByFolderUrl.keySet().size());
List<String> baseUrlJobs = jobNamesByFolderUrl.get(baseUrl);
Assert.assertNotNull(baseUrlJobs);
Assert.assertTrue(baseUrlJobs.contains(harness.getPlanGit()));
Assert.assertTrue(baseUrlJobs.contains(harness.getPlanWhitespace()));
}
public void testGroupJobNameByFolderUrlWithJobNameIdsAndJobUrlIds() throws HudsonException {
String baseUrl = repositoryLocation.getUrl();
String folderUrl = baseUrl + "job/test-folder/";
List<String> jobIds = new ArrayList<String>();
jobIds.add(harness.getPlanGit());
jobIds.add(harness.getPlanWhitespace());
jobIds.add(baseUrl + "job/test-succeeding/");
jobIds.add(folderUrl + "job/test-nested-one/");
Map<String, List<String>> jobNamesByFolderUrl = hudsonUrlUtil.groupJobNamesByFolderUrl(jobIds);
Assert.assertNotNull(jobNamesByFolderUrl);
Assert.assertEquals(2, jobNamesByFolderUrl.keySet().size());
List<String> baseUrlJobs = jobNamesByFolderUrl.get(baseUrl);
Assert.assertNotNull(baseUrlJobs);
Assert.assertTrue(baseUrlJobs.contains(harness.getPlanGit()));
Assert.assertTrue(baseUrlJobs.contains(harness.getPlanWhitespace()));
Assert.assertTrue(baseUrlJobs.contains("test-succeeding"));
List<String> folderUrlJobs = jobNamesByFolderUrl.get(folderUrl);
Assert.assertNotNull(folderUrlJobs);
Assert.assertTrue(folderUrlJobs.contains("test-nested-one"));
}
public void testGetJobUrlFromJobIdWithJobName() throws HudsonException {
String jobId = harness.getPlanGit();
String expectedJobUrl = repositoryLocation.getUrl() + "job/" + jobId + "/";
String jobUrl = hudsonUrlUtil.getJobUrlFromJobId(jobId);
Assert.assertEquals(expectedJobUrl, jobUrl);
}
public void testGetJobUrlFromJobIdWithJobUrl() throws HudsonException {
String jobId = this.repositoryLocation.getUrl() + "job/" + harness.getPlanSucceeding() + "/";
String jobUrl = hudsonUrlUtil.getJobUrlFromJobId(jobId);
Assert.assertEquals(jobId, jobUrl);
}
public void testGetJobUrlFromJobIdWithNestedJobUrl() throws HudsonException {
String jobId = this.repositoryLocation.getUrl() + "job/" + harness.getPlanFolder() + "/job/"
+ harness.getPlanNestedOne() + "/";
String jobUrl = hudsonUrlUtil.getJobUrlFromJobId(jobId);
Assert.assertEquals(jobId, jobUrl);
}
public void testIsNestedJobWithNestedJob() {
String nestedJobId = this.repositoryLocation.getUrl() + "job/" + harness.getPlanFolder() + "/job/"
+ harness.getPlanNestedOne() + "/";
Assert.assertTrue(hudsonUrlUtil.isNestedJob(nestedJobId));
}
public void testIsNestedJobWithTopLevelJob() {
String topLevelJobId = this.repositoryLocation.getUrl() + "job/" + harness.getPlanSucceeding() + "/";
Assert.assertFalse(hudsonUrlUtil.isNestedJob(topLevelJobId));
}
public void testGetDisplayNameWithTopLevelJob() throws HudsonException {
String nestedJobUrl = this.repositoryLocation.getUrl() + "job/" + harness.getPlanSucceeding() + "/";
String expectedDisplayName = harness.getPlanSucceeding();
Assert.assertEquals(expectedDisplayName, hudsonUrlUtil.getDisplayName(nestedJobUrl));
}
public void testGetDisplayNameWithNestedJob() throws HudsonException {
String nestedJobUrl = this.repositoryLocation.getUrl() + "job/" + harness.getPlanFolder() + "/job/"
+ harness.getPlanNestedOne() + "/";
String expectedDisplayName = harness.getPlanFolder() + "/" + harness.getPlanNestedOne();
Assert.assertEquals(expectedDisplayName, hudsonUrlUtil.getDisplayName(nestedJobUrl));
}
public void testGetDisplayNameWithJobNamedJob() throws HudsonException {
String nestedJobUrl = this.repositoryLocation.getUrl() + "job/job/";
String expectedDisplayName = "job";
Assert.assertEquals(expectedDisplayName, hudsonUrlUtil.getDisplayName(nestedJobUrl));
}
public void testGetDisplayNameWithFolderAndJobNamedJob() throws HudsonException {
String nestedJobUrl = this.repositoryLocation.getUrl() + "job/job/job/job/";
String expectedDisplayName = "job/job";
Assert.assertEquals(expectedDisplayName, hudsonUrlUtil.getDisplayName(nestedJobUrl));
}
public void testGetDisplayNameWithWhitespace() throws URISyntaxException, HudsonException {
String jobUrl = new URI(null, this.repositoryLocation.getUrl() + "job/" + harness.getPlanWhitespace() + "/",
null).toASCIIString();
String expectedDisplayName = harness.getPlanWhitespace();
Assert.assertEquals(expectedDisplayName, hudsonUrlUtil.getDisplayName(jobUrl));
}
}