/**
* 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.coremodel;
import com.francetelecom.clara.cloud.model.*;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import java.net.MalformedURLException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/com/francetelecom/clara/cloud/coremodel/application-context.xml" })
@DirtiesContext(classMode= DirtiesContext.ClassMode.AFTER_CLASS)
public class EnvironmentRepositoryTest {
@Autowired
private EnvironmentRepository environmentRepository;
@Autowired
private ApplicationRepository applicationRepository;
@Autowired
private ApplicationReleaseRepository applicationReleaseRepository;
@Autowired
private TechnicalDeploymentTemplateRepository technicalDeploymentTemplateRepository;
@Autowired
private PaasUserRepository paasUserRepository;
private PaasUser manager;
private ApplicationRelease release;
private TechnicalDeploymentInstance technicalDeploymentInstance;
/*
* @Autowired DataSource dataSource;
*/
@Before
@Transactional
public void setup() throws Exception {
Assert.assertNotNull(environmentRepository);
// given paas user with ssoId aSsoId exists
manager = new PaasUser("bob", "Dylan", new SSOId("bob123"), "bob@orange.com");
paasUserRepository.save(manager);
paasUserRepository.flush();
// given application with label aLabel and code aCode exists
Application application = new Application("aLabel", "aCode");
applicationRepository.save(application);
applicationRepository.flush();
// given release with version aVersion exists
release = new ApplicationRelease(application, "aVersion");
applicationReleaseRepository.save(release);
applicationReleaseRepository.flush();
// given td exists
TechnicalDeployment technicalDeployment = new TechnicalDeployment("foo");
// given tdt exists
TechnicalDeploymentTemplate technicalDeploymentTemplate = new TechnicalDeploymentTemplate(technicalDeployment, DeploymentProfileEnum.DEVELOPMENT, "releaseId", MiddlewareProfile.DEFAULT_PROFILE);
technicalDeploymentTemplateRepository.save(technicalDeploymentTemplate);
// given tdi exists
technicalDeploymentInstance = new TechnicalDeploymentInstance(technicalDeploymentTemplate, technicalDeployment);
}
@Test
@Transactional
public void testPersist() {
Environment env = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager, technicalDeploymentInstance);
environmentRepository.save(env);
assertFindEnvById(env.getId(), true, env);
environmentRepository.flush();
}
private void assertFindEnvById(int envId, boolean expectsEnvToBePresent, Environment expectedDetachedEnv) {
Environment lookedUpEnv = environmentRepository.findOne(envId);
assertFindEnv(expectsEnvToBePresent, expectedDetachedEnv, lookedUpEnv);
}
private void assertFindEnvByUID(String envUID, Environment expectedDetachedEnv) {
Environment lookedUpEnv = environmentRepository.findByUid(envUID);
assertFindEnv((expectedDetachedEnv != null), expectedDetachedEnv, lookedUpEnv);
}
@Test
@Transactional
public void shouldFailToFindUnknownEnvironmentByUID() {
// when i want to find an environment using an unknown uid
Environment environment = environmentRepository.findByUid("dummy");
// then I should not get this environment
Assert.assertNull("environment should not exist", environment);
}
@Test
@Transactional
public void shouldFindExistingEnvironmentByUID() {
// given a persisted environment
Environment persisted = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager,
technicalDeploymentInstance);
environmentRepository.save(persisted);
// when I want to find this environment by its uid
Environment entity = environmentRepository.findByUid(persisted.getUID());
// then I should get this environment
Assert.assertNotNull("cannot find environment by its uid", entity);
}
@Test
@Transactional
public void shouldFindByTechnicalInstanceDeploymentId() {
// given a persisted environment
Environment persisted = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager,
technicalDeploymentInstance);
environmentRepository.save(persisted);
// when I want to find this environment by its uid
Environment entity = environmentRepository.findByTechnicalDeploymentInstanceId(technicalDeploymentInstance.getId());
// then I should get this environment
Assert.assertNotNull("cannot find environment by its uid", entity);
}
private void assertFindEnv(boolean expectsEnvToBePresent, Environment expectedDetachedEnv, Environment lookedUpEnv) {
if (expectsEnvToBePresent) {
assert lookedUpEnv != null; // assumption
Assert.assertNotNull("entity does not exist", lookedUpEnv);
Assert.assertEquals(expectedDetachedEnv.getUID(), lookedUpEnv.getUID());
} else {
Assert.assertNull("entity should not exist", lookedUpEnv);
}
}
@Test
@Transactional
public void should_remove_environment() {
Environment env = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager, technicalDeploymentInstance);
environmentRepository.save(env);
assertFindEnvById(env.getId(), true, env);
environmentRepository.delete(env);
environmentRepository.flush();
assertFindEnvById(env.getId(), false, null);
}
@Test
@Transactional
public void should_find_environment_by_id() {
Environment env = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager, technicalDeploymentInstance);
environmentRepository.save(env);
assertFindEnvById(env.getId(), true, env);
}
@Test
@Transactional
public void should_find_environment_with_configuration_by_id() {
Environment env = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager, technicalDeploymentInstance);
ConfigRole cfg = new ConfigRole("app");
cfg.setValues(Arrays.asList(new ConfigValue("configset", "key1", "value1", "my key 1"), new ConfigValue("configset", "key2", "value2", "my key 2")));
environmentRepository.save(env);
assertFindEnvById(env.getId(), true, env);
}
@Test
@Transactional
public void should_find_environment_by_uid() {
Environment env = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager, technicalDeploymentInstance);
environmentRepository.save(env);
assertFindEnvByUID(env.getUID(), env);
}
@Test
@Transactional
public void should_find_all_environments() {
Environment env1 = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager, technicalDeploymentInstance);
environmentRepository.save(env1);
Environment env2 = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager, technicalDeploymentInstance);
environmentRepository.save(env2);
environmentRepository.flush();
// test run
List<Environment> entities = environmentRepository.findAll();
// assertions
Assert.assertNotNull("entities should not be null", entities);
Assert.assertEquals("there should be 2 entities", 2, entities.size());
}
@Test
@Transactional
public void testFindAllActiveWithCount() {
Environment env1 = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager, technicalDeploymentInstance);
environmentRepository.save(env1);
Environment env2 = new Environment(DeploymentProfileEnum.PRODUCTION, "my first environment", release, manager, technicalDeploymentInstance);
env2.setStatus(EnvironmentStatus.REMOVED);
environmentRepository.save(env2);
environmentRepository.flush();
List<Environment> entities = environmentRepository.findAllActive();
Assert.assertEquals("there should be 1 entity", 1, entities.size());
Assert.assertFalse("entities should not contain removed environment", entities.contains(env2));
}
@Test
@Transactional
public void should_find_active_environment_by_releaseUID_and_environment_lLabel() {
// given default environment
Environment environment = new Environment(DeploymentProfileEnum.PRODUCTION, "aLabel", release, manager, technicalDeploymentInstance);
environmentRepository.save(environment);
// given removed environment
Environment removed = new Environment(DeploymentProfileEnum.PRODUCTION, "aLabel", release, manager, technicalDeploymentInstance);
removed.setStatus(EnvironmentStatus.REMOVED);
environmentRepository.save(removed);
// when I find environment by application release uid and environment
// label aLabel
Environment result = environmentRepository.findByApplicationReleaseUIDAndLabel(environment.getApplicationRelease().getUID(), "aLabel");
// then I should get default environment
Assert.assertEquals(environment, result);
}
@Test
@Transactional
public void testCount() {
Environment environment1 = new Environment(DeploymentProfileEnum.PRODUCTION, "aLabel", release, manager, technicalDeploymentInstance);
environmentRepository.save(environment1);
Environment environment2 = new Environment(DeploymentProfileEnum.PRODUCTION, "aLabel", release, manager, technicalDeploymentInstance);
environmentRepository.save(environment2);
environmentRepository.flush();
long count = environmentRepository.count();
Assert.assertEquals("there should be 2 entities count", 2, count);
List<Environment> entities = environmentRepository.findAll();
Assert.assertEquals("there should be 2 entities", 2, entities.size());
}
@Test
@Transactional
public void shouldCount1EnvironmentForApplicationReleaseUID() throws MalformedURLException {
// given a REMOVED environment with profile DEVELOPMENT with label
// ALabel for
// release for user aSsoId
Environment environment1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "aLabel", release, manager, technicalDeploymentInstance);
environment1.setStatus(EnvironmentStatus.REMOVED);
environmentRepository.save(environment1);
// given a environment with profile DEVELOPMENT with label anotherLabel
// for release for user aSsoId
Environment environment2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", release, manager, technicalDeploymentInstance);
environmentRepository.save(environment2);
// when I count environment of release with label aLabel
long count = environmentRepository.countActiveByApplicationReleaseUid(release.getUID());
// then I should get 1
Assert.assertEquals(1, count);
}
@Test
@Transactional
public void should_find_active_environments_for_given_member() throws MalformedURLException {
// given joyn application
Application joyn = new Application("joyn", "joyn");
HashSet<SSOId> joynMembers = new HashSet<>();
joynMembers.add(new SSOId("bob123"));
joynMembers.add(new SSOId("alice123"));
joyn.setAsPrivate();
joyn.setMembers(joynMembers);
applicationRepository.save(joyn);
// given releases of application joyn
ApplicationRelease joyn_1_0 = new ApplicationRelease(joyn, "1.0");
ApplicationRelease joyn_2_0 = new ApplicationRelease(joyn, "2.0");
ApplicationRelease joyn_3_0 = new ApplicationRelease(joyn, "3.0");
applicationReleaseRepository.save(joyn_1_0);
applicationReleaseRepository.save(joyn_2_0);
applicationReleaseRepository.save(joyn_3_0);
Environment joyn_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_1);
Environment joyn_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_2);
// given myOrange application
Application myOrange = new Application("myOrange", "myOrange");
HashSet<SSOId> myOrangeMembers = new HashSet<>();
myOrangeMembers.add(new SSOId("bob123"));
myOrange.setAsPrivate();
myOrange.setMembers(myOrangeMembers);
applicationRepository.save(myOrange);
// given releases of application myOrange
ApplicationRelease myOrange_1_0 = new ApplicationRelease(myOrange, "1.0");
ApplicationRelease myOrange_2_0 = new ApplicationRelease(myOrange, "2.0");
applicationReleaseRepository.save(myOrange_1_0);
applicationReleaseRepository.save(myOrange_2_0);
Environment myOrange_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", myOrange_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(myOrange_1_0_env_1);
// given elpaaso public application
Application elpaaso = new Application("elpaaso", "elpaaso");
applicationRepository.save(elpaaso);
// given releases of application elpaaso
ApplicationRelease elpaaso_1_0 = new ApplicationRelease(elpaaso, "1.0");
applicationReleaseRepository.save(elpaaso_1_0);
Environment elpaaso_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_1);
Environment elpaaso_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_2);
applicationRepository.flush();
applicationReleaseRepository.flush();
environmentRepository.flush();
// assertions
// when I find all active environments
List<Environment> jdaltonEnvs = environmentRepository.findAllActiveByApplicationMember("jdalton");
List<Environment> aliceEnvs = environmentRepository.findAllActiveByApplicationMember("alice123");
List<Environment> bobEnvs = environmentRepository.findAllActiveByApplicationMember("bob123");
Assert.assertEquals("jdalton should see no environment", 0, jdaltonEnvs.size());
Assert.assertEquals("alice should see 2 environments", 2, aliceEnvs.size());
Assert.assertTrue("alice should see joyn_1_0_env_1", aliceEnvs.contains(joyn_1_0_env_1));
Assert.assertTrue("alice should see joyn_1_0_env_2",aliceEnvs.contains(joyn_1_0_env_2));
Assert.assertEquals("bob should see 3 environments", 3, bobEnvs.size());
Assert.assertTrue("bob should see joyn_1_0_env_1", bobEnvs.contains(joyn_1_0_env_1));
Assert.assertTrue("bob should see joyn_1_0_env_2",bobEnvs.contains(joyn_1_0_env_2));
Assert.assertTrue("bob should see myOrange_1_0_env_1", bobEnvs.contains(myOrange_1_0_env_1));
}
@Test
@Transactional
public void should_find_public_environments_or_private_environment_for_given_member() throws MalformedURLException {
// given joyn application
Application joyn = new Application("joyn", "joyn");
HashSet<SSOId> joynMembers = new HashSet<>();
joynMembers.add(new SSOId("bob123"));
joynMembers.add(new SSOId("alice123"));
joyn.setAsPrivate();
joyn.setMembers(joynMembers);
applicationRepository.save(joyn);
// given releases of application joyn
ApplicationRelease joyn_1_0 = new ApplicationRelease(joyn, "1.0");
ApplicationRelease joyn_2_0 = new ApplicationRelease(joyn, "2.0");
ApplicationRelease joyn_3_0 = new ApplicationRelease(joyn, "3.0");
applicationReleaseRepository.save(joyn_1_0);
applicationReleaseRepository.save(joyn_2_0);
applicationReleaseRepository.save(joyn_3_0);
Environment joyn_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_1);
Environment joyn_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_2);
// given myOrange application
Application myOrange = new Application("myOrange", "myOrange");
HashSet<SSOId> myOrangeMembers = new HashSet<>();
myOrangeMembers.add(new SSOId("bob123"));
myOrange.setAsPrivate();
myOrange.setMembers(myOrangeMembers);
applicationRepository.save(myOrange);
// given releases of application myOrange
ApplicationRelease myOrange_1_0 = new ApplicationRelease(myOrange, "1.0");
ApplicationRelease myOrange_2_0 = new ApplicationRelease(myOrange, "2.0");
applicationReleaseRepository.save(myOrange_1_0);
applicationReleaseRepository.save(myOrange_2_0);
Environment myOrange_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", myOrange_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(myOrange_1_0_env_1);
// given elpaaso public application
Application elpaaso = new Application("elpaaso", "elpaaso");
HashSet<SSOId> elpaasoMembers = new HashSet<>();
elpaasoMembers.add(new SSOId("jdalton"));
elpaaso.setMembers(elpaasoMembers);
applicationRepository.save(elpaaso);
// given releases of application elpaaso
ApplicationRelease elpaaso_1_0 = new ApplicationRelease(elpaaso, "1.0");
applicationReleaseRepository.save(elpaaso_1_0);
Environment elpaaso_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_1);
Environment elpaaso_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_2);
applicationRepository.flush();
applicationReleaseRepository.flush();
environmentRepository.flush();
// assertions
// when I find all active environments
List<Environment> jdaltonEnvs = environmentRepository.findAllPublicOrPrivateByMember("jdalton");
List<Environment> aliceEnvs = environmentRepository.findAllPublicOrPrivateByMember("alice123");
List<Environment> bobEnvs = environmentRepository.findAllPublicOrPrivateByMember("bob123");
Assert.assertEquals("jdalton should see 2 environments", 2, jdaltonEnvs.size());
Assert.assertTrue("jdalton should see elpaaso_1_0_env_1",aliceEnvs.contains(elpaaso_1_0_env_1));
Assert.assertTrue("jdalton should see elpaaso_1_0_env_2",aliceEnvs.contains(elpaaso_1_0_env_2));
Assert.assertEquals("alice should see 3 environments", 4, aliceEnvs.size());
Assert.assertTrue("alice should see joyn_1_0_env_1", aliceEnvs.contains(joyn_1_0_env_1));
Assert.assertTrue("alice should see joyn_1_0_env_2",aliceEnvs.contains(joyn_1_0_env_2));
Assert.assertTrue("alice should see elpaaso_1_0_env_1",aliceEnvs.contains(elpaaso_1_0_env_1));
Assert.assertTrue("alice should see elpaaso_1_0_env_2",aliceEnvs.contains(elpaaso_1_0_env_2));
Assert.assertEquals("bob should see 5 environments", 5, bobEnvs.size());
Assert.assertTrue("bob should see joyn_1_0_env_1", bobEnvs.contains(joyn_1_0_env_1));
Assert.assertTrue("bob should see joyn_1_0_env_2",bobEnvs.contains(joyn_1_0_env_2));
Assert.assertTrue("bob should see myOrange_1_0_env_1", bobEnvs.contains(myOrange_1_0_env_1));
Assert.assertTrue("bob should see elpaaso_1_0_env_1",aliceEnvs.contains(elpaaso_1_0_env_1));
Assert.assertTrue("bob should see elpaaso_1_0_env_2",aliceEnvs.contains(elpaaso_1_0_env_2));
}
@Test
@Transactional
public void should_count_active_environments_for_given_member() throws MalformedURLException {
// given joyn application
Application joyn = new Application("joyn", "joyn");
HashSet<SSOId> joynMembers = new HashSet<>();
joynMembers.add(new SSOId("bob123"));
joynMembers.add(new SSOId("alice123"));
joyn.setAsPrivate();
joyn.setMembers(joynMembers);
applicationRepository.save(joyn);
// given releases of application joyn
ApplicationRelease joyn_1_0 = new ApplicationRelease(joyn, "1.0");
ApplicationRelease joyn_2_0 = new ApplicationRelease(joyn, "2.0");
ApplicationRelease joyn_3_0 = new ApplicationRelease(joyn, "3.0");
applicationReleaseRepository.save(joyn_1_0);
applicationReleaseRepository.save(joyn_2_0);
applicationReleaseRepository.save(joyn_3_0);
Environment joyn_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_1);
Environment joyn_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_2);
// given myOrange application
Application myOrange = new Application("myOrange", "myOrange");
HashSet<SSOId> myOrangeMembers = new HashSet<>();
myOrangeMembers.add(new SSOId("bob123"));
myOrange.setAsPrivate();
myOrange.setMembers(myOrangeMembers);
applicationRepository.save(myOrange);
// given releases of application myOrange
ApplicationRelease myOrange_1_0 = new ApplicationRelease(myOrange, "1.0");
ApplicationRelease myOrange_2_0 = new ApplicationRelease(myOrange, "2.0");
applicationReleaseRepository.save(myOrange_1_0);
applicationReleaseRepository.save(myOrange_2_0);
Environment myOrange_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", myOrange_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(myOrange_1_0_env_1);
// given elpaaso public application
Application elpaaso = new Application("elpaaso", "elpaaso");
applicationRepository.save(elpaaso);
// given releases of application elpaaso
ApplicationRelease elpaaso_1_0 = new ApplicationRelease(elpaaso, "1.0");
applicationReleaseRepository.save(elpaaso_1_0);
Environment elpaaso_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_1);
Environment elpaaso_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_2);
applicationRepository.flush();
applicationReleaseRepository.flush();
environmentRepository.flush();
// assertions
// when I find all active environments
Long jdaltonEnvs = environmentRepository.countActiveByApplicationMember("jdalton");
Long aliceEnvs = environmentRepository.countActiveByApplicationMember("alice123");
Long bobEnvs = environmentRepository.countActiveByApplicationMember("bob123");
Assert.assertEquals("jdalton should see no environment", new Long(0), jdaltonEnvs);
Assert.assertEquals("alice should see 2 environments", new Long(2), aliceEnvs);
Assert.assertEquals("bob should see 3 environments", new Long(3), bobEnvs);
}
@Test
@Transactional
public void should_count_public_environments_or_environment_for_given_member() throws MalformedURLException {
// given joyn application
Application joyn = new Application("joyn", "joyn");
HashSet<SSOId> joynMembers = new HashSet<>();
joynMembers.add(new SSOId("bob123"));
joynMembers.add(new SSOId("alice123"));
joyn.setAsPrivate();
joyn.setMembers(joynMembers);
applicationRepository.save(joyn);
// given releases of application joyn
ApplicationRelease joyn_1_0 = new ApplicationRelease(joyn, "1.0");
ApplicationRelease joyn_2_0 = new ApplicationRelease(joyn, "2.0");
ApplicationRelease joyn_3_0 = new ApplicationRelease(joyn, "3.0");
applicationReleaseRepository.save(joyn_1_0);
applicationReleaseRepository.save(joyn_2_0);
applicationReleaseRepository.save(joyn_3_0);
Environment joyn_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_1);
Environment joyn_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_2);
// given myOrange application
Application myOrange = new Application("myOrange", "myOrange");
HashSet<SSOId> myOrangeMembers = new HashSet<>();
myOrangeMembers.add(new SSOId("bob123"));
myOrange.setAsPrivate();
myOrange.setMembers(myOrangeMembers);
applicationRepository.save(myOrange);
// given releases of application myOrange
ApplicationRelease myOrange_1_0 = new ApplicationRelease(myOrange, "1.0");
ApplicationRelease myOrange_2_0 = new ApplicationRelease(myOrange, "2.0");
applicationReleaseRepository.save(myOrange_1_0);
applicationReleaseRepository.save(myOrange_2_0);
Environment myOrange_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", myOrange_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(myOrange_1_0_env_1);
// given elpaaso public application
Application elpaaso = new Application("elpaaso", "elpaaso");
applicationRepository.save(elpaaso);
// given releases of application elpaaso
ApplicationRelease elpaaso_1_0 = new ApplicationRelease(elpaaso, "1.0");
applicationReleaseRepository.save(elpaaso_1_0);
Environment elpaaso_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_1);
Environment elpaaso_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_2);
applicationRepository.flush();
applicationReleaseRepository.flush();
environmentRepository.flush();
// assertions
// when I find all active environments
Long jdaltonEnvs = environmentRepository.countActiveByApplicationMember("jdalton");
Long aliceEnvs = environmentRepository.countActiveByApplicationMember("alice123");
Long bobEnvs = environmentRepository.countActiveByApplicationMember("bob123");
Assert.assertEquals("jdalton should see no environment", new Long(0), jdaltonEnvs);
Assert.assertEquals("alice should see 2 environments", new Long(2), aliceEnvs);
Assert.assertEquals("bob should see 3 environments", new Long(3), bobEnvs);
}
@Test
@Transactional
public void should_find_active_public_environments_or_environment_by_member_for_given_release() throws MalformedURLException {
// given joyn application
Application joyn = new Application("joyn", "joyn");
HashSet<SSOId> joynMembers = new HashSet<>();
joynMembers.add(new SSOId("bob123"));
joynMembers.add(new SSOId("alice123"));
joyn.setAsPrivate();
joyn.setMembers(joynMembers);
applicationRepository.save(joyn);
// given releases of application joyn
ApplicationRelease joyn_1_0 = new ApplicationRelease(joyn, "1.0");
ApplicationRelease joyn_2_0 = new ApplicationRelease(joyn, "2.0");
ApplicationRelease joyn_3_0 = new ApplicationRelease(joyn, "3.0");
applicationReleaseRepository.save(joyn_1_0);
applicationReleaseRepository.save(joyn_2_0);
applicationReleaseRepository.save(joyn_3_0);
Environment joyn_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_1);
Environment joyn_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_2);
// given myOrange application
Application myOrange = new Application("myOrange", "myOrange");
HashSet<SSOId> myOrangeMembers = new HashSet<>();
myOrangeMembers.add(new SSOId("bob123"));
myOrange.setAsPrivate();
myOrange.setMembers(myOrangeMembers);
applicationRepository.save(myOrange);
// given releases of application myOrange
ApplicationRelease myOrange_1_0 = new ApplicationRelease(myOrange, "1.0");
ApplicationRelease myOrange_2_0 = new ApplicationRelease(myOrange, "2.0");
applicationReleaseRepository.save(myOrange_1_0);
applicationReleaseRepository.save(myOrange_2_0);
Environment myOrange_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", myOrange_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(myOrange_1_0_env_1);
// given elpaaso public application
Application elpaaso = new Application("elpaaso", "elpaaso");
HashSet<SSOId> elpaasoMembers = new HashSet<>();
elpaasoMembers.add(new SSOId("jdalton"));
elpaaso.setMembers(elpaasoMembers);
applicationRepository.save(elpaaso);
// given releases of application elpaaso
ApplicationRelease elpaaso_1_0 = new ApplicationRelease(elpaaso, "1.0");
applicationReleaseRepository.save(elpaaso_1_0);
Environment elpaaso_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_1);
Environment elpaaso_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_2);
applicationRepository.flush();
applicationReleaseRepository.flush();
environmentRepository.flush();
// assertions
// when I find all active environments
List<Environment> jdalton_joyn_1_0_envs = environmentRepository.findAllPublicOrPrivateByMemberAndByApplicationRelease(joyn_1_0.getUID(),"jdalton");
List<Environment> alice_joyn_1_0_envs = environmentRepository.findAllPublicOrPrivateByMemberAndByApplicationRelease(joyn_1_0.getUID(),"alice123");
List<Environment> bob_joyn_1_0_envs = environmentRepository.findAllPublicOrPrivateByMemberAndByApplicationRelease(joyn_1_0.getUID(),"bob123");
Assert.assertEquals("jdalton should see no environment of joyn_1_0", 0, jdalton_joyn_1_0_envs.size());
Assert.assertEquals("alice should see 2 environments of joyn_1_0", 2, alice_joyn_1_0_envs.size());
Assert.assertTrue("alice should see joyn_1_0_env_1", alice_joyn_1_0_envs.contains(joyn_1_0_env_1));
Assert.assertTrue("alice should see joyn_1_0_env_2",alice_joyn_1_0_envs.contains(joyn_1_0_env_2));
Assert.assertEquals("bob should see 2 environments of joyn_1_0", 2, bob_joyn_1_0_envs.size());
Assert.assertTrue("bob should see joyn_1_0_env_1", bob_joyn_1_0_envs.contains(joyn_1_0_env_1));
Assert.assertTrue("bob should see joyn_1_0_env_2",bob_joyn_1_0_envs.contains(joyn_1_0_env_2));
List<Environment> jdalton_elpaaso_1_0_envs = environmentRepository.findAllPublicOrPrivateByMemberAndByApplicationRelease(elpaaso_1_0.getUID(),"jdalton");
List<Environment> alice_elpaaso_1_0_envs = environmentRepository.findAllPublicOrPrivateByMemberAndByApplicationRelease(elpaaso_1_0.getUID(),"alice123");
List<Environment> bob_elpaaso_1_0_envs = environmentRepository.findAllPublicOrPrivateByMemberAndByApplicationRelease(elpaaso_1_0.getUID(),"bob123");
Assert.assertEquals("jdalton should see 2 environments of elpaaso_1_0", 2, jdalton_elpaaso_1_0_envs.size());
Assert.assertTrue("jdalton should see elpaaso_1_0_env_1", jdalton_elpaaso_1_0_envs.contains(elpaaso_1_0_env_1));
Assert.assertTrue("jdalton should see elpaaso_1_0_env_2",jdalton_elpaaso_1_0_envs.contains(elpaaso_1_0_env_2));
Assert.assertEquals("alice should see 2 environments of elpaaso_1_0", 2, alice_elpaaso_1_0_envs.size());
Assert.assertTrue("alice should see elpaaso_1_0_env_1", alice_elpaaso_1_0_envs.contains(elpaaso_1_0_env_1));
Assert.assertTrue("alice should see elpaaso_1_0_env_2",alice_elpaaso_1_0_envs.contains(elpaaso_1_0_env_2));
Assert.assertEquals("bob should see 2 environments of elpaaso_1_0", 2, bob_elpaaso_1_0_envs.size());
Assert.assertTrue("bob should see elpaaso_1_0_env_1", bob_elpaaso_1_0_envs.contains(elpaaso_1_0_env_1));
Assert.assertTrue("bob should see elpaaso_1_0_env_2",bob_elpaaso_1_0_envs.contains(elpaaso_1_0_env_2));
}
@Test
@Transactional
public void should_count_active_public_environments_or_environment_by_member_for_given_release() throws MalformedURLException {
// given joyn application
Application joyn = new Application("joyn", "joyn");
HashSet<SSOId> joynMembers = new HashSet<>();
joynMembers.add(new SSOId("bob123"));
joynMembers.add(new SSOId("alice123"));
joyn.setAsPrivate();
joyn.setMembers(joynMembers);
applicationRepository.save(joyn);
// given releases of application joyn
ApplicationRelease joyn_1_0 = new ApplicationRelease(joyn, "1.0");
ApplicationRelease joyn_2_0 = new ApplicationRelease(joyn, "2.0");
ApplicationRelease joyn_3_0 = new ApplicationRelease(joyn, "3.0");
applicationReleaseRepository.save(joyn_1_0);
applicationReleaseRepository.save(joyn_2_0);
applicationReleaseRepository.save(joyn_3_0);
Environment joyn_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_1);
Environment joyn_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_2);
// given myOrange application
Application myOrange = new Application("myOrange", "myOrange");
HashSet<SSOId> myOrangeMembers = new HashSet<>();
myOrangeMembers.add(new SSOId("bob123"));
myOrange.setAsPrivate();
myOrange.setMembers(myOrangeMembers);
applicationRepository.save(myOrange);
// given releases of application myOrange
ApplicationRelease myOrange_1_0 = new ApplicationRelease(myOrange, "1.0");
ApplicationRelease myOrange_2_0 = new ApplicationRelease(myOrange, "2.0");
applicationReleaseRepository.save(myOrange_1_0);
applicationReleaseRepository.save(myOrange_2_0);
Environment myOrange_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", myOrange_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(myOrange_1_0_env_1);
// given elpaaso public application
Application elpaaso = new Application("elpaaso", "elpaaso");
HashSet<SSOId> elpaasoMembers = new HashSet<>();
elpaasoMembers.add(new SSOId("jdalton"));
elpaaso.setMembers(elpaasoMembers);
applicationRepository.save(elpaaso);
// given releases of application elpaaso
ApplicationRelease elpaaso_1_0 = new ApplicationRelease(elpaaso, "1.0");
applicationReleaseRepository.save(elpaaso_1_0);
Environment elpaaso_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_1);
Environment elpaaso_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_2);
applicationRepository.flush();
applicationReleaseRepository.flush();
environmentRepository.flush();
// assertions
// when I count all active environments
long jdalton_joyn_1_0_envs = environmentRepository.countAllPublicOrPrivateByMemberAndByApplicationRelease(joyn_1_0.getUID(),"jdalton");
long alice_joyn_1_0_envs = environmentRepository.countAllPublicOrPrivateByMemberAndByApplicationRelease(joyn_1_0.getUID(),"alice123");
long bob_joyn_1_0_envs = environmentRepository.countAllPublicOrPrivateByMemberAndByApplicationRelease(joyn_1_0.getUID(),"bob123");
Assert.assertEquals("jdalton should see no environment of joyn_1_0", 0, jdalton_joyn_1_0_envs);
Assert.assertEquals("alice should see 2 environments of joyn_1_0", 2, alice_joyn_1_0_envs);
Assert.assertEquals("bob should see 2 environments of joyn_1_0", 2, bob_joyn_1_0_envs);
long jdalton_elpaaso_1_0_envs = environmentRepository.countAllPublicOrPrivateByMemberAndByApplicationRelease(elpaaso_1_0.getUID(),"jdalton");
long alice_elpaaso_1_0_envs = environmentRepository.countAllPublicOrPrivateByMemberAndByApplicationRelease(elpaaso_1_0.getUID(),"alice123");
long bob_elpaaso_1_0_envs = environmentRepository.countAllPublicOrPrivateByMemberAndByApplicationRelease(elpaaso_1_0.getUID(),"bob123");
Assert.assertEquals("jdalton should see 2 environments of elpaaso_1_0", 2, jdalton_elpaaso_1_0_envs);
Assert.assertEquals("alice should see 2 environments of elpaaso_1_0", 2, alice_elpaaso_1_0_envs);
Assert.assertEquals("bob should see 2 environments of elpaaso_1_0", 2, bob_elpaaso_1_0_envs);
}
@Test
@Transactional
public void should_count_public_environments_or_private_environment_for_given_member() throws MalformedURLException {
// given joyn application
Application joyn = new Application("joyn", "joyn");
HashSet<SSOId> joynMembers = new HashSet<>();
joynMembers.add(new SSOId("bob123"));
joynMembers.add(new SSOId("alice123"));
joyn.setAsPrivate();
joyn.setMembers(joynMembers);
applicationRepository.save(joyn);
// given releases of application joyn
ApplicationRelease joyn_1_0 = new ApplicationRelease(joyn, "1.0");
ApplicationRelease joyn_2_0 = new ApplicationRelease(joyn, "2.0");
ApplicationRelease joyn_3_0 = new ApplicationRelease(joyn, "3.0");
applicationReleaseRepository.save(joyn_1_0);
applicationReleaseRepository.save(joyn_2_0);
applicationReleaseRepository.save(joyn_3_0);
Environment joyn_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_1);
Environment joyn_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", joyn_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(joyn_1_0_env_2);
// given myOrange application
Application myOrange = new Application("myOrange", "myOrange");
HashSet<SSOId> myOrangeMembers = new HashSet<>();
myOrangeMembers.add(new SSOId("bob123"));
myOrange.setAsPrivate();
myOrange.setMembers(myOrangeMembers);
applicationRepository.save(myOrange);
// given releases of application myOrange
ApplicationRelease myOrange_1_0 = new ApplicationRelease(myOrange, "1.0");
ApplicationRelease myOrange_2_0 = new ApplicationRelease(myOrange, "2.0");
applicationReleaseRepository.save(myOrange_1_0);
applicationReleaseRepository.save(myOrange_2_0);
Environment myOrange_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", myOrange_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(myOrange_1_0_env_1);
// given elpaaso public application
Application elpaaso = new Application("elpaaso", "elpaaso");
HashSet<SSOId> elpaasoMembers = new HashSet<>();
elpaasoMembers.add(new SSOId("jdalton"));
elpaaso.setMembers(elpaasoMembers);
applicationRepository.save(elpaaso);
// given releases of application elpaaso
ApplicationRelease elpaaso_1_0 = new ApplicationRelease(elpaaso, "1.0");
applicationReleaseRepository.save(elpaaso_1_0);
Environment elpaaso_1_0_env_1 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_1);
Environment elpaaso_1_0_env_2 = new Environment(DeploymentProfileEnum.DEVELOPMENT, "anotherLabel", elpaaso_1_0, manager,
technicalDeploymentInstance);
environmentRepository.save(elpaaso_1_0_env_2);
applicationRepository.flush();
applicationReleaseRepository.flush();
environmentRepository.flush();
// assertions
// when I count all active environments
long jdaltonEnvs = environmentRepository.countPublicOrPrivateByMember("jdalton");
long aliceEnvs = environmentRepository.countPublicOrPrivateByMember("alice123");
long bobEnvs = environmentRepository.countPublicOrPrivateByMember("bob123");
Assert.assertEquals("jdalton should see 2 environments", 2, jdaltonEnvs);
Assert.assertEquals("alice should see 3 environments", 4, aliceEnvs);
Assert.assertEquals("bob should see 5 environments", 5, bobEnvs);
}
}