/** * Copyright (C) 2015 Orange * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.francetelecom.clara.cloud.techmodel.cf; import com.francetelecom.clara.cloud.commons.MavenReference; import com.francetelecom.clara.cloud.model.DependantModelItem; import com.francetelecom.clara.cloud.techmodel.cf.services.userprovided.SimpleUserProvidedService; import org.fest.assertions.Assertions; import org.junit.Test; import java.util.Set; import java.util.UUID; import static org.fest.assertions.Assertions.assertThat; public class AppTest { MavenReference appBinaries = new MavenReference("com.francetelecom.clara.prototype.springoojpa", "springoojpa-ear", "6.1.0", "ear"); App app = new App(new Space(), appBinaries, "myAppName"); @Test public void hasDefaultNullBuildPackUrl() { assertThat(app.getBuildPackUrl()).isNull(); } @Test public void requiresValidAppName() { //See constructor assertThat(app.getAppName()).isEqualTo("myAppName"); } @Test(expected = IllegalArgumentException.class) public void rejectsNullAppName() { new App(new Space(), appBinaries, null); } @Test(expected = IllegalArgumentException.class) public void rejectsEmptyAppName() { new App(new Space(), appBinaries, ""); } @Test(expected = IllegalArgumentException.class) public void rejectsNullAppBinaries() { new App(new Space(), null, "myAppName"); } @Test public void requiresMavenReference() { //See constructor assertThat(app.getAppBinaries()).isEqualTo(appBinaries); } @Test public void hasDefaultEmptyRoutes() { assertThat(app.getRoutes()).isEmpty(); } @Test public void hasDefaultMemoryUsage() { assertThat(app.getRamMb()).isEqualTo(256); } @Test public void hasDefaultDiskUsage() { assertThat(app.getDiskSizeMb()).isEqualTo(1024); } @Test public void hasDefaultInstanceCount() { assertThat(app.getInstanceCount()).isEqualTo(1); } @Test public void constructorsSupportsOptionalValues() { String buildPackUrl = "https://github.com/Orange-OpenSource/vcap-java-client.git"; app = new App(new Space(), "myappName", appBinaries, buildPackUrl, 256, 2); assertThat(app.getInstanceCount()).isEqualTo(2); assertThat(app.getBuildPackUrl()).isEqualTo(buildPackUrl); } @Test public void supports_bind_services() { //given SimpleUserProvidedService userProvidedService = new SimpleUserProvidedService("frontend-db", "http://localhost", new Space()); //when app.bindService(userProvidedService); //then assertThat(app.getServiceNames()).containsOnly("frontend-db"); } @Test public void delegates_dependency_resolver_to_service() { //given final Space space = new Space(); App joyn = new App(space, appBinaries, "myAppName"); SimpleUserProvidedService userProvidedService = new SimpleUserProvidedService("frontend-db", "http://localhost", space); joyn.bindService(userProvidedService); //when Set<DependantModelItem> dependantModelItems = joyn.listDepedencies(); //then int aSpaceWithAnOrgAndACups=3; assertThat(dependantModelItems.size()).isEqualTo(aSpaceWithAnOrgAndACups); } @Test(expected = IllegalArgumentException.class) public void require_external_id_on_activation() throws Exception { MavenReference mavenReference = MavenReference.fromGavString("foo.groupid:foo.artifactid:foo.version"); Space space = new Space(); App joyn = new App(space, mavenReference, "joyn"); joyn.activate(null); } @Test public void should_set_external_id_on_activation() throws Exception { MavenReference mavenReference = MavenReference.fromGavString("foo.groupid:foo.artifactid:foo.version"); Space space = new Space(); App joyn = new App(space, mavenReference, "joyn"); UUID externalId = UUID.randomUUID(); joyn.activate(externalId); Assertions.assertThat(joyn.getExternalReference()).isEqualTo(externalId.toString()); } @Test public void should_be_activated_after_activation() throws Exception { MavenReference mavenReference = MavenReference.fromGavString("foo.groupid:foo.artifactid:foo.version"); Space space = new Space(); App joyn = new App(space, mavenReference, "joyn"); UUID externalId = UUID.randomUUID(); joyn.activate(externalId); Assertions.assertThat(joyn.isActivated()).isTrue(); } @Test public void accepts_env_variables() { app.setEnvVariable("key1", "value1"); assertThat(app.getEnvVarValue("key1")).isEqualTo("value1"); } @Test public void env_vars_have_single_value_for_a_same_key() { //given app.setEnvVariable("key1", "value1"); app.setEnvVariable("key1", "value2"); //when assertThat(app.getEnvVarValue("key1")).isEqualTo("value2"); assertThat(app.listEnvVariables()).hasSize(1); } @Test public void supports_fetching_env_var_by_keys() { //given app.setEnvVariable("key1", "value1"); app.setEnvVariable("key2", "value2"); //when assertThat(app.getEnvVarValue("key1")).isEqualTo("value1"); assertThat(app.getEnvVarValue("no.such.key")).isNull(); } @Test public void should_be_removed_after_deletion() throws Exception { MavenReference mavenReference = MavenReference.fromGavString("foo.groupid:foo.artifactid:foo.version"); Space space = new Space(); App joyn = new App(space, mavenReference, "joyn"); joyn.delete(); Assertions.assertThat(joyn.isRemoved()).isTrue(); } @Test public void should_be_stopped_after_stop() throws Exception { MavenReference mavenReference = MavenReference.fromGavString("foo.groupid:foo.artifactid:foo.version"); Space space = new Space(); App joyn = new App(space, mavenReference, "joyn"); joyn.stop(); Assertions.assertThat(joyn.isStopped()).isTrue(); } }