KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > info > jtrac > JtracTest


1 package info.jtrac;
2
3 import info.jtrac.domain.Config;
4 import info.jtrac.domain.Counts;
5 import info.jtrac.domain.CountsHolder;
6 import info.jtrac.domain.Field;
7 import info.jtrac.domain.Item;
8 import info.jtrac.domain.Metadata;
9 import info.jtrac.domain.Space;
10 import info.jtrac.domain.User;
11 import info.jtrac.domain.State;
12 import info.jtrac.domain.UserSpaceRole;
13 import java.util.HashSet JavaDoc;
14 import java.util.List JavaDoc;
15 import java.util.Map JavaDoc;
16 import java.util.Set JavaDoc;
17 import javax.sql.DataSource JavaDoc;
18
19 import org.acegisecurity.GrantedAuthority;
20 import org.acegisecurity.userdetails.UserDetails;
21 import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
22
23 /**
24  * JUnit test cases for the business implementation as well as the DAO, combined into
25  * one class so that the Spring application context needs to be loaded only once
26  * which is taken care of by the Spring JUnit helper / extensions
27  * Tests assume that a database is available, and with HSQLDB around this is not
28  * an issue.
29  */

30 public class JtracTest extends AbstractTransactionalDataSourceSpringContextTests {
31     
32     private Jtrac jtrac;
33     private JtracDao dao;
34     
35     public JtracTest() {
36         // have to do this because we have two beans of type DataSource (lazy-init)
37
setAutowireMode(AUTOWIRE_BY_NAME);
38         System.setProperty("jtrac.home", "target/home");
39     }
40     
41     // magically autowired by Spring JUnit helper / extension
42
public void setDao(JtracDao dao) {
43         this.dao = dao;
44     }
45     
46     // magically autowired by Spring JUnit helper / extension
47
public void setJtrac(Jtrac jtrac) {
48         this.jtrac = jtrac;
49     }
50     
51     protected String JavaDoc[] getConfigLocations() {
52         return new String JavaDoc[] {
53             "file:src/main/webapp/WEB-INF/applicationContext.xml",
54             "file:src/main/webapp/WEB-INF/applicationContext-lucene.xml"
55         };
56     }
57     
58     //==========================================================================
59

60     private Space getSpace() {
61         Space space = new Space();
62         space.setPrefixCode("TEST");
63         space.setName("Test Space");
64         return space;
65     }
66     
67     private Metadata getMetadata() {
68         Metadata metadata = new Metadata();
69         String JavaDoc xmlString = "<metadata><fields>"
70                 + "<field name='cusInt01' label='Test Label'/>"
71                 + "<field name='cusInt02' label='Test Label 2'/>"
72                 + "</fields></metadata>";
73         metadata.setXmlString(xmlString);
74         return metadata;
75     }
76     
77     //==========================================================================
78

79     public void testGeneratedPasswordIsAlwaysDifferent() {
80         String JavaDoc p1 = jtrac.generatePassword();
81         String JavaDoc p2 = jtrac.generatePassword();
82         assertTrue(!p1.equals(p2));
83     }
84     
85     public void testEncodeClearTextPassword() {
86         assertEquals("21232f297a57a5a743894a0e4a801fc3", jtrac.encodeClearText("admin"));
87     }
88         
89     public void testMetadataInsertAndLoad() {
90         Metadata m1 = getMetadata();
91         jtrac.storeMetadata(m1);
92         assertTrue(m1.getId() > 0);
93         Metadata m2 = jtrac.loadMetadata(m1.getId());
94         assertTrue(m2 != null);
95         Map JavaDoc<Field.Name, Field> fields = m2.getFields();
96         assertTrue(fields.size() == 2);
97     }
98     
99     public void testUserInsertAndLoad() {
100         User user = new User();
101         user.setLoginName("test");
102         user.setEmail("test@jtrac.com");
103         jtrac.storeUser(user);
104         User user1 = jtrac.loadUser("test");
105         assertTrue(user1.getEmail().equals("test@jtrac.com"));
106         User user2 = dao.findUsersByEmail("test@jtrac.com").get(0);
107         assertTrue(user2.getLoginName().equals("test"));
108     }
109     
110     public void testUserSpaceRolesInsert() {
111         Space space = getSpace();
112         Metadata metadata = getMetadata();
113         
114         space.setMetadata(metadata);
115         jtrac.storeSpace(space);
116         
117         User user = new User();
118         user.setLoginName("test");
119         
120         user.addSpaceWithRole(space, "ROLE_TEST");
121         jtrac.storeUser(user);
122         
123         User u1 = jtrac.loadUser("test");
124         
125         GrantedAuthority[] gas = u1.getAuthorities();
126         assertEquals(2, gas.length);
127         assertEquals("ROLE_USER", gas[0].getAuthority());
128         assertEquals("ROLE_TEST_TEST", gas[1].getAuthority());
129         
130         List JavaDoc<UserSpaceRole> userSpaceRoles = jtrac.findUserRolesForSpace(space.getId());
131         assertEquals(1, userSpaceRoles.size());
132         UserSpaceRole usr = userSpaceRoles.get(0);
133         assertEquals("test", usr.getUser().getLoginName());
134         assertEquals("ROLE_TEST", usr.getRoleKey());
135         
136         List JavaDoc<User> users = jtrac.findUsersForUser(u1);
137         assertEquals(1, users.size());
138         
139         List JavaDoc<User> users2 = jtrac.findUsersForSpace(space.getId());
140         assertEquals(1, users2.size());
141         
142     }
143     
144     public void testConfigStoreAndLoad() {
145         Config config = new Config("testParam", "testValue");
146         jtrac.storeConfig(config);
147         String JavaDoc value = jtrac.loadConfig("testParam");
148         assertEquals("testValue", value);
149     }
150     
151     public void testStoreAndLoadUserWithAdminRole() {
152         User user = new User();
153         user.setLoginName("test");
154         user.addSpaceWithRole(null, "ROLE_ADMIN");
155         jtrac.storeUser(user);
156         
157         UserDetails ud = jtrac.loadUserByUsername("test");
158         
159         Set JavaDoc<String JavaDoc> set = new HashSet JavaDoc<String JavaDoc>();
160         for (GrantedAuthority ga : ud.getAuthorities()) {
161             set.add(ga.getAuthority());
162         }
163         
164         assertEquals(2, set.size());
165         assertTrue(set.contains("ROLE_USER"));
166         assertTrue(set.contains("ROLE_ADMIN"));
167         
168     }
169     
170     public void testDefaultAdminUserHasAdminRole() {
171         UserDetails ud = jtrac.loadUserByUsername("admin");
172         Set JavaDoc<String JavaDoc> set = new HashSet JavaDoc<String JavaDoc>();
173         for (GrantedAuthority ga : ud.getAuthorities()) {
174             set.add(ga.getAuthority());
175         }
176         assertEquals(2, set.size());
177         assertTrue(set.contains("ROLE_USER"));
178         assertTrue(set.contains("ROLE_ADMIN"));
179     }
180     
181     public void testItemInsertAndCounts() {
182         Space s = getSpace();
183         jtrac.storeSpace(s);
184         User u = new User();
185         u.setLoginName("test");
186         u.addSpaceWithRole(s, "DEFAULT");
187         jtrac.storeUser(u);
188         Item i = new Item();
189         i.setSpace(s);
190         i.setAssignedTo(u);
191         i.setLoggedBy(u);
192         i.setStatus(State.CLOSED);
193         jtrac.storeItem(i, null);
194         assertEquals(1, i.getSequenceNum());
195         
196         CountsHolder ch = jtrac.loadCountsForUser(u);
197         assertEquals(1, ch.getTotalAssignedToMe());
198         assertEquals(1, ch.getTotalLoggedByMe());
199         assertEquals(1, ch.getTotalTotal());
200         
201         Counts c = ch.getCounts().get(s.getId());
202         assertEquals(1, c.getLoggedByMe());
203         assertEquals(1, c.getAssignedToMe());
204         assertEquals(1, c.getTotal());
205     }
206     
207     public void testRemoveSpaceRoleDoesNotOrphanDatabaseRecord() {
208         Space space = getSpace();
209         jtrac.storeSpace(space);
210         long spaceId = space.getId();
211         User user = new User();
212         user.setLoginName("test");
213         user.addSpaceWithRole(space, "ROLE_ADMIN");
214         jtrac.storeUser(user);
215         long id = jdbcTemplate.queryForLong("select id from user_space_roles where space_id = " + spaceId);
216         UserSpaceRole usr = jtrac.loadUserSpaceRole(id);
217         assertEquals(spaceId, usr.getSpace().getId());
218         jtrac.removeUserSpaceRole(usr);
219         endTransaction();
220         assertEquals(0, jdbcTemplate.queryForInt("select count(0) from user_space_roles where space_id = " + spaceId));
221     }
222     
223     public void testFindSpacesWhereGuestAllowed() {
224         Space space = getSpace();
225         space.setGuestAllowed(true);
226         jtrac.storeSpace(space);
227         assertEquals(1, jtrac.findSpacesWhereGuestAllowed().size());
228     }
229     
230     public void testRenameSpaceRole() {
231         Space space = getSpace();
232         jtrac.storeSpace(space);
233         User u = new User();
234         u.setLoginName("test");
235         u.addSpaceWithRole(space, "DEFAULT");
236         jtrac.storeUser(u);
237         assertEquals(1, jdbcTemplate.queryForInt("select count(0) from user_space_roles where role_key = 'DEFAULT'"));
238         jtrac.bulkUpdateRenameSpaceRole(space, "DEFAULT", "NEWDEFAULT");
239         assertEquals(0, jdbcTemplate.queryForInt("select count(0) from user_space_roles where role_key = 'DEFAULT'"));
240         assertEquals(1, jdbcTemplate.queryForInt("select count(0) from user_space_roles where role_key = 'NEWDEFAULT'"));
241         
242     }
243     
244     public void testGetItemAsHtmlDoesNotThrowException() {
245         Config config = new Config("mail.server.host", "dummyhost");
246         jtrac.storeConfig(config);
247         // now email sending is switched on
248
Space s = getSpace();
249         jtrac.storeSpace(s);
250         User u = new User();
251         u.setLoginName("test");
252         u.setEmail("test");
253         u.addSpaceWithRole(s, "DEFAULT");
254         jtrac.storeUser(u);
255         Item i = new Item();
256         i.setSpace(s);
257         i.setAssignedTo(u);
258         i.setLoggedBy(u);
259         i.setStatus(State.CLOSED);
260         // next step will internally try to render item as Html for sending e-mail
261
jtrac.storeItem(i, null);
262     }
263     
264 }
265
Popular Tags