View Javadoc
1   package com.atlassian.activeobjects.jira;
2   
3   import com.atlassian.activeobjects.spi.DatabaseType;
4   import com.atlassian.jira.ofbiz.OfBizConnectionFactory;
5   import com.atlassian.tenancy.api.Tenant;
6   import org.junit.After;
7   import org.junit.Before;
8   import org.junit.Test;
9   import org.junit.runner.RunWith;
10  import org.mockito.Mock;
11  import org.mockito.junit.MockitoJUnitRunner;
12  import org.ofbiz.core.entity.jdbc.dbtype.DatabaseTypeFactory;
13  
14  import java.sql.Connection;
15  
16  import static org.junit.Assert.assertEquals;
17  import static org.mockito.Mockito.mock;
18  import static org.mockito.Mockito.when;
19  
20  /**
21   * Testing {@link JiraTenantAwareDataSourceProviderTest}
22   */
23  @RunWith(MockitoJUnitRunner.class)
24  public class JiraTenantAwareDataSourceProviderTest {
25      private JiraTenantAwareDataSourceProvider dataSourceProvider;
26  
27      @Mock
28      private OfBizConnectionFactory ofBizConnectionFactory;
29  
30      @Mock
31      private JiraDatabaseTypeExtractor jiraDatabaseTypeExtractor;
32  
33      @Mock
34      private Tenant tenant;
35  
36      @Before
37      public void setUp() {
38          dataSourceProvider = new JiraTenantAwareDataSourceProvider(ofBizConnectionFactory, jiraDatabaseTypeExtractor);
39      }
40  
41      @After
42      public void tearDown() {
43          dataSourceProvider = null;
44      }
45  
46      @Test
47      public void testGetUnknownDatabaseType() throws Exception {
48          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.UNKNOWN, null);
49          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.UNKNOWN, DatabaseTypeFactory.CLOUDSCAPE);
50          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.UNKNOWN, DatabaseTypeFactory.FIREBIRD);
51          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.UNKNOWN, DatabaseTypeFactory.H2);
52          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.UNKNOWN, DatabaseTypeFactory.SAP_DB);
53          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.UNKNOWN, DatabaseTypeFactory.SAP_DB_7_6);
54          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.UNKNOWN, DatabaseTypeFactory.SYBASE);
55      }
56  
57      @Test
58      public void testGetDb2DatabaseType() throws Exception {
59          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.DB2, DatabaseTypeFactory.DB2);
60      }
61  
62      @Test
63      public void testGetHsqlDatabaseType() throws Exception {
64          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.HSQL, DatabaseTypeFactory.HSQL);
65      }
66  
67      @Test
68      public void testGetMySqlDatabaseType() throws Exception {
69          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.MYSQL, DatabaseTypeFactory.MYSQL);
70      }
71  
72      @Test
73      public void testGetPostgreSqlDatabaseType() throws Exception {
74          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.POSTGRESQL, DatabaseTypeFactory.POSTGRES);
75          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.POSTGRESQL, DatabaseTypeFactory.POSTGRES_7_2);
76          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.POSTGRESQL, DatabaseTypeFactory.POSTGRES_7_3);
77      }
78  
79      @Test
80      public void testGetOracleDatabaseType() throws Exception {
81          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.ORACLE, DatabaseTypeFactory.ORACLE_8I);
82          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.ORACLE, DatabaseTypeFactory.ORACLE_10G);
83      }
84  
85      @Test
86      public void testGetSqlServerDatabaseType() throws Exception {
87          assertDatabaseTypeFromJiraDatabaseType(DatabaseType.MS_SQL, DatabaseTypeFactory.MSSQL);
88      }
89  
90      private void assertDatabaseTypeFromJiraDatabaseType(DatabaseType databaseType, org.ofbiz.core.entity.jdbc.dbtype.DatabaseType value) throws Exception {
91          final Connection connection = mock(Connection.class);
92          when(ofBizConnectionFactory.getConnection()).thenReturn(connection);
93          when(jiraDatabaseTypeExtractor.getDatabaseType(connection)).thenReturn(value);
94          assertEquals(databaseType, dataSourceProvider.getDatabaseType(tenant));
95      }
96  }