1 21 package net.sf.hajdbc.sql; 22 23 import java.sql.Connection ; 24 import java.sql.SQLException ; 25 import java.util.Hashtable ; 26 import java.util.Properties ; 27 28 import javax.naming.Context ; 29 import javax.naming.InitialContext ; 30 import javax.naming.Name ; 31 import javax.naming.Reference ; 32 import javax.naming.spi.ObjectFactory ; 33 import javax.sql.DataSource ; 34 35 import org.easymock.EasyMock; 36 import org.testng.annotations.Test; 37 38 import net.sf.hajdbc.Database; 39 40 45 @Test 46 public class TestDataSourceDatabase extends AbstractTestDatabase 47 { 48 private DataSource dataSource = this.control.createMock(DataSource.class); 49 50 53 public void testConnect() 54 { 55 DataSourceDatabase database = new DataSourceDatabase(); 56 57 Connection connection = EasyMock.createMock(Connection.class); 58 59 try 60 { 61 EasyMock.expect(this.dataSource.getConnection()).andReturn(connection); 62 63 this.control.replay(); 64 65 Connection conn = database.connect(this.dataSource); 66 67 this.control.verify(); 68 69 assert connection == conn; 70 } 71 catch (SQLException e) 72 { 73 assert false : e; 74 } 75 } 76 77 80 public void testConnectAsUser() 81 { 82 DataSourceDatabase database = new DataSourceDatabase(); 83 database.setUser("test-user"); 84 database.setPassword("test-password"); 85 86 Connection connection = EasyMock.createMock(Connection.class); 87 88 try 89 { 90 EasyMock.expect(this.dataSource.getConnection("test-user", "test-password")).andReturn(connection); 91 92 this.control.replay(); 93 94 Connection conn = database.connect(this.dataSource); 95 96 this.control.verify(); 97 98 assert connection == conn; 99 } 100 catch (SQLException e) 101 { 102 assert false : e; 103 } 104 } 105 106 109 public void testCreateConnectionFactory() 110 { 111 try 112 { 113 Reference reference = new Reference (this.dataSource.getClass().getName(), DataSourceFactory.class.getName(), null); 114 115 DataSourceDatabase database = new DataSourceDatabase(); 116 database.setName("test"); 117 database.setProperties(new Properties ()); 118 database.getProperties().setProperty(Context.INITIAL_CONTEXT_FACTORY, MockInitialContextFactory.class.getName()); 119 120 Context context = new InitialContext (database.getProperties()); 121 122 context.rebind("test", reference); 123 124 DataSource dataSource = database.createConnectionFactory(); 125 126 assert dataSource != null; 127 assert DataSource.class.isInstance(dataSource); 128 129 context.unbind("test"); 130 } 131 catch (Exception e) 132 { 133 assert false : e; 134 } 135 } 136 137 140 public void testSetName() 141 { 142 DataSourceDatabase database = new DataSourceDatabase(); 143 144 assert !database.isDirty(); 145 146 database.setName(null); 147 148 assert !database.isDirty(); 149 150 database.setName("test"); 151 152 assert database.isDirty(); 153 154 database.setName("test"); 155 156 assert database.isDirty(); 157 158 database.clean(); 159 160 assert !database.isDirty(); 161 162 database.setName(null); 163 164 assert database.isDirty(); 165 166 database.setName("test"); 167 168 assert database.isDirty(); 169 170 database.clean(); 171 172 assert !database.isDirty(); 173 174 database.setName("different"); 175 176 assert database.isDirty(); 177 } 178 179 182 public static class DataSourceFactory implements ObjectFactory 183 { 184 187 public Object getObjectInstance(Object object, Name name, Context context, Hashtable environment) throws Exception 188 { 189 return EasyMock.createMock(DataSource.class); 190 } 191 } 192 193 196 @Override 197 protected Database createDatabase(String id) 198 { 199 DataSourceDatabase database = new DataSourceDatabase(); 200 201 database.setId(id); 202 203 return database; 204 } 205 } 206 | Popular Tags |