Skip to content

Commit

Permalink
Merge a7a6c4e into d0f788d
Browse files Browse the repository at this point in the history
  • Loading branch information
labamba63 committed Jul 2, 2018
2 parents d0f788d + a7a6c4e commit dbdecdb
Show file tree
Hide file tree
Showing 38 changed files with 1,118 additions and 119 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package pl.gov.coi.cascades.server;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;

import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyVararg;
import static org.mockito.Mockito.when;

/**
* @author <a href="mailto:lukasz.malek@coi.gov.pl">Łukasz Małek</a>
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AppMain.class)
@ProductionHibernateTest
public class AppMainStartTestIT {

@Mock
private SpringApplicationFactory applicationFactory;

@Mock
private SpringApplication application;

@Mock
private ConfigurableApplicationContext applicationContext;

@Test
public void shouldApplicationStartOnProductionProfile(){
//given
AppMain.setAppMainSupplier(() -> new AppMain(applicationFactory));

when(applicationFactory.create(any())).thenReturn(application);
when(application.run(anyVararg())).thenReturn(applicationContext);
when(applicationContext.isActive()).thenReturn(true);

// when
try {
AppMain.main(new String[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package pl.gov.coi.cascades.server;

import org.springframework.test.context.ActiveProfiles;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* @author <a href="mailto:lukasz.malek@coi.gov.pl">Łukasz Małek</a>
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@ActiveProfiles({Environment.PRODUCTION_NAME, ProfileType.HIBERNATE_NAME})
@interface ProductionHibernateTest {
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,19 @@
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import pl.gov.coi.cascades.contract.domain.Template;
import pl.gov.coi.cascades.contract.domain.Template;
import pl.gov.coi.cascades.contract.domain.TemplateIdStatus;
import pl.gov.coi.cascades.server.domain.TemplateIdGateway;
import pl.gov.coi.cascades.server.domain.User;
import pl.gov.coi.cascades.server.domain.UserGateway;
import pl.gov.coi.cascades.server.persistance.hibernate.TemplateIdGatewayImpl;
import pl.gov.coi.cascades.server.persistance.hibernate.mapper.TemplateIdMapper;

import javax.inject.Inject;
import java.util.Optional;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.contains;
import static org.mockito.Mockito.times;
Expand All @@ -38,13 +41,20 @@
public class TemplateGatewayImplFunctionalIT {

private static final String NON_EXISTING_TEMPLATE_ID = "875785887";
private static final String EXISTING_TEMPLATE_ID = "1";
private static final String EXISTING_USER = "jrambo";

private TemplateIdGateway templateIdGateway;
private String id;
private String serverId;
private String version;
private TemplateIdStatus status;
private boolean isDefault;
private UserGateway userGateway;

@Inject
public void setUserGateway(UserGateway userGateway) {
this.userGateway = userGateway;
}

@Inject
public void setDatabaseIdGateway(TemplateIdGateway templateIdGateway) {
Expand Down Expand Up @@ -121,12 +131,23 @@ public void testSaveWhenLoggerIsNotInfoEnabled() throws Exception {

@Test
public void testFindPositivePath() throws Exception {
// when
Optional<Template> actual = templateIdGateway.find(EXISTING_TEMPLATE_ID);

// then
assertThat(actual).isNotNull();
assertThat(actual.isPresent()).isTrue();
//given
Optional<User> user = userGateway.find(EXISTING_USER);
String templateId = user.get().getDatabases().iterator().next().getTemplate().getId();

//when
Optional<Template> result = templateIdGateway.find(templateId);

//then
Template templateResult = result.orElse(null);

assertNotNull(templateResult);
assertEquals(TemplateIdStatus.CREATED, templateResult.getStatus());
assertEquals("sdfasdq1234", templateResult.getId());
assertEquals("rgey65getg", templateResult.getServerId());
assertEquals("oracle_template", templateResult.getName());
assertEquals(true, templateResult.isDefault());
assertEquals("0.0.1", templateResult.getVersion());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package pl.gov.coi.cascades.server;

import lombok.AllArgsConstructor;
import pl.gov.coi.cascades.contract.domain.NetworkBind;
import pl.gov.coi.cascades.contract.domain.Template;
import pl.gov.coi.cascades.server.domain.DatabaseInstance;
import pl.gov.coi.cascades.server.domain.DatabaseOperations;
import pl.gov.coi.cascades.server.domain.TemplateIdGateway;
import pl.wavesoftware.eid.exceptions.EidIllegalArgumentException;

import java.util.Optional;

@AllArgsConstructor
public class DatabaseOperationsImpl implements DatabaseOperations {

private ServerConfigurationService serverConfigurationService;
private TemplateIdGateway templateIdGateway;

@Override
@Deprecated
public NetworkBind createDatabase(DatabaseInstance databaseInstance) {
String templateId = databaseInstance.getTemplate().getId();
NetworkBind networkBind = getNetworkBind(templateId);
// TODO: write implementation

return networkBind;
}

@Override
@Deprecated
public void deleteDatabase(DatabaseInstance databaseInstance) {
// TODO: write implementation
throw new UnsupportedOperationException("Not yet implemented!");
}

private NetworkBind getNetworkBind(String templateId) {
Optional<Template> templateOptional = templateIdGateway.find(templateId);
Template template = templateOptional != null ? templateOptional.orElse(null) : null;

if (template != null) {
Optional<ServerDef> correctServerDef = serverConfigurationService
.getManagedServers()
.stream()
.filter(p -> p.getServerId()
.equalsIgnoreCase(template.getServerId())
)
.findFirst();

ServerDef serverDef = correctServerDef.orElse(null);

if (serverDef != null) {
return new NetworkBindImpl(serverDef.getHost(), serverDef.getPort());
}
}

throw new EidIllegalArgumentException(
"20180628:191916",
"Given templateId with serverID hasn't been found in connection settings."
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package pl.gov.coi.cascades.server;


import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import pl.gov.coi.cascades.contract.domain.NetworkBind;

@AllArgsConstructor
@Getter
@Setter
public class NetworkBindImpl implements NetworkBind {

private String host;
private int port;
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,14 @@ UseCase produceLaunchNewDatabaseUseCase(LaunchNewDatabaseGatewayFacade launchNew
LaunchNewDatabaseGatewayFacade produceGateways(TemplateIdGateway templateIdGateway,
UserGateway userGateway,
DatabaseLimitGateway databaseLimitGateway,
DatabaseInstanceGateway databaseInstanceGateway) {
DatabaseInstanceGateway databaseInstanceGateway,
DatabaseOperations databaseOperations) {
return new LaunchNewDatabaseGatewayFacade(
templateIdGateway,
userGateway,
databaseLimitGateway,
databaseInstanceGateway
databaseInstanceGateway,
databaseOperations
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,18 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import pl.gov.coi.cascades.server.DatabaseOperationsImpl;
import pl.gov.coi.cascades.server.ProfileType;
import pl.gov.coi.cascades.server.ServerConfigurationService;
import pl.gov.coi.cascades.server.domain.DatabaseIdGateway;
import pl.gov.coi.cascades.server.domain.DatabaseInstanceGateway;
import pl.gov.coi.cascades.server.domain.DatabaseLimitGateway;
import pl.gov.coi.cascades.server.domain.DatabaseOperations;
import pl.gov.coi.cascades.server.domain.DatabaseTypeClassNameService;
import pl.gov.coi.cascades.server.domain.TemplateIdGateway;
import pl.gov.coi.cascades.server.domain.UserGateway;

import javax.transaction.Transactional;
import pl.gov.coi.cascades.server.persistance.hibernate.mapper.DatabaseInstanceMapper;
import pl.gov.coi.cascades.server.persistance.hibernate.mapper.UserMapper;

/**
* @author <a href="agnieszka.celuch@coi.gov.pl">Agnieszka Celuch</a>
Expand All @@ -20,23 +25,43 @@
public class HibernateConfiguration {

@Bean
@Transactional
TemplateIdGateway createTemplateIdGateway() {
return new TemplateIdGatewayImpl();
}

@Bean
@Transactional
UserGateway createUserGateway(DatabaseTypeClassNameService databaseTypeClassNameService) {
return new UserGatewayImpl(databaseTypeClassNameService);
UserGateway createUserGateway(UserMapper userMapper) {
return new UserGatewayImpl(userMapper);
}

@Bean
DatabaseIdGateway createDatabaseIdGateway(DatabaseInstanceMapper databaseInstanceMapper) {
return new DatabaseIdGatewayImpl(databaseInstanceMapper);
}

@Bean
@Transactional
DatabaseIdGateway createDatabaseIdGateway(DatabaseTypeClassNameService databaseTypeClassNameService) {
return new DatabaseIdGatewayImpl(
databaseTypeClassNameService
);
DatabaseInstanceGateway createDatabaseInstanceGateway(DatabaseInstanceMapper databaseInstanceMapper) {
return new DatabaseInstanceGatewayImpl(databaseInstanceMapper);
}

@Bean
DatabaseLimitGateway createDatabaseLimitGateway(DatabaseInstanceMapper databaseInstanceMapper) {
return new DatabaseLimitGatewayImpl(databaseInstanceMapper);
}

@Bean
UserMapper createUserMapper(DatabaseTypeClassNameService databaseTypeClassNameService) {
return new UserMapper(databaseTypeClassNameService);
}

@Bean
DatabaseInstanceMapper createDatabaseInstanceMapper(DatabaseTypeClassNameService databaseTypeClassNameService) {
return new DatabaseInstanceMapper(databaseTypeClassNameService);
}

@Bean
DatabaseOperations createDatabaseOperations(ServerConfigurationService serverConfigurationService,
TemplateIdGateway templateIdGateway) {
return new DatabaseOperationsImpl(serverConfigurationService, templateIdGateway);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import pl.gov.coi.cascades.server.domain.DatabaseIdGateway;
import pl.gov.coi.cascades.server.domain.DatabaseInstanceGateway;
import pl.gov.coi.cascades.server.domain.DatabaseLimitGateway;
import pl.gov.coi.cascades.server.domain.DatabaseOperations;
import pl.gov.coi.cascades.server.domain.DatabaseTemplateGateway;
import pl.gov.coi.cascades.server.domain.TemplateIdGateway;
import pl.gov.coi.cascades.server.domain.User;
Expand Down Expand Up @@ -52,6 +53,12 @@ DatabaseInstanceGateway produceDatabaseInstanceGateway() {
return new DatabaseInstanceGatewayStub();
}

@ConditionalOnMissingBean
@Bean
DatabaseOperations produceDatabaseOperations() {
return new DatabaseOperationsStub();
}

@ConditionalOnMissingBean
@Bean
UserGateway produceUserGateway(@Named(STUB_DATABASE) Map<Object, User> database) {
Expand Down
Loading

0 comments on commit dbdecdb

Please sign in to comment.