import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
-import org.cacert.gigi.database.DatabaseConnection;
+import org.cacert.gigi.database.GigiPreparedStatement;
+import org.cacert.gigi.database.GigiResultSet;
import org.cacert.gigi.dbObjects.Group;
import org.cacert.gigi.dbObjects.ObjectCache;
import org.cacert.gigi.dbObjects.User;
public class TestUserGroupMembership extends ManagedTest {
- private final Group ttpGroup = Group.getByString("ttp-assuer");
+ private final Group ttpGroup = Group.getByString("ttp-assurer");
private final Group supporter = Group.getByString("supporter");
assertThat(u2, is(not(sameInstance(u))));
assertBehavesTtpGroup(u2);
- ResultSet rs = fetchGroupRowsFor(u);
+ try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT * FROM `user_groups` WHERE `user`=?")) {
+ ps.setInt(1, u.getId());
+ GigiResultSet rs = ps.executeQuery();
- assertTrue(rs.next());
- assertEquals(0, rs.getInt("revokedby"));
- assertEquals(granter.getId(), rs.getInt("grantedby"));
- assertEquals(ttpGroup.getDatabaseName(), rs.getString("permission"));
+ assertTrue(rs.next());
+ assertEquals(0, rs.getInt("revokedby"));
+ assertEquals(granter.getId(), rs.getInt("grantedby"));
+ assertEquals(ttpGroup.getDatabaseName(), rs.getString("permission"));
- assertNull(rs.getDate("deleted"));
- assertNotNull(rs.getDate("granted"));
+ assertNull(rs.getDate("deleted"));
+ assertNotNull(rs.getDate("granted"));
- assertFalse(rs.next());
+ assertFalse(rs.next());
+ }
}
@Test
assertThat(u2, is(not(sameInstance(u))));
assertBehavesEmpty(u);
- ResultSet rs = fetchGroupRowsFor(u);
- assertTrue(rs.next());
- assertEquals(granter.getId(), rs.getInt("revokedby"));
- assertEquals(granter.getId(), rs.getInt("grantedby"));
- assertEquals(ttpGroup.getDatabaseName(), rs.getString("permission"));
+ try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT * FROM `user_groups` WHERE `user`=?")) {
+ ps.setInt(1, u.getId());
+ GigiResultSet rs = ps.executeQuery();
+ assertTrue(rs.next());
+ assertEquals(granter.getId(), rs.getInt("revokedby"));
+ assertEquals(granter.getId(), rs.getInt("grantedby"));
+ assertEquals(ttpGroup.getDatabaseName(), rs.getString("permission"));
- assertNotNull(rs.getDate("deleted"));
- assertNotNull(rs.getDate("granted"));
+ assertNotNull(rs.getDate("deleted"));
+ assertNotNull(rs.getDate("granted"));
- assertFalse(rs.next());
- }
-
- private ResultSet fetchGroupRowsFor(User u) throws SQLException {
- PreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT * FROM user_groups WHERE user=?");
- ps.setInt(1, u.getId());
- ResultSet rs = ps.executeQuery();
- return rs;
+ assertFalse(rs.next());
+ }
}
private void assertBehavesEmpty(User u) {
assertTrue(u.isInGroup(ttpGroup));
assertFalse(u.isInGroup(supporter));
}
+
+ @Test
+ public void testListGroup() {
+ Group g = Group.getByString("supporter");
+ int start = g.getMembers(0, 10).length;
+ User ux = User.getById(createVerifiedUser("fn", "ln", createUniqueName() + "@example.org", TEST_PASSWORD));
+ User ux2 = User.getById(createVerifiedUser("fn", "ln", createUniqueName() + "@example.org", TEST_PASSWORD));
+ assertEquals(0, g.getMembers(0, 10).length + start);
+ ux.grantGroup(ux, g);
+ assertEquals(1, g.getMembers(0, 10).length + start);
+ ux2.grantGroup(ux, g);
+ assertEquals(2, g.getMembers(0, 10).length + start);
+ ux2.revokeGroup(ux, g);
+ assertEquals(1, g.getMembers(0, 10).length + start);
+ ux.revokeGroup(ux, g);
+ assertEquals(0, g.getMembers(0, 10).length + start);
+
+ }
+
+ @Test
+ public void testGroupEquals() {
+ assertTrue(ttpGroup.equals(ttpGroup));
+ assertFalse(ttpGroup.equals(null));
+ assertFalse(ttpGroup.equals(""));
+ assertFalse(ttpGroup.equals(supporter));
+ }
}