package org.pentaho.reporting.engine.classic.core.modules.misc.connections;
import junit.framework.TestCase;
import org.pentaho.database.model.IDatabaseConnection;
import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot;
import java.util.List;
public class EditableDataSourceMgmtServiceIT extends TestCase {
public EditableDataSourceMgmtServiceIT() {
}
protected void setUp() throws Exception {
ClassicEngineBoot.getInstance().start();
}
public void testCreateDataSource() {
InMemoryDataSourceMgmtService backend = new InMemoryDataSourceMgmtService();
EditDataSourceMgmtService editor = new EditDataSourceMgmtService( backend );
IDatabaseConnection c = ConnectionDefinitionIOIT.generateDatabaseConnection();
editor.createDatasource( c );
editor.commit();
List<String> datasourceIds = backend.getDatasourceIds();
assertEquals( 1, datasourceIds.size() );
final String dsId = datasourceIds.get( 0 );
assertEquals( c.getDatabaseName(), backend.getDatasourceById( dsId ).getDatabaseName() );
assertEquals( c.getName(), backend.getDatasourceById( dsId ).getName() );
assertEquals( c.getDatabaseName(), backend.getDatasourceByName( c.getName() ).getDatabaseName() );
assertEquals( c.getName(), backend.getDatasourceByName( c.getName() ).getName() );
}
public void testUpdateDataSource() {
InMemoryDataSourceMgmtService backend = new InMemoryDataSourceMgmtService();
IDatabaseConnection c = ConnectionDefinitionIOIT.generateDatabaseConnection();
String realId = backend.createDatasource( c );
EditDataSourceMgmtService editor = new EditDataSourceMgmtService( backend );
IDatabaseConnection c2 = ConnectionDefinitionIOIT.generateDatabaseConnection();
c2.setId( realId );
c2.setName( "Name" );
editor.updateDatasourceById( realId, c2 );
editor.commit();
List<String> datasourceIds = backend.getDatasourceIds();
assertEquals( 1, datasourceIds.size() );
assertEquals( realId, datasourceIds.get( 0 ) );
assertEquals( c2.getDatabaseName(), backend.getDatasourceById( realId ).getDatabaseName() );
assertEquals( c2.getName(), backend.getDatasourceById( realId ).getName() );
assertEquals( c2.getDatabaseName(), backend.getDatasourceByName( c2.getName() ).getDatabaseName() );
assertEquals( c2.getName(), backend.getDatasourceByName( c2.getName() ).getName() );
}
public void testRemoveDataSource() {
InMemoryDataSourceMgmtService backend = new InMemoryDataSourceMgmtService();
IDatabaseConnection c = ConnectionDefinitionIOIT.generateDatabaseConnection();
String realId = backend.createDatasource( c );
EditDataSourceMgmtService editor = new EditDataSourceMgmtService( backend );
editor.deleteDatasourceById( realId );
editor.commit();
List<String> datasourceIds = backend.getDatasourceIds();
assertEquals( 0, datasourceIds.size() );
}
public void testRemoveThenAddDataSource() {
InMemoryDataSourceMgmtService backend = new InMemoryDataSourceMgmtService();
IDatabaseConnection r = ConnectionDefinitionIOIT.generateDatabaseConnection();
String realId = backend.createDatasource( r );
EditDataSourceMgmtService editor = new EditDataSourceMgmtService( backend );
editor.deleteDatasourceById( realId );
IDatabaseConnection c2 = ConnectionDefinitionIOIT.generateDatabaseConnection();
c2.setName( r.getName() );
editor.createDatasource( c2 );
editor.commit();
List<String> datasourceIds = backend.getDatasourceIds();
assertEquals( 1, datasourceIds.size() );
final String dsId = datasourceIds.get( 0 );
assertEquals( c2.getDatabaseName(), backend.getDatasourceById( dsId ).getDatabaseName() );
assertEquals( c2.getName(), backend.getDatasourceById( dsId ).getName() );
assertEquals( c2.getDatabaseName(), backend.getDatasourceByName( c2.getName() ).getDatabaseName() );
assertEquals( c2.getName(), backend.getDatasourceByName( c2.getName() ).getName() );
}
public void testRemoveThenAddThenRemoveDataSource() {
InMemoryDataSourceMgmtService backend = new InMemoryDataSourceMgmtService();
IDatabaseConnection r = ConnectionDefinitionIOIT.generateDatabaseConnection();
String realId = backend.createDatasource( r );
EditDataSourceMgmtService editor = new EditDataSourceMgmtService( backend );
editor.deleteDatasourceById( realId );
IDatabaseConnection c2 = ConnectionDefinitionIOIT.generateDatabaseConnection();
c2.setName( r.getName() );
String id = editor.createDatasource( c2 );
editor.deleteDatasourceById( id );
editor.commit();
List<String> datasourceIds = backend.getDatasourceIds();
assertEquals( 0, datasourceIds.size() );
}
}