]> WPIA git - gigi.git/blobdiff - tests/org/cacert/gigi/TestUserGroupMembership.java
upd: cleanup SQL statements to make them statically verifiable.
[gigi.git] / tests / org / cacert / gigi / TestUserGroupMembership.java
index fbccba9c640b25bea4ddea720ac913c75a0fdb1f..2213557454f53d4462ca1fe298ec9f66cba3b09d 100644 (file)
@@ -3,31 +3,31 @@ package org.cacert.gigi;
 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-assuer");
+    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);
@@ -39,24 +39,27 @@ public class TestUserGroupMembership extends ManagedTest {
         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);
@@ -69,23 +72,19 @@ public class TestUserGroupMembership extends ManagedTest {
         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) {
@@ -99,4 +98,30 @@ public class TestUserGroupMembership extends ManagedTest {
         assertTrue(u.isInGroup(ttpGroup));
         assertFalse(u.isInGroup(supporter));
     }
+
+    @Test
+    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 + start);
+        ux.grantGroup(getSupporter(), g); // creates a supporter
+        assertEquals(2, g.getMembers(0, 10).length + start);
+        ux2.grantGroup(ux, g);
+        assertEquals(3, g.getMembers(0, 10).length + start);
+        ux2.revokeGroup(ux, g);
+        assertEquals(2, g.getMembers(0, 10).length + start);
+        ux.revokeGroup(ux, g);
+        assertEquals(1, 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));
+    }
 }