package hudson.plugins.tfs.model;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.microsoft.teamfoundation.core.webapi.model.TeamProjectReference;
import com.microsoft.visualstudio.services.webapi.model.IdentityRef;
import hudson.plugins.tfs.model.servicehooks.Event;
import hudson.plugins.tfs.model.servicehooks.ResourceContainer;
import hudson.plugins.tfs.util.EndpointHelper;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Assert;
import org.junit.Test;
import java.net.URI;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
/**
* A class to test {@link GitPushEvent}.
*/
public class GitPushEventTest {
@Test
public void determineCollectionUri_sample() throws Exception {
final URI input = URI.create("https://fabrikam-fiber-inc.visualstudio.com/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249");
final URI actual = GitPushEvent.determineCollectionUri(input);
final URI expected = URI.create("https://fabrikam-fiber-inc.visualstudio.com/");
Assert.assertEquals(expected, actual);
}
@Test
public void perform_noCommitsInPayload() throws Exception {
final GitPushEvent gpe = new GitPushEvent();
final ObjectMapper mapper = EndpointHelper.MAPPER;
final Event event = new Event();
final ResourceContainer collectionResourceContainer = new ResourceContainer() {{
setId(UUID.fromString("c12d0eb8-e382-443b-9f9c-c52cba5014c2"));
}};
final Map<String, ResourceContainer> resourceContainers = new LinkedHashMap<String, ResourceContainer>() {{
put("collection", collectionResourceContainer);
}};
event.setResourceContainers(resourceContainers);
final TeamProjectReference project = new TeamProjectReference() {{
setName("Fabrikam-Fiber-Git");
}};
final Map<String, Object> repository = new LinkedHashMap<String, Object>() {{
put("url", "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249");
put("project", project);
put("remoteUrl", "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_git/Fabrikam-Fiber-Git");
}};
final IdentityRef pushedBy = new IdentityRef() {{
setDisplayName("Jamal Hartnett");
}};
final Map<String, Object> resource = new LinkedHashMap<String, Object>() {{
put("commits", null);
put("repository", repository);
put("pushedBy", pushedBy);
}};
event.setResource(resource);
final JSONObject actual = gpe.perform(mapper, event, null, null);
final JSONArray messages = actual.getJSONArray("messages");
Assert.assertEquals(1, messages.size());
final String message = messages.getString(0).trim();
Assert.assertEquals("No commits were pushed, skipping further event processing.", message);
}
}