/*******************************************************************************
* Copyright (c) 2012 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package com.openshift.internal.client;
import static com.openshift.client.utils.CartridgeTestUtils.JBOSSAS_7_NAME;
import static com.openshift.client.utils.CartridgeTestUtils.JENKINS_14_NAME;
import static com.openshift.client.utils.CartridgeTestUtils.MONGODB_22_NAME;
import static com.openshift.client.utils.Samples.DELETE_DOMAINS_FOOBARZ;
import static com.openshift.client.utils.Samples.GET_DOMAINS_EMPTY;
import static com.openshift.client.utils.Samples.GET_DOMAINS_FOOBARS;
import static com.openshift.client.utils.Samples.GET_DOMAINS_FOOBARZ;
import static com.openshift.client.utils.Samples.GET_DOMAINS_FOOBARZ_APPLICATIONS_1EMBEDDED;
import static com.openshift.client.utils.Samples.GET_DOMAINS_FOOBARZ_APPLICATIONS_DOWNLOADABLECART;
import static com.openshift.client.utils.Samples.GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS;
import static com.openshift.client.utils.Samples.POST_JEKYLL_DOMAINS_FOOBARZ_APPLICATIONS;
import static com.openshift.client.utils.Samples.POST_SCALABLE_DOMAINS_FOOBARZ_APPLICATIONS;
import static org.fest.assertions.Assertions.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.reset;
import java.net.SocketTimeoutException;
import java.util.List;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ErrorCollector;
import org.junit.rules.ExpectedException;
import com.openshift.client.ApplicationScale;
import com.openshift.client.IApplication;
import com.openshift.client.IDomain;
import com.openshift.client.IField;
import com.openshift.client.IGearProfile;
import com.openshift.client.IHttpClient;
import com.openshift.client.ISeverity;
import com.openshift.client.IUser;
import com.openshift.client.InvalidCredentialsOpenShiftException;
import com.openshift.client.Message;
import com.openshift.client.Messages;
import com.openshift.client.OpenShiftEndpointException;
import com.openshift.client.OpenShiftException;
import com.openshift.client.cartridge.IStandaloneCartridge;
import com.openshift.client.utils.ApplicationAssert;
import com.openshift.client.utils.CartridgeAssert;
import com.openshift.client.utils.CartridgeTestUtils;
import com.openshift.client.utils.DomainAssert;
import com.openshift.client.utils.GearProfileTestUtils;
import com.openshift.client.utils.MessageAssert;
import com.openshift.client.utils.Samples;
import com.openshift.client.utils.TestConnectionBuilder;
import com.openshift.internal.client.httpclient.BadRequestException;
import com.openshift.internal.client.httpclient.HttpClientException;
import com.openshift.internal.client.httpclient.UnauthorizedException;
import com.openshift.internal.client.httpclient.request.Parameter;
import com.openshift.internal.client.httpclient.request.ParameterValueArray;
import com.openshift.internal.client.httpclient.request.ParameterValueMap;
import com.openshift.internal.client.httpclient.request.StringParameter;
import com.openshift.internal.client.utils.IOpenShiftJsonConstants;
/**
* @author Xavier Coulon
* @author Andre Dietisheim
*/
public class DomainResourceTest extends TestTimer {
private IUser user;
private IDomain domain;
private IHttpClient clientMock;
private HttpClientMockDirector mockDirector;
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Rule
public ErrorCollector errorCollector = new ErrorCollector();
@Before
public void setup() throws Throwable {
this.mockDirector = new HttpClientMockDirector();
this.clientMock = mockDirector.mockGetDomains(Samples.GET_DOMAINS).client();
this.user = new TestConnectionBuilder().defaultCredentials().create(clientMock).getUser();
this.domain = user.getDomain("foobarz");
}
@Test
public void shouldLoadEmptyListOfDomains() throws Throwable {
// pre-conditions
HttpClientMockDirector mockBuilder = new HttpClientMockDirector();
IHttpClient clientMock = mockBuilder.mockGetDomains(GET_DOMAINS_EMPTY).client();
IUser user = new TestConnectionBuilder().defaultCredentials().create(clientMock).getUser();
// operation
final List<IDomain> domains = user.getDomains();
// verifications
assertThat(domains).hasSize(0);
// 3 calls: /API + /API/user + /API/domains
mockBuilder
.verifyGetAny(3)
.verifyGetDomains();
}
@Test
public void shouldLoadDomains() throws Throwable {
// pre-conditions
// operation
final List<IDomain> domains = user.getDomains();
// verifications
assertThat(domains).hasSize(2);
// 3 calls: /API + /API/user + /API/domains
mockDirector.verifyGetAny(3);
}
@Test
public void shouldCreateNewDomain() throws Throwable {
// pre-conditions
mockDirector.mockCreateDomain(GET_DOMAINS_FOOBARS);
int numOfDomains = user.getDomains().size();
// operation
final IDomain domain = user.createDomain("foobars");
// verifications
assertThat(user.getDomains().size()).isSameAs(numOfDomains + 1);
assertThat(domain.getId()).isEqualTo("foobars");
assertThat(domain.getSuffix()).isEqualTo("rhcloud.com");
}
@Test(expected = OpenShiftException.class)
public void shouldNotRecreateExistingDomain() throws Throwable {
// pre-conditions
// operation
user.createDomain("foobarz");
// verifications
// expect an exception
}
@Test
public void shouldDestroyDomain() throws Throwable {
// pre-conditions
mockDirector.mockDeleteDomain("foobarz", DELETE_DOMAINS_FOOBARZ);
// operation
final IDomain domain = user.getDomain("foobarz");
domain.destroy();
// verifications
assertThat(user.getDomain("foobarz")).isNull();
// 2 domains, 1 destroyed
assertThat(user.getDomains()).hasSize(1);
}
@Test
public void shouldNotDestroyDomainWithApp() throws Throwable {
// pre-conditions
mockDirector.mockDeleteDomain("foobarz",
new BadRequestException("Domain contains applications. Delete applications first or set force to true.", null));
// operation
final IDomain domain = user.getDomain("foobarz");
try {
domain.destroy();
fail("Expected an exception here..");
} catch (OpenShiftEndpointException e) {
assertThat(e.getCause()).isInstanceOf(BadRequestException.class);
}
// verifications
assertThat(domain).isNotNull();
assertThat(user.getDomains()).isNotEmpty().contains(domain);
}
@Test
public void shouldUpdateDomainId() throws Throwable {
// pre-conditions
mockDirector.mockRenameDomain("foobarz", GET_DOMAINS_FOOBARS);
final IDomain domain = user.getDomain("foobarz");
// operation
domain.rename("foobars");
// verifications
assertThat(domain.getId()).isEqualTo("foobars");
final IDomain updatedDomain = user.getDomain("foobars");
assertThat(updatedDomain).isNotNull();
assertThat(updatedDomain.getId()).isEqualTo("foobars");
mockDirector.verifyRenameDomain("foobarz");
}
@Test
public void shouldListAvailableGearSizes() throws Throwable {
// pre-conditions
final IDomain domain = user.getDomain("foobarz");
// operation
List<IGearProfile> availableGearSizes = domain.getAvailableGearProfiles();
// verifications
assertThat(availableGearSizes.size() > 0);
}
@Test
public void shouldRefreshDomainAndLoadApplications() throws Throwable {
// pre-conditions
mockDirector
.mockGetDomain("foobarz", GET_DOMAINS_FOOBARZ)
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_1EMBEDDED);
final IDomain domain = user.getDomain("foobarz");
assertThat(domain).isNotNull();
// operation
domain.refresh();
// verifications
mockDirector
.verifyGetDomain("foobarz") // explicit refresh
.verifyGetApplications("foobarz", 1); // two calls, before and while refresh
}
@Test
public void shouldRefreshDomainAndReloadApplications() throws Throwable {
// pre-conditions
mockDirector
.mockGetDomain("foobarz", GET_DOMAINS_FOOBARZ)
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_1EMBEDDED);
final IDomain domain = user.getDomain("foobarz");
assertThat(domain).isNotNull();
// operation
domain.getApplications();
domain.refresh();
// verifications
mockDirector
.verifyGetDomain("foobarz") // explicit refresh
.verifyGetApplications("foobarz", 2); // two calls, before and while refresh
}
@Test
public void shouldLoadListOfApplicationsWithNoElement() throws Throwable {
// pre-conditions
mockDirector.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS);
// operation
final List<IApplication> apps = domain.getApplications();
// verifications
assertThat(apps).isEmpty();
mockDirector
.verifyGetAPI()
.verifyGetUser()
.verifyGetDomains()
.verifyGetApplications("foobarz", 1)
.verifyGetAny(4);
}
@Test
public void shouldLoadListOfApplicationsWith2Elements() throws Throwable {
// pre-conditions
mockDirector.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_1EMBEDDED);
// operation
final List<IApplication> apps = domain.getApplications();
// verifications
assertThat(apps).hasSize(2);
mockDirector
.verifyGetAPI()
.verifyGetUser()
.verifyGetDomains()
.verifyGetApplications("foobarz", 1)
.verifyGetAny(4);
}
@Test
public void shouldNotLoadApplicationTwice() throws Throwable {
// pre-conditions
mockDirector.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_1EMBEDDED);
// operation
List<IApplication> apps = domain.getApplications();
assertThat(apps).hasSize(2);
// verifications
reset(clientMock);
apps = domain.getApplications(); // dont do new client request
mockDirector.verifyGetAny(0);
}
@Test(expected = InvalidCredentialsOpenShiftException.class)
public void shouldNotLoadListOfApplicationsWithInvalidCredentials()
throws OpenShiftException, HttpClientException, SocketTimeoutException {
// pre-conditions
mockDirector.mockGetApplications("foobarz", new UnauthorizedException("invalid credentials (mock)", null));
// operation
domain.getApplications();
// verifications
mockDirector.verifyGetAPI()
.verifyGetUser()
.verifyGetAny(2);
}
@Test
public void shouldCreateApplicationWithDownloadableCartridge() throws Throwable {
// pre-conditions
mockDirector
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS)
.mockCreateApplication("foobarz", Samples.GET_DOMAINS_FOOBARZ_APPLICATIONS_DOWNLOADABLECART);
// operation
final IApplication app = domain.createApplication(
"downloadablecart", CartridgeTestUtils.go11(), null, null, null, IHttpClient.NO_TIMEOUT,
CartridgeTestUtils.foreman063(),
CartridgeTestUtils.mysql51());
// verifications
new ApplicationAssert(app)
.hasName("downloadablecart")
.hasGearProfile(GearProfileTestUtils.getFirstAvailableGearProfile(domain))
.hasCreationTime()
.hasUUID()
.hasDomain(domain)
.hasEmbeddableCartridges(2)
.hasEmbeddedCartridge(CartridgeTestUtils.mysql51())
.hasEmbeddedCartridge(CartridgeTestUtils.foreman063());
new DomainAssert(domain)
.hasApplications(app)
.hasApplications(1);
}
@Test
public void shouldUpdateDownloadableStandaloneCartridgeAfterDeploy() throws Throwable {
// pre-conditions
mockDirector
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS)
.mockCreateApplication("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_DOWNLOADABLECART);
new CartridgeAssert<IStandaloneCartridge>(CartridgeTestUtils.go11())
.hasName(null)
.hasDescription(null)
.hasDisplayName(null)
.hasUrl(CartridgeTestUtils.GO_URL);
// operation
final IApplication app = domain.createApplication(
"springeap6", CartridgeTestUtils.eap6(), null, null, null, IHttpClient.NO_TIMEOUT,
CartridgeTestUtils.foreman063(),
CartridgeTestUtils.mysql51());
// verifications
// cartridge was updated with name, description, display name
new CartridgeAssert<IStandaloneCartridge>(app.getCartridge())
.hasName("smarterclayton-go-1.1")
.hasDescription("OpenShift Go cartridge")
.hasDisplayName("Go 1.1")
.hasUrl(CartridgeTestUtils.GO_URL);
}
@Test
public void shouldRequestCreateApplicationWithDownloadableCartridge() throws Throwable {
// pre-conditions
mockDirector
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS)
.mockCreateApplication("foobarz", Samples.GET_DOMAINS_FOOBARZ_APPLICATIONS_DOWNLOADABLECART);
// operation
domain.createApplication(
"downloadablecart", CartridgeTestUtils.go11(), null, null, null, IHttpClient.NO_TIMEOUT,
CartridgeTestUtils.foreman063(),
CartridgeTestUtils.mysql51());
// verifications
mockDirector.verifyCreateApplication("foobarz", IHttpClient.NO_TIMEOUT,
new StringParameter(IOpenShiftJsonConstants.PROPERTY_NAME, "downloadablecart"),
new Parameter(IOpenShiftJsonConstants.PROPERTY_CARTRIDGES,
new ParameterValueArray()
.add(new ParameterValueMap().add(IOpenShiftJsonConstants.PROPERTY_URL, CartridgeTestUtils.GO_URL))
.add(new ParameterValueMap().add(IOpenShiftJsonConstants.PROPERTY_URL, CartridgeTestUtils.FOREMAN_URL))
.add(new ParameterValueMap().add(IOpenShiftJsonConstants.PROPERTY_NAME, CartridgeTestUtils.mysql51().getName()))));
}
@Test
public void shouldHaveMessagesWhenCreating() throws Throwable {
// pre-conditions
mockDirector
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS)
.mockCreateApplication("foobarz", POST_JEKYLL_DOMAINS_FOOBARZ_APPLICATIONS);
// operation
final IApplication app = domain.createApplication("jekyll", CartridgeTestUtils.jenkins14());
// verifications
Messages messages = app.getMessages();
assertThat(messages).isNotNull();
assertThat(messages.getAll()).hasSize(3);
List<Message> defaultMessages = messages.getBy(IField.DEFAULT);
assertThat(defaultMessages).hasSize(3);
List<Message> infoSeverityMessages = messages.getBy(IField.DEFAULT, ISeverity.INFO);
assertThat(infoSeverityMessages).hasSize(1);
new MessageAssert(infoSeverityMessages.get(0))
.hasExitCode(0)
.hasText("Application jekyll was created.");
List<Message> debugSeverityMessages = app.getMessages().getBy(IField.DEFAULT, ISeverity.DEBUG);
assertThat(debugSeverityMessages).hasSize(1);
new MessageAssert(debugSeverityMessages.get(0))
.hasExitCode(0)
.hasText("The cartridge jenkins deployed a template application");
List<Message> resultSeverityMessages = messages.getBy(IField.DEFAULT, ISeverity.RESULT);
assertThat(resultSeverityMessages).hasSize(1);
new MessageAssert(resultSeverityMessages.get(0))
.hasExitCode(0)
.hasText("Jenkins created successfully. "
+ "Please make note of these credentials:\n User: admin\n Password: wLwSzJPh6dqN\n"
+ "Note: You can change your password at: https://jekyll-foobarz.rhcloud.com/me/configure\n");
}
@Test
public void shouldRequestCreateApplicationWithNameAndCartridgeOnly() throws Throwable {
// pre-conditions
mockDirector
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS)
.mockCreateApplication("foobarz", POST_SCALABLE_DOMAINS_FOOBARZ_APPLICATIONS);
// operation
domain.createApplication("foo", CartridgeTestUtils.as7());
// verification
mockDirector.verifyCreateApplication(
"foobarz",
IHttpClient.NO_TIMEOUT,
new StringParameter(IOpenShiftJsonConstants.PROPERTY_NAME, "foo"),
new Parameter(IOpenShiftJsonConstants.PROPERTY_CARTRIDGES,
new ParameterValueArray()
.add(new ParameterValueMap().add(
IOpenShiftJsonConstants.PROPERTY_NAME, CartridgeTestUtils.JBOSSAS_7_NAME))));
}
@Test
public void shouldRequestCreateApplicationWithNameCartridgeAndScaleOnly() throws Throwable {
// pre-conditions
mockDirector
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS)
.mockCreateApplication("foobarz", POST_SCALABLE_DOMAINS_FOOBARZ_APPLICATIONS);
// operation
domain.createApplication("foo", CartridgeTestUtils.as7(), ApplicationScale.SCALE);
// verification
mockDirector.verifyCreateApplication("foobarz", IHttpClient.NO_TIMEOUT,
new StringParameter(IOpenShiftJsonConstants.PROPERTY_NAME, "foo"),
new Parameter(IOpenShiftJsonConstants.PROPERTY_CARTRIDGES,
new ParameterValueArray()
.add(new ParameterValueMap().add(IOpenShiftJsonConstants.PROPERTY_NAME, JBOSSAS_7_NAME))),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_SCALE, ApplicationScale.SCALE.getValue()));
}
@Test
public void shouldRequestCreateApplicationWithNameCartridgeScaleGearProfileOnly() throws Throwable {
// pre-conditions
mockDirector
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS)
.mockCreateApplication("foobarz", POST_SCALABLE_DOMAINS_FOOBARZ_APPLICATIONS);
// operation
domain.createApplication("foo", CartridgeTestUtils.as7(), ApplicationScale.SCALE, GearProfileTestUtils.getFirstAvailableGearProfile(domain));
// verification
mockDirector.verifyCreateApplication("foobarz", IHttpClient.NO_TIMEOUT,
new StringParameter(IOpenShiftJsonConstants.PROPERTY_NAME, "foo"),
new Parameter(IOpenShiftJsonConstants.PROPERTY_CARTRIDGES,
new ParameterValueArray()
.add(new ParameterValueMap().add(IOpenShiftJsonConstants.PROPERTY_NAME, JBOSSAS_7_NAME))),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_SCALE, ApplicationScale.SCALE.getValue()),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_GEAR_PROFILE, GearProfileTestUtils.getFirstAvailableGearProfile(domain).getName())
);
}
@Test
public void shouldRequestCreateApplicationWithNameCartridgeScaleGearProfileAndGitUrl() throws Throwable {
// pre-conditions
mockDirector
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS)
.mockCreateApplication("foobarz", POST_SCALABLE_DOMAINS_FOOBARZ_APPLICATIONS);
// operation
domain.createApplication(
"foo", CartridgeTestUtils.as7(),
ApplicationScale.SCALE,
GearProfileTestUtils.getFirstAvailableGearProfile(domain),
"git://github.com/adietish/openshift-java-client.git");
// verification
mockDirector.verifyCreateApplication("foobarz", IHttpClient.NO_TIMEOUT,
new StringParameter(IOpenShiftJsonConstants.PROPERTY_NAME, "foo"),
new Parameter(IOpenShiftJsonConstants.PROPERTY_CARTRIDGES,
new ParameterValueArray()
.add(new ParameterValueMap().add(IOpenShiftJsonConstants.PROPERTY_NAME, JBOSSAS_7_NAME))),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_SCALE, ApplicationScale.SCALE.getValue()),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_GEAR_PROFILE, GearProfileTestUtils.getFirstAvailableGearProfile(domain).getName()),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_INITIAL_GIT_URL, "git://github.com/adietish/openshift-java-client.git")
);
}
@Test
public void shouldRequestCreateApplicationWithEmbeddableCartridges() throws Throwable {
// pre-conditions
mockDirector
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS)
.mockCreateApplication("foobarz", POST_SCALABLE_DOMAINS_FOOBARZ_APPLICATIONS);
// operation
domain.createApplication(
"jekyll",
CartridgeTestUtils.jenkins14(),
ApplicationScale.SCALE,
GearProfileTestUtils.getFirstAvailableGearProfile(domain),
"git://github.com/adietish/openshift-java-client.git",
42001,
CartridgeTestUtils.mongodb22(),
CartridgeTestUtils.mysql51());
// verification
mockDirector.verifyCreateApplication(
"foobarz",
42001,
new StringParameter(IOpenShiftJsonConstants.PROPERTY_NAME, "jekyll"),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_SCALE, ApplicationScale.SCALE.getValue()),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_GEAR_PROFILE, GearProfileTestUtils.getFirstAvailableGearProfile(domain).getName()),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_INITIAL_GIT_URL, "git://github.com/adietish/openshift-java-client.git"),
new Parameter(IOpenShiftJsonConstants.PROPERTY_CARTRIDGES,
new ParameterValueArray()
.add(new ParameterValueMap().add(IOpenShiftJsonConstants.PROPERTY_NAME,
JENKINS_14_NAME))
.add(new ParameterValueMap().add(IOpenShiftJsonConstants.PROPERTY_NAME,
MONGODB_22_NAME))
.add(new ParameterValueMap().add(IOpenShiftJsonConstants.PROPERTY_NAME,
CartridgeTestUtils.MYSQL_51_NAME))));
}
@Test(expected = OpenShiftException.class)
public void shouldNotCreateApplicationWithMissingName() throws Throwable {
// pre-conditions
mockDirector.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_1EMBEDDED);
// operation
domain.createApplication(null, CartridgeTestUtils.as7(), null, null);
// verifications
// expected exception
}
@Test(expected = OpenShiftException.class)
public void shouldNotCreateApplicationWithMissingCartridge() throws Throwable {
// pre-conditions
mockDirector.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS);
// operation
domain.createApplication("foo", null, null, null);
// verifications
// expected exception
}
@Test
public void shouldNotRecreateExistingApplication() throws Throwable {
// pre-conditions
mockDirector.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_1EMBEDDED);
// operation
try {
domain.createApplication("springeap6", CartridgeTestUtils.as7(), null, null);
// expect an exception
fail("Expected exception here...");
} catch (OpenShiftException e) {
// OK
}
// verifications
assertThat(domain.getApplications()).hasSize(2);
}
@Test
public void shouldGetApplicationByNameCaseInsensitive() throws Throwable {
// pre-conditions
mockDirector.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_1EMBEDDED);
// operation
IApplication lowerCaseQueryResult = domain.getApplicationByName("springeap6");
IApplication upperCaseQueryResult = domain.getApplicationByName("SPRINGEAP6");
// verifications
assertThat(lowerCaseQueryResult).isNotNull();
assertThat(lowerCaseQueryResult.getName()).isEqualTo("springeap6");
assertThat(upperCaseQueryResult).isNotNull();
assertThat(upperCaseQueryResult.getName()).isEqualTo("springeap6");
}
@Test
@Ignore
public void shouldRefreshDomain() throws Throwable {
fail("not implemented yet");
}
@Test
@Ignore
public void shouldNotReloadDomainTwice() throws Throwable {
fail("not implemented yet");
}
@Test
@Ignore
public void shouldNotifyAfterDomainCreated() throws Throwable {
fail("not implemented yet");
}
@Test
@Ignore
public void shouldNotifyAfterDomainUpdated() throws Throwable {
fail("not implemented yet");
}
@Test
@Ignore
public void shouldNotifyAfterDomainDestroyed() throws Throwable {
fail("not implemented yet");
}
@Test
public void shouldPassTimeoutToClient() throws Throwable {
// pre-conditions
int timeout = 42 * 1000;
mockDirector
.mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_NOAPPS)
.mockCreateApplication("foobarz", POST_SCALABLE_DOMAINS_FOOBARZ_APPLICATIONS);
// operation
domain.createApplication("scalable", CartridgeTestUtils.as7(), ApplicationScale.NO_SCALE, GearProfileTestUtils.getFirstAvailableGearProfile(domain), null, timeout);
// verifications
mockDirector.verifyCreateApplication("foobarz", timeout,
new StringParameter(IOpenShiftJsonConstants.PROPERTY_SCALE, String.valueOf(Boolean.FALSE)),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_GEAR_PROFILE, GearProfileTestUtils.getFirstAvailableGearProfile(domain).getName()),
new Parameter(IOpenShiftJsonConstants.PROPERTY_CARTRIDGES,
new ParameterValueArray().add(
new ParameterValueMap().add(IOpenShiftJsonConstants.PROPERTY_NAME, JBOSSAS_7_NAME))),
new StringParameter(IOpenShiftJsonConstants.PROPERTY_NAME, "scalable"));
}
@Test
public void shouldReportCannotCreateAppWithEnvVars() throws Throwable {
// pre-conditions
IDomain domain = user.getDomain("foobarz");
assertThat(domain).isNotNull();
// operation
boolean canCreateWithEnvVars = domain.canCreateApplicationWithEnvironmentVariables();
// verifications
assertThat(canCreateWithEnvVars).isFalse();
}
@Test
public void shouldReportCanCreateAppWithEnvVars() throws Throwable {
// pre-conditions
IDomain domain = user.getDomain("foogoo");
assertThat(domain).isNotNull();
// operation
boolean canCreateWithEnvVars = domain.canCreateApplicationWithEnvironmentVariables();
// verifications
assertThat(canCreateWithEnvVars).isTrue();
}
@Test
public void shouldEqualDomainFromOtherUser() throws Throwable {
// pre-conditions
IUser user = new TestConnectionBuilder().defaultCredentials().create(clientMock).getUser();
// operation
final IDomain domain = user.getDomain("foobarz");
// verifications
assertThat(domain).isEqualTo(this.domain);
assertTrue(domain != this.domain); // not same objects
}
}