1 package org.melati.poem.test;
2
3 import org.melati.poem.Column;
4 import org.melati.poem.Group;
5 import org.melati.poem.GroupMembership;
6 import org.melati.poem.PoemThread;
7 import org.melati.poem.ReadPasswordAccessPoemException;
8 import org.melati.poem.RowDisappearedPoemException;
9 import org.melati.poem.User;
10 import org.melati.poem.WriteFieldAccessPoemException;
11 import org.melati.poem.WritePersistentAccessPoemException;
12
13
14
15
16
17
18 public class UserTest extends PoemTestCase {
19
20 public UserTest(String name) {
21 super(name);
22 }
23
24 protected void setUp() throws Exception {
25 super.setUp();
26 }
27
28 protected void tearDown() throws Exception {
29 super.tearDown();
30 }
31
32 protected void databaseUnchanged() {
33 Column<String> c = getDb().getUserTable().getNameColumn();
34 User tester = (User)c.firstWhereEq("tester");
35 if (tester != null)
36 tester.delete();
37 super.databaseUnchanged();
38
39 }
40
41
42
43
44 public void testToString() {
45
46 }
47
48
49
50
51
52
53 public void testGetPassword() {
54
55 if (getDb().getDbms().toString().equals("org.melati.poem.dbms.Hsqldb")) {
56 assertEquals("guest",getDb().guestUser().getPassword());
57 User tester = (User)getDb().getUserTable().newPersistent();
58 tester.setName("tester");
59 tester.setLogin("tester");
60 tester.setPassword("pwd");
61 tester.makePersistent();
62 assertEquals("pwd",tester.getPassword());
63
64 PoemThread.setAccessToken(getDb().guestUser());
65 assertEquals("guest",getDb().guestUser().getPassword());
66 try {
67 assertEquals("pwd",tester.getPassword());
68 fail("should have blown up");
69 } catch (ReadPasswordAccessPoemException e) {
70 e = null;
71 }
72 assertFalse(tester.isGuest());
73 assertFalse(tester.isAdministrator());
74 }
75 }
76
77
78
79
80
81 public void testSetPassword() {
82
83 if (getDb().getDbms().toString().equals("org.melati.poem.dbms.Hsqldb")) {
84 assertEquals("guest",getDb().guestUser().getPassword());
85 getDb().guestUser().setPassword("fred");
86 assertEquals("fred",getDb().guestUser().getPassword());
87 getDb().guestUser().setPassword("guest");
88 assertEquals("guest",getDb().guestUser().getPassword());
89 User tester = (User)getDb().getUserTable().newPersistent();
90 tester.setName("tester");
91 tester.setLogin("tester");
92 tester.setPassword("pwd");
93 tester.makePersistent();
94 assertEquals("pwd",tester.getPassword());
95
96 PoemThread.setAccessToken(tester);
97 assertEquals("pwd",tester.getPassword());
98 try {
99 tester.setPassword("new");
100 fail("should have blown up");
101 } catch (WritePersistentAccessPoemException e) {
102 e = null;
103 }
104 }
105 }
106
107
108
109
110 public void testSetPassword2() {
111
112 if (getDb().getDbms().toString().equals("org.melati.poem.dbms.Hsqldb")) {
113 User tester = (User)getDb().getUserTable().newPersistent();
114 tester.setName("tester");
115 tester.setLogin("tester");
116 tester.setPassword("pwd");
117 tester.makePersistent();
118 assertEquals("pwd",tester.getPassword());
119
120 PoemThread.setAccessToken(getDb().guestAccessToken());
121 try {
122 tester.setPassword("new");
123 fail("should have blown up");
124 } catch (WriteFieldAccessPoemException e) {
125 e = null;
126 }
127 }
128 }
129
130
131
132
133 public void testUser() {
134
135 }
136
137
138
139
140
141 public void testUserStringStringString() {
142 User u = new User("tester","tester","tester");
143 getDb().getUserTable().create(u);
144 assertEquals("tester",u.getName());
145 u.setName("tester2");
146
147 getDb().setLogSQL(true);
148 PoemThread.commit();
149 u.delete();
150 getDb().setLogSQL(false);
151 }
152
153
154
155
156 public void testGivesCapability() {
157
158 }
159
160
161
162
163 public void testIsGuest() {
164 assertTrue(getDb().guestUser().isGuest());
165 assertFalse(getDb().administratorUser().isGuest());
166 }
167
168
169
170
171 public void testIsAdministrator() {
172 assertFalse(getDb().guestUser().isAdministrator());
173 assertTrue(getDb().administratorUser().isAdministrator());
174 }
175
176
177
178
179 public void testIntegrityFixDelete() {
180 User u = new User("tester","tester","tester");
181 getDb().getUserTable().create(u);
182 assertEquals("tester",u.getName());
183 Group g = getDb().getGroupTable().administratorsGroup();
184 GroupMembership gm = (GroupMembership)getDb().getGroupMembershipTable().newPersistent();
185 gm.setGroup(g);
186 gm.setUser(u);
187 gm.makePersistent();
188 u.delete();
189 try {
190 gm.delete();
191 fail("Should have blown up.");
192 } catch(RowDisappearedPoemException e) {
193 e = null;
194 }
195 }
196
197 }