mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-11-03 08:24:23 +00:00
#493 - ENH: Multi-tenant support - nice error when explicit DatabasePlatform not set, turn off DDL run automatically
This commit is contained in:
1 parent
502e9daaf2
commit
3a28dd0d55
4 files changed
+113
-6
No files matched your search
@@ -0,0 +1,82 @@
|
||||
package com.avaje.ebean;
|
||||
|
||||
import com.avaje.ebean.config.CurrentTenantProvider;
|
||||
import com.avaje.ebean.config.ServerConfig;
|
||||
import com.avaje.ebean.config.TenantDataSourceProvider;
|
||||
import com.avaje.ebean.config.TenantMode;
|
||||
import com.avaje.ebean.config.TenantSchemaProvider;
|
||||
import com.avaje.ebean.config.dbplatform.MySqlPlatform;
|
||||
import com.avaje.ebean.config.dbplatform.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("multiTenantDb");
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user