import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
+import java.io.IOException;
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;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.BusinessTest;
import org.junit.Test;
-public class TestUserGroupMembership extends ManagedTest {
+public class TestUserGroupMembership extends BusinessTest {
- private final Group ttpGroup = Group.getByString("ttp-assurer");
+ private final Group ttpGroup = Group.TTP_ASSURER;
- private final Group supporter = Group.getByString("supporter");
+ private final Group supporter = Group.SUPPORTER;
@Test
- public void testAddObject() throws GigiApiException, SQLException {
+ public void testAddObject() throws GigiApiException, SQLException, IOException {
User u = User.getById(createVerifiedUser("fname", "lname", createUniqueName() + "@example.org", TEST_PASSWORD));
- User granter = User.getById(createVerifiedUser("grFname", "lname", createUniqueName() + "@example.org", TEST_PASSWORD));
+ User granter = getSupporter();
assertBehavesEmpty(u);
u.grantGroup(granter, ttpGroup);
assertThat(u2, is(not(sameInstance(u))));
assertBehavesTtpGroup(u2);
- GigiResultSet 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.getDBName(), 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
- public void testRemoveObject() throws GigiApiException, SQLException {
+ public void testRemoveObject() throws GigiApiException, SQLException, IOException {
User u = User.getById(createVerifiedUser("fname", "lname", createUniqueName() + "@example.org", TEST_PASSWORD));
- User granter = User.getById(createVerifiedUser("grFname", "lname", createUniqueName() + "@example.org", TEST_PASSWORD));
+ User granter = getSupporter();
assertBehavesEmpty(u);
u.grantGroup(granter, ttpGroup);
assertThat(u2, is(not(sameInstance(u))));
assertBehavesEmpty(u);
- GigiResultSet 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.getDBName(), rs.getString("permission"));
- assertNotNull(rs.getDate("deleted"));
- assertNotNull(rs.getDate("granted"));
+ assertNotNull(rs.getDate("deleted"));
+ assertNotNull(rs.getDate("granted"));
- assertFalse(rs.next());
- }
-
- private GigiResultSet fetchGroupRowsFor(User u) throws SQLException {
- GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT * FROM `user_groups` WHERE `user`=?");
- ps.setInt(1, u.getId());
- GigiResultSet rs = ps.executeQuery();
- return rs;
+ assertFalse(rs.next());
+ }
}
private void assertBehavesEmpty(User u) {
}
@Test
- public void testListGroup() {
- Group g = Group.getByString("supporter");
+ public void testListGroup() throws GigiApiException, IOException {
+ Group g = Group.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);
- ux.grantGroup(ux, g);
- assertEquals(1, g.getMembers(0, 10).length);
+ assertEquals(0, g.getMembers(0, 10).length + start);
+ ux.grantGroup(getSupporter(), g); // creates a supporter
+ assertEquals(2, g.getMembers(0, 10).length + start);
ux2.grantGroup(ux, g);
- assertEquals(2, g.getMembers(0, 10).length);
+ assertEquals(3, g.getMembers(0, 10).length + start);
ux2.revokeGroup(ux, g);
- assertEquals(1, g.getMembers(0, 10).length);
+ assertEquals(2, g.getMembers(0, 10).length + start);
ux.revokeGroup(ux, g);
- assertEquals(0, g.getMembers(0, 10).length);
+ assertEquals(1, g.getMembers(0, 10).length + start);
}