package org.cloudfoundry.runtime.service.relational;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.when;
import javax.sql.DataSource;
import org.cloudfoundry.runtime.env.CloudEnvironment;
import org.cloudfoundry.runtime.env.MysqlServiceInfo;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.jdbc.datasource.SimpleDriverDataSource;
import org.springframework.test.util.ReflectionTestUtils;
public class CloudDataSourceFactoryTest {
@Mock private CloudEnvironment mockRuntime;
@Mock private MysqlServiceInfo mockServiceInfo;
private CloudDataSourceFactory factory;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
factory = new CloudDataSourceFactory(mockRuntime);
}
@Test
public void cloudDataSourceCreation() throws Exception {
when(mockRuntime.getServiceInfo("mysql-1", MysqlServiceInfo.class))
.thenReturn(mockServiceInfo);
when(mockServiceInfo.getUrl()).thenReturn("jdbc:mysql://10.20.30.40:3306/database-123");
when(mockServiceInfo.getUserName()).thenReturn("myuser");
when(mockServiceInfo.getPassword()).thenReturn("mypass");
factory.setServiceName("mysql-1");
factory.afterPropertiesSet();
DataSource dataSource = factory.getObject();
assertNotNull(dataSource);
assertEquals("jdbc:mysql://10.20.30.40:3306/database-123", ReflectionTestUtils.getField(dataSource, "url"));
assertEquals("myuser", ReflectionTestUtils.getField(dataSource, "username"));
assertEquals("mypass", ReflectionTestUtils.getField(dataSource, "password"));
}
}