package org.axway.grapes.utils.client;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
import com.google.common.collect.Lists;
import com.sun.jersey.api.client.ClientResponse.Status;
import org.axway.grapes.commons.api.ServerAPI;
import org.axway.grapes.commons.datamodel.*;
import org.axway.grapes.commons.utils.JsonUtils;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
import javax.naming.AuthenticationException;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import java.io.IOException;
import java.util.*;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
import static org.junit.Assert.*;
public class GrapesClientTest {
public static final String PROPERTY_PORT = "server.mock.http.port";
private static final String DEFAULT_PORT = "8074";
@ClassRule
public static WireMockRule wireMockRule = new WireMockRule(Integer.valueOf(System.getProperty(PROPERTY_PORT, DEFAULT_PORT)));
private static GrapesClient client;
private static String serverPort;
@BeforeClass
public static void startMock() throws IOException, InterruptedException{
serverPort = System.getProperty(PROPERTY_PORT, DEFAULT_PORT);
client = new GrapesClient("127.0.0.1", serverPort);
client.setTimeout(1000);
}
@Test
public void checkServerUrl() {
GrapesClient grapesClient = new GrapesClient("host", null);
assertEquals("http://host/", grapesClient.getServerURL());
grapesClient = new GrapesClient("host", "");
assertEquals("http://host/", grapesClient.getServerURL());
grapesClient = new GrapesClient("host", "12345");
assertEquals("http://host:12345/", grapesClient.getServerURL());
}
@Test
public void serverIsAvailable() {
stubFor(get(urlEqualTo("/"))
.willReturn(aResponse()
.withStatus(Status.OK.getStatusCode())));
assertTrue(client.isServerAvailable());
}
@Test
public void serverIsNotAvailable() {
stubFor(get(urlEqualTo("/"))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
assertFalse(client.isServerAvailable());
}
@Test
public void postModule() throws IOException, AuthenticationException{
Module module1 = DataModelFactory.createModule("module", "1.0.0-SNAPSHOT");
Artifact artifact1 = DataModelFactory.createArtifact("com.axway.test", "artifact1", "1.0.0-SNAPSHOT", "win32", "jar", "");
Artifact artifact2 = DataModelFactory.createArtifact("com.axway.test", "artifact2", "1.0.0-SNAPSHOT", "win32", "jar", "");
Artifact dependency = DataModelFactory.createArtifact("com.axway.test", "dependency", "1.0.0-SNAPSHOT", "win32", "jar", "");
module1.addDependency(DataModelFactory.createDependency(artifact2,Scope.COMPILE));
module1.addDependency(DataModelFactory.createDependency(dependency, Scope.TEST));
module1.addArtifact(artifact1);
module1.addArtifact(artifact2);
stubFor(post(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE))
.withRequestBody(equalTo(JsonUtils.serialize(module1)))
.willReturn(aResponse()
.withStatus(Status.CREATED.getStatusCode())));
Exception exception = null;
try{
client.postModule(module1, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void postModuleAuthFailes() throws IOException, AuthenticationException{
Module module1 = DataModelFactory.createModule("module", "1.0.0-SNAPSHOT");
Exception exception = null;
try{
client.postModule(module1, null, null);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void postModuleFailed() throws AuthenticationException{
Module module1 = DataModelFactory.createModule("module", "1.0.0-SNAPSHOT");
Artifact artifact1 = DataModelFactory.createArtifact("com.axway.test", "artifact1", "1.0.0-SNAPSHOT", "win32", "jar", "");
Artifact artifact2 = DataModelFactory.createArtifact("com.axway.test", "artifact2", "1.0.0-SNAPSHOT", "win32", "jar", "");
Artifact dependency = DataModelFactory.createArtifact("com.axway.test", "dependency", "1.0.0-SNAPSHOT", "win32", "jar", "");
module1.addDependency(DataModelFactory.createDependency(artifact2,Scope.COMPILE));
module1.addDependency(DataModelFactory.createDependency(dependency, Scope.TEST));
module1.addArtifact(artifact1);
module1.addArtifact(artifact2);
stubFor(post(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE))
.willReturn(aResponse()
.withStatus(Status.NOT_ACCEPTABLE.getStatusCode())));
GrapesCommunicationException exception = null;
try{
client.postModule(module1, "user", "password");
}catch (GrapesCommunicationException e) {
exception = e;
}
assertNotNull(exception);
assertEquals(Status.NOT_ACCEPTABLE.getStatusCode(), exception.getHttpStatus());
}
@Test
public void deleteModule(){
String moduleName = "module";
String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(delete(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion))
.willReturn(aResponse()
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
try{
client.deleteModule(moduleName, moduleVersion, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void deleteModuleNotFound(){
String moduleName = "module";
String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(delete(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.deleteModule(moduleName, moduleVersion, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getModule() throws IOException{
String moduleName = "module";
String moduleVersion = "1.0.0-SNAPSHOT";
Module module1 = DataModelFactory.createModule(moduleName, moduleVersion);
Artifact artifact1 = DataModelFactory.createArtifact("com.axway.test", "artifact1", "1.0.0-SNAPSHOT", "win32", "jar", "");
Artifact artifact2 = DataModelFactory.createArtifact("com.axway.test", "artifact2", "1.0.0-SNAPSHOT", "win32", "jar", "");
Artifact dependency = DataModelFactory.createArtifact("com.axway.test", "dependency", "1.0.0-SNAPSHOT", "win32", "jar", "");
module1.addDependency(DataModelFactory.createDependency(artifact2,Scope.COMPILE));
module1.addDependency(DataModelFactory.createDependency(dependency, Scope.TEST));
module1.addArtifact(artifact1);
module1.addArtifact(artifact2);
stubFor(get(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(module1))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
Module module2= null;
try{
module2 = client.getModule(moduleName, moduleVersion);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(module2);
assertEquals(module1, module2);
}
@Test
public void getModuleNotFound(){
String moduleName = "module";
String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(get(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getModule(moduleName, moduleVersion);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getModules() throws IOException{
String moduleName = "module";
String moduleVersion = "1.0.0-SNAPSHOT";
Module module1 = DataModelFactory.createModule(moduleName, moduleVersion);
stubFor(get(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + ServerAPI.GET_ALL + "?test=test.test"))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(Collections.singletonList(module1)))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
List<Module> modules = null;
try{
modules = client.getModules(Collections.singletonMap("test", "test.test"));
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(modules);
assertEquals(1, modules.size());
assertEquals(module1, modules.get(0));
}
@Test
public void getModulesNotFound() throws IOException{
stubFor(get(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + ServerAPI.GET_ALL + "?test=test.test"))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getModules(Collections.singletonMap("test", "test.test"));
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getModuleVersions() throws IOException{
final String moduleName = "testModule";
final List<String> versions = Lists.newArrayList("1", "2", "3");
stubFor(get(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + ServerAPI.GET_VERSIONS))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(versions))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
List<String> gotVersions = null;
try{
gotVersions = client.getModuleVersions(moduleName);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(gotVersions);
assertEquals(versions.size(), gotVersions.size());
}
@Test
public void getModuleVersionsNotFound() throws IOException{
stubFor(get(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/doesNotExit" + ServerAPI.GET_VERSIONS))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getModuleVersions("doesNotExit");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getModulePromotionStatus() throws IOException{
final String moduleName = "testModule";
final String moduleVersion = "1.2.0-3";
stubFor(get(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.PROMOTION))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(Boolean.TRUE))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
Boolean promotionStatus = null;
try{
promotionStatus = client.getModulePromotionStatus(moduleName, moduleVersion);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(promotionStatus);
assertTrue(promotionStatus);
}
@Test
public void getModulePromotionStatusNotFound() throws IOException{
stubFor(get(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/doesNotExit/1.0.0" + ServerAPI.PROMOTION))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(Boolean.TRUE))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
try{
client.getModulePromotionStatus("doesNotExist", "1.0.0");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void promoteModule(){
String moduleName = "module";
String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(post(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.PROMOTION))
.willReturn(aResponse()
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
try{
client.promoteModule(moduleName, moduleVersion, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void promoteModuleNotFound(){
String moduleName = "module";
String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(post(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.PROMOTION))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.promoteModule(moduleName, moduleVersion, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void isPromulgableModule(){
String moduleName = "module";
String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(get(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.PROMOTION + ServerAPI.GET_FEASIBLE))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody("true")
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
Boolean isPromulgable = null;
try{
isPromulgable = client.moduleCanBePromoted(moduleName, moduleVersion);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(isPromulgable);
assertTrue(isPromulgable);
}
@Test
public void isPromulgableModuleNotFound(){
String moduleName = "module";
String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(get(urlEqualTo("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.PROMOTION + ServerAPI.GET_FEASIBLE))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.moduleCanBePromoted(moduleName, moduleVersion);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void postArtifact() throws IOException{
Artifact artifact1 = DataModelFactory.createArtifact("com.axway.test", "artifact1", "1.0.0-SNAPSHOT", "win32", "jar", "");
stubFor(post(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE))
.withRequestBody(equalTo(JsonUtils.serialize(artifact1)))
.willReturn(aResponse()
.withStatus(Status.CREATED.getStatusCode())));
Exception exception = null;
try{
client.postArtifact(artifact1, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void postWrongArtifact() throws IOException{
Artifact artifact1 = DataModelFactory.createArtifact("com.axway.test", "artifact1", "1.0.0-SNAPSHOT", "win32", "jar", "");
stubFor(post(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE))
.withRequestBody(equalTo(JsonUtils.serialize(artifact1)))
.willReturn(aResponse()
.withStatus(Status.NOT_ACCEPTABLE.getStatusCode())));
Exception exception = null;
try{
client.postArtifact(artifact1, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void deleteArtifact(){
String gavc = "test:test:test:test:test:test";
stubFor(delete(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc))
.willReturn(aResponse()
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
try{
client.deleteArtifact(gavc, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void deleteArtifactNotFound(){
String gavc = "test:test:test:test:test:test";
stubFor(delete(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.deleteArtifact(gavc, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getArtifact() throws IOException{
String gavc = "com.axway.test:artifact1:1.0.0-SNAPSHOT:win32:jar";
Artifact artifact1 = DataModelFactory.createArtifact("com.axway.test", "artifact1", "1.0.0-SNAPSHOT", "win32", "jar", "");
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(artifact1))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
Artifact artifact2 = null;
try{
artifact2 = client.getArtifact(gavc);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(artifact2);
assertEquals(artifact1, artifact2);
}
@Test
public void getArtifactNotFound(){
String gavc = "com.axway.test:artifact1:1.0.0-SNAPSHOT:win32:jar";
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getArtifact(gavc);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getArtifacts() throws IOException{
Artifact artifact1 = DataModelFactory.createArtifact("org.axway.test", "artifact1", "1.0.0-SNAPSHOT", "win32", "jar", "");
List<Artifact> thirdpartyList = new ArrayList<Artifact>();
thirdpartyList.add(artifact1);
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + ServerAPI.GET_ALL + "?hasLicense=false"))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(thirdpartyList))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
List<Artifact> artifacts = null;
try{
artifacts = client.getArtifacts(false);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(artifacts);
assertEquals(1, artifacts.size());
}
@Test
public void getArtifactsNotFound() throws IOException{
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + ServerAPI.GET_ALL + "?hasLicense=false"))
.willReturn(aResponse().withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getArtifacts(false);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void licenseAddToArtifact(){
String gavc = "com.axway.test:artifact1:1.0.0-SNAPSHOT:win32:jar";
String licenseId = "licenseId";
stubFor(post(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc + ServerAPI.GET_LICENSES + "?" + ServerAPI.LICENSE_ID_PARAM + "=" + licenseId))
.willReturn(aResponse()
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
try{
client.addLicense(gavc, licenseId, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void licenseAddToArtifactNotFound(){
String gavc = "com.axway.test:artifact1:1.0.0-SNAPSHOT:win32:jar";
String licenseId = "licenseId";
stubFor(post(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc + ServerAPI.GET_LICENSES + "?" + ServerAPI.LICENSE_ID_PARAM + "=" + licenseId))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.addLicense(gavc, licenseId, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void postDoNotUseArtifact() throws IOException{
Artifact artifact1 = DataModelFactory.createArtifact("com.axway.test", "artifact1", "1.0.0-SNAPSHOT", "win32", "jar", "");
stubFor(post(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + artifact1.getGavc() + ServerAPI.SET_DO_NOT_USE + "?" + ServerAPI.DO_NOT_USE + "=true"))
.willReturn(aResponse()
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
try{
client.postDoNotUseArtifact(artifact1.getGavc(), true, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void postDoNotUseArtifactNotFound() throws IOException{
Artifact artifact1 = DataModelFactory.createArtifact("com.axway.test", "artifact1", "1.0.0-SNAPSHOT", "win32", "jar", "");
stubFor(post(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + artifact1.getGavc() + ServerAPI.SET_DO_NOT_USE + "?" + ServerAPI.DO_NOT_USE + "=true"))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.postDoNotUseArtifact(artifact1.getGavc(), true, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getArtifactVersions() throws IOException{
final String gavc = "com.my.company:test:1233:jar";
final List<String> versions = new ArrayList<String>();
versions.add("1.0.0");
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc + ServerAPI.GET_VERSIONS))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(versions))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
List<String> receivedVersions = null;
try{
receivedVersions = client.getArtifactVersions(gavc);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(receivedVersions);
assertEquals(1, receivedVersions.size());
assertEquals("1.0.0", receivedVersions.get(0));
}
@Test
public void getArtifactVersionsNotFound() throws IOException{
final String gavc = "com.my.company:test:1233:jar";
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc + ServerAPI.GET_VERSIONS))
.willReturn(aResponse().withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getArtifactVersions(gavc);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getArtifactLastVersion() throws IOException{
final String gavc = "com.my.company:test:1233:jar";
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc + ServerAPI.GET_LAST_VERSION))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody("1.0.0")
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
String lastVersion = null;
try{
lastVersion = client.getArtifactLastVersion(gavc);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(lastVersion);
assertEquals("1.0.0", lastVersion);
}
@Test
public void getArtifactLastVersionNotFound() throws IOException{
final String gavc = "com.my.company:test:1233:jar";
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc + ServerAPI.GET_LAST_VERSION))
.willReturn(aResponse().withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getArtifactLastVersion(gavc);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getArtifactModuleNotFound() throws IOException{
final String gavc = "com.my.company:test:1233:jar";
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc + ServerAPI.GET_MODULE))
.willReturn(aResponse().withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getArtifactModule(gavc);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getArtifactModuleButWithNoModule() throws IOException{
final String gavc = "com.my.company:test:1233:jar";
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc + ServerAPI.GET_MODULE))
.willReturn(aResponse().withStatus(Status.NO_CONTENT.getStatusCode())));
Exception exception = null;
try{
final Module module = client.getArtifactModule(gavc);
assertNull(module);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void getArtifactModule() throws IOException{
final Module module = DataModelFactory.createModule("name","1.2.3");
final String gavc = "com.my.company:test:1233:jar";
stubFor(get(urlEqualTo("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + gavc + ServerAPI.GET_MODULE))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(module))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
try{
final Module gotModule = client.getArtifactModule(gavc);
assertNotNull(gotModule);
assertEquals(module, gotModule);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void postLicense() throws IOException{
License license = DataModelFactory.createLicense("test", "longName", "comments", "regexp", "url");
stubFor(post(urlEqualTo("/" + ServerAPI.LICENSE_RESOURCE))
.withRequestBody(equalTo(JsonUtils.serialize(license)))
.willReturn(aResponse()
.withStatus(Status.CREATED.getStatusCode())));
Exception exception = null;
try{
client.postLicense(license, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void postWrongLicense() throws IOException{
License license = DataModelFactory.createLicense("test", "longName", "comments", "regexp", "url");
stubFor(post(urlEqualTo("/" + ServerAPI.LICENSE_RESOURCE))
.withRequestBody(equalTo(JsonUtils.serialize(license)))
.willReturn(aResponse()
.withStatus(Status.NOT_ACCEPTABLE.getStatusCode())));
Exception exception = null;
try{
client.postLicense(license, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void deleteLicense(){
License license = DataModelFactory.createLicense("test", "longName", "comments", "regexp", "url");
stubFor(delete(urlEqualTo("/" + ServerAPI.LICENSE_RESOURCE + "/" + license.getName()))
.willReturn(aResponse()
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
try{
client.deleteLicense(license.getName(), "user", "password");
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void deleteLicenseNotFound(){
License license = DataModelFactory.createLicense("test", "longName", "comments", "regexp", "url");
stubFor(delete(urlEqualTo("/" + ServerAPI.LICENSE_RESOURCE + "/" + license.getName()))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.deleteLicense(license.getName(), "user", "password");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getLicense() throws IOException {
License license1 = DataModelFactory.createLicense("test", "longName", "comments", "regexp", "url");
stubFor(get(urlEqualTo("/" + ServerAPI.LICENSE_RESOURCE + "/" + license1.getName()))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(license1))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
License license2 = null;
try{
license2 = client.getLicense(license1.getName());
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(license2);
assertEquals(license1, license2);
}
@Test
public void getLicenseNotFound() throws IOException {
License license1 = DataModelFactory.createLicense("test", "longName", "comments", "regexp", "url");
stubFor(get(urlEqualTo("/" + ServerAPI.LICENSE_RESOURCE + "/" + license1.getName()))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getLicense(license1.getName());
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void approveLicense() throws IOException {
License license1 = DataModelFactory.createLicense("test", "longName", "comments", "regexp", "url");
stubFor(post(urlEqualTo("/" + ServerAPI.LICENSE_RESOURCE + "/" + license1.getName() + "?" + ServerAPI.APPROVED_PARAM + "=true"))
.willReturn(aResponse()
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
try{
client.approveLicense(license1.getName(), true, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void approveLicenseNotFound() throws IOException {
License license1 = DataModelFactory.createLicense("test", "longName", "comments", "regexp", "url");
stubFor(post(urlEqualTo("/" + ServerAPI.LICENSE_RESOURCE + "/" + license1.getName() + "?" + ServerAPI.APPROVED_PARAM + "=true"))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.approveLicense(license1.getName(), true, "user", "password");
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getModuleAncestors() throws IOException {
final List<Dependency> list = new ArrayList<Dependency>();
final Dependency dependency = DataModelFactory.createDependency(DataModelFactory.createArtifact("", "ancestor", "", "", "", ""), Scope.COMPILE);
list.add(dependency);
final String moduleName = "module";
final String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(get(urlMatching("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.GET_ANCESTORS + "?.*"))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(list))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
List<Dependency> list2 = null;
try{
list2 = client.getModuleAncestors(moduleName, moduleVersion);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(list2);
}
@Test
public void getModuleAncestorsNotFound() throws IOException {
final String moduleName = "module";
final String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(get(urlMatching("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.GET_ANCESTORS + "?.*"))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getModuleAncestors(moduleName, moduleVersion);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getModuleDependencies() throws IOException {
final List<Dependency> list = new ArrayList<Dependency>();
final Dependency dependency = DataModelFactory.createDependency(DataModelFactory.createArtifact("", "target", "", "", "", ""), Scope.COMPILE);
list.add(dependency);
final String moduleName = "module";
final String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(get(urlMatching("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.GET_DEPENDENCIES + "?.*"))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(list))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
List<Dependency> list2 = null;
try{
list2 = client.getModuleDependencies(moduleName, moduleVersion, false, true, true);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(list2);
}
@Test
public void getModuleDependenciesNotFound() throws IOException {
final String moduleName = "module";
final String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(get(urlMatching("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.GET_DEPENDENCIES + "?.*"))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getModuleDependencies(moduleName, moduleVersion, false, true, true);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getModuleOrganization() throws IOException {
final String moduleName = "module";
final String moduleVersion = "1.0.0-SNAPSHOT";
final Organization organization = DataModelFactory.createOrganization("organizationTest");
stubFor(get(urlMatching("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.GET_ORGANIZATION))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(organization))
.withStatus(Status.OK.getStatusCode())));
Exception exception = null;
Organization receivedOrganization = null;
try{
receivedOrganization = client.getModuleOrganization(moduleName,moduleVersion);
}catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(receivedOrganization);
assertEquals(organization, receivedOrganization);
}
@Test
public void getModuleOrganizationNotFound() throws IOException {
final String moduleName = "module";
final String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(get(urlMatching("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.GET_ORGANIZATION))
.willReturn(aResponse()
.withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try{
client.getModuleOrganization(moduleName, moduleVersion);
}catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void postBuildInfo() throws IOException {
final String moduleName = "module";
final String moduleVersion = "1.0.0-SNAPSHOT";
final Map<String, String> buildInfo = new HashMap<String, String>();
buildInfo.put("test", "test.test");
stubFor(post(urlMatching("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.GET_BUILD_INFO))
.willReturn(aResponse().withStatus(Status.CREATED.getStatusCode())));
Exception exception = null;
try {
client.postBuildInfo(moduleName, moduleVersion, buildInfo, "user", "pwd");
} catch (Exception e) {
exception = e;
}
assertNull(exception);
}
@Test
public void postBuildInfoNotFound() throws IOException {
final String moduleName = "module";
final String moduleVersion = "1.0.0-SNAPSHOT";
final Map<String, String> buildInfo = new HashMap<String, String>();
buildInfo.put("test", "test.test");
stubFor(post(urlMatching("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.GET_BUILD_INFO))
.willReturn(aResponse().withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try {
client.postBuildInfo(moduleName, moduleVersion, buildInfo, null, null);
} catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getBuildInfo() throws IOException {
final String moduleName = "module";
final String moduleVersion = "1.0.0-SNAPSHOT";
final Map<String, String> buildInfo = new HashMap<String, String>();
buildInfo.put("test", "test.test");
stubFor(get(urlMatching("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.GET_BUILD_INFO))
.willReturn(aResponse()
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody(JsonUtils.serialize(buildInfo))
.withStatus(Status.OK.getStatusCode())));
Map<String, String> gotBuildInfo= null;
Exception exception = null;
try {
gotBuildInfo = client.getBuildInfo(moduleName, moduleVersion);
} catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(gotBuildInfo);
}
@Test
public void getBuildInfoNotFound() throws IOException {
final String moduleName = "module";
final String moduleVersion = "1.0.0-SNAPSHOT";
stubFor(get(urlMatching("/" + ServerAPI.MODULE_RESOURCE + "/" + moduleName + "/" + moduleVersion + ServerAPI.GET_BUILD_INFO))
.willReturn(aResponse().withStatus(Status.NOT_FOUND.getStatusCode())));
Exception exception = null;
try {
client.getBuildInfo(moduleName, moduleVersion);
} catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
@Test
public void getProductModuleNames() throws IOException {
final String product = "product";
final List<String> names = Lists.newArrayList("module1", "module2", "module3", "module4");
stubFor(get(urlMatching("/" + ServerAPI.PRODUCT_RESOURCE + "/" + product + ServerAPI.GET_MODULES))
.willReturn(aResponse().withStatus(Status.OK.getStatusCode())
.withBody(JsonUtils.serialize(names))
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)));
List<String> gotNames = null;
Exception exception = null;
try {
gotNames = client.getProductModuleNames(product);
} catch (Exception e) {
exception = e;
}
assertNull(exception);
assertNotNull(gotNames);
assertEquals(names.size(), gotNames.size());
}
@Test
public void getProductModuleNamesNotFound() throws IOException {
stubFor(get(urlMatching("/" + ServerAPI.PRODUCT_RESOURCE + "/doesNotExist" + ServerAPI.GET_MODULES))
.willReturn(aResponse().withStatus(Status.NOT_FOUND.getStatusCode())));
List<String> gotNames = null;
Exception exception = null;
try {
gotNames = client.getProductModuleNames("doesNotExist");
} catch (Exception e) {
exception = e;
}
assertNotNull(exception);
}
}