KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > hajdbc > sql > TestDataSourceDatabase


1 /**
2  * HA-JDBC: High-Availability JDBC
3  * Copyright (c) 2004-2006 Paul Ferraro
4  *
5  * This library is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU Lesser General Public License as published by the
7  * Free Software Foundation; either version 2.1 of the License, or (at your
8  * option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
13  * for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this library; if not, write to the Free Software Foundation,
17  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Contact: ferraro@users.sourceforge.net
20  */

21 package net.sf.hajdbc.sql;
22
23 import java.sql.Connection JavaDoc;
24 import java.sql.SQLException JavaDoc;
25 import java.util.Hashtable JavaDoc;
26 import java.util.Properties JavaDoc;
27
28 import javax.naming.Context JavaDoc;
29 import javax.naming.InitialContext JavaDoc;
30 import javax.naming.Name JavaDoc;
31 import javax.naming.Reference JavaDoc;
32 import javax.naming.spi.ObjectFactory JavaDoc;
33 import javax.sql.DataSource JavaDoc;
34
35 import org.easymock.EasyMock;
36 import org.testng.annotations.Test;
37
38 import net.sf.hajdbc.Database;
39
40 /**
41  * Unit test for {@link DataSourceDatabase}.
42  * @author Paul Ferraro
43  * @since 1.1
44  */

45 @Test
46 public class TestDataSourceDatabase extends AbstractTestDatabase
47 {
48     private DataSource dataSource = this.control.createMock(DataSource.class);
49
50     /**
51      * Test method for {@link net.sf.hajdbc.sql.DataSourceDatabase.connect(Object)}
52      */

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 JavaDoc e)
72         {
73             assert false : e;
74         }
75     }
76
77     /**
78      * Test method for {@link net.sf.hajdbc.sql.DataSourceDatabase.connect(Object)}
79      */

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 JavaDoc e)
101         {
102             assert false : e;
103         }
104     }
105
106     /**
107      * Test method for {@link net.sf.hajdbc.sql.DataSourceDatabase.createConnectionFactory()}
108      */

109     public void testCreateConnectionFactory()
110     {
111         try
112         {
113             Reference JavaDoc reference = new Reference JavaDoc(this.dataSource.getClass().getName(), DataSourceFactory.class.getName(), null);
114             
115             DataSourceDatabase database = new DataSourceDatabase();
116             database.setName("test");
117             database.setProperties(new Properties JavaDoc());
118             database.getProperties().setProperty(Context.INITIAL_CONTEXT_FACTORY, MockInitialContextFactory.class.getName());
119             
120             Context JavaDoc context = new InitialContext JavaDoc(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 JavaDoc e)
132         {
133             assert false : e;
134         }
135     }
136     
137     /**
138      * Test method for {@link net.sf.hajdbc.sql.DataSourceDatabase.createConnectionFactory()}
139      */

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     /**
180      * Object factory that returns mock DataSource objects.
181      */

182     public static class DataSourceFactory implements ObjectFactory JavaDoc
183     {
184         /**
185          * @see javax.naming.spi.ObjectFactory#getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable)
186          */

187         public Object JavaDoc getObjectInstance(Object JavaDoc object, Name JavaDoc name, Context JavaDoc context, Hashtable JavaDoc environment) throws Exception JavaDoc
188         {
189             return EasyMock.createMock(DataSource.class);
190         }
191     }
192
193     /**
194      * @see net.sf.hajdbc.sql.AbstractTestDatabase#createDatabase(java.lang.String)
195      */

196     @Override JavaDoc
197     protected Database createDatabase(String JavaDoc id)
198     {
199         DataSourceDatabase database = new DataSourceDatabase();
200         
201         database.setId(id);
202         
203         return database;
204     }
205 }
206
Popular Tags