package com.sequenceiq.cloudbreak.controller; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doNothing; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import com.sequenceiq.cloudbreak.api.model.RDSBuildRequest; import com.sequenceiq.cloudbreak.api.model.RDSConfigRequest; import com.sequenceiq.cloudbreak.api.model.RDSDatabase; import com.sequenceiq.cloudbreak.api.model.RdsBuildResult; import com.sequenceiq.cloudbreak.common.type.RdsType; import com.sequenceiq.cloudbreak.controller.validation.ldapconfig.LdapConfigValidator; import com.sequenceiq.cloudbreak.controller.validation.rds.RdsConnectionBuilder; import com.sequenceiq.cloudbreak.controller.validation.rds.RdsConnectionValidator; import com.sequenceiq.cloudbreak.repository.RdsConfigRepository; @RunWith(MockitoJUnitRunner.class) public class UtilControllerTest { @InjectMocks private UtilController underTest; @Mock private RdsConnectionValidator rdsConnectionValidator; @Mock private RdsConnectionBuilder rdsConnectionBuilder; @Mock private LdapConfigValidator ldapConfigValidator; @Mock private RdsConfigRepository rdsConfigRepository; @Before public void before() { doNothing().when(rdsConnectionBuilder).buildRdsConnection(anyString(), anyString(), anyString(), anyString()); } @Test public void databaseCreationTestWhenClusterContainsHyphens() { RDSBuildRequest rdsBuildRequest = rdsBuildRequest(rdsConfigRequest(), "testcluster-123"); RdsBuildResult rdsBuildResult = underTest.buildRdsConnection(rdsBuildRequest); assertEquals("testcluster123ambari", rdsBuildResult.getAmbariDbName()); assertEquals("testcluster123hive", rdsBuildResult.getHiveDbName()); assertEquals("testcluster123ranger", rdsBuildResult.getRangerDbName()); } @Test public void databaseCreationTestWhenClusterContainsSpecialCharachters() { RDSBuildRequest rdsBuildRequest = rdsBuildRequest(rdsConfigRequest(), "testcluster-123??#@234"); RdsBuildResult rdsBuildResult = underTest.buildRdsConnection(rdsBuildRequest); assertEquals("testcluster123234ambari", rdsBuildResult.getAmbariDbName()); assertEquals("testcluster123234hive", rdsBuildResult.getHiveDbName()); assertEquals("testcluster123234ranger", rdsBuildResult.getRangerDbName()); } private RDSBuildRequest rdsBuildRequest(RDSConfigRequest rdsConfigRequest, String clusterName) { RDSBuildRequest rdsBuildRequest = new RDSBuildRequest(); rdsBuildRequest.setRdsConfigRequest(rdsConfigRequest); rdsBuildRequest.setClusterName(clusterName); return rdsBuildRequest; } private RDSConfigRequest rdsConfigRequest() { RDSConfigRequest rdsConfigRequest = new RDSConfigRequest(); rdsConfigRequest.setConnectionPassword("testPassword"); rdsConfigRequest.setConnectionUserName("testUserName"); rdsConfigRequest.setName("testName"); rdsConfigRequest.setValidated(false); rdsConfigRequest.setHdpVersion("2.6"); rdsConfigRequest.setType(RdsType.HIVE); rdsConfigRequest.setConnectionURL("jdbc:postgres://testdb:5432/tesdb"); rdsConfigRequest.setDatabaseType(RDSDatabase.POSTGRES); return rdsConfigRequest; } }