mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
109 lines
3.3 KiB
Java
109 lines
3.3 KiB
Java
package io.ebean;
|
|
|
|
import io.ebean.config.*;
|
|
import io.ebean.config.dbplatform.mysql.MySqlPlatform;
|
|
import io.ebean.config.dbplatform.postgres.PostgresPlatform;
|
|
import org.junit.Test;
|
|
import org.mockito.Mockito;
|
|
|
|
import javax.sql.DataSource;
|
|
|
|
public class EbeanServerFactory_MultiTenancy_Test {
|
|
|
|
/**
|
|
* Tests using multi tenancy per database
|
|
*/
|
|
@Test
|
|
public void create_new_server_with_multi_tenancy_db() {
|
|
|
|
String tenant = "customer";
|
|
CurrentTenantProvider tenantProvider = Mockito.mock(CurrentTenantProvider.class);
|
|
Mockito.doReturn(tenant).when(tenantProvider).currentId();
|
|
|
|
DataSource mockedDataSource = Mockito.mock(DataSource.class);
|
|
TenantDataSourceProvider dataSourceProvider = Mockito.mock(TenantDataSourceProvider.class);
|
|
Mockito.doReturn(mockedDataSource).when(dataSourceProvider).dataSource(tenant);
|
|
|
|
ServerConfig config = new ServerConfig();
|
|
config.setName("multiTenantDb");
|
|
config.loadFromProperties();
|
|
config.loadTestProperties();
|
|
config.setRegister(false);
|
|
config.setDefaultServer(false);
|
|
|
|
config.setTenantMode(TenantMode.DB);
|
|
config.setCurrentTenantProvider(tenantProvider);
|
|
config.setTenantDataSourceProvider(dataSourceProvider);
|
|
|
|
// When TenantMode.DB we don't really want to run DDL
|
|
// and we want to explicitly specify the Database platform
|
|
//config.setDdlGenerate(false);
|
|
//config.setDdlRun(false);
|
|
config.setDatabasePlatform(new PostgresPlatform());
|
|
|
|
EbeanServerFactory.create(config);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Tests using multi tenancy per schema
|
|
*/
|
|
@Test
|
|
public void create_new_server_with_multi_tenancy_schema() {
|
|
|
|
String tenant = "customer";
|
|
CurrentTenantProvider tenantProvider = Mockito.mock(CurrentTenantProvider.class);
|
|
Mockito.doReturn(tenant).when(tenantProvider).currentId();
|
|
|
|
TenantSchemaProvider schemaProvider = Mockito.mock(TenantSchemaProvider.class);
|
|
Mockito.doReturn("tenant_schema").when(schemaProvider).schema(tenant);
|
|
|
|
ServerConfig config = new ServerConfig();
|
|
config.setName("h2");
|
|
config.loadFromProperties();
|
|
config.loadTestProperties();
|
|
config.setRegister(false);
|
|
config.setDefaultServer(false);
|
|
|
|
config.setTenantMode(TenantMode.SCHEMA);
|
|
config.setCurrentTenantProvider(tenantProvider);
|
|
config.setTenantSchemaProvider(schemaProvider);
|
|
|
|
config.setDdlRun(false);
|
|
config.setDatabasePlatform(new MySqlPlatform());
|
|
|
|
EbeanServerFactory.create(config);
|
|
}
|
|
|
|
/**
|
|
* Tests using multi tenancy per schema
|
|
*/
|
|
@Test
|
|
public void create_new_server_with_multi_tenancy_catalog() {
|
|
|
|
String tenant = "customer";
|
|
CurrentTenantProvider tenantProvider = Mockito.mock(CurrentTenantProvider.class);
|
|
Mockito.doReturn(tenant).when(tenantProvider).currentId();
|
|
|
|
TenantCatalogProvider catalogProvider = Mockito.mock(TenantCatalogProvider.class);
|
|
Mockito.doReturn("tenant_catalog").when(catalogProvider).catalog(tenant);
|
|
|
|
ServerConfig config = new ServerConfig();
|
|
config.setName("h2");
|
|
config.loadFromProperties();
|
|
config.loadTestProperties();
|
|
config.setRegister(false);
|
|
config.setDefaultServer(false);
|
|
|
|
config.setTenantMode(TenantMode.CATALOG);
|
|
config.setCurrentTenantProvider(tenantProvider);
|
|
config.setTenantCatalogProvider(catalogProvider);
|
|
|
|
config.setDdlRun(false);
|
|
config.setDatabasePlatform(new MySqlPlatform());
|
|
|
|
EbeanServerFactory.create(config);
|
|
}
|
|
}
|