Commit 8f4c7a38 authored by Dustin Jenkins's avatar Dustin Jenkins
Browse files

Merge branch 's1666' of /srv/cadc/git/wopencadc into s1666

parents d7f30f6f a10a124d
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -132,17 +132,17 @@
        </copy>
    </target>
    
    <target name="test" depends="compile,compile-test,resources">
        <echo message="Running test suite..." />
        <junit printsummary="yes" haltonfailure="yes" fork="yes">
            <classpath>
                <pathelement path="${build}/class"/>
                <pathelement path="${build}/test/class"/>
                <pathelement path="${testingJars}"/>
            </classpath>
            <test name="ca.nrc.cadc.ac.server.ldap.LdapGroupDAOTest" />
            <formatter type="plain" usefile="false" />
        </junit>
    </target>
    <!--<target name="test" depends="compile,compile-test,resources">-->
        <!--<echo message="Running test suite..." />-->
        <!--<junit printsummary="yes" haltonfailure="yes" fork="yes">-->
            <!--<classpath>-->
                <!--<pathelement path="${build}/class"/>-->
                <!--<pathelement path="${build}/test/class"/>-->
                <!--<pathelement path="${testingJars}"/>-->
            <!--</classpath>-->
            <!--<test name="ca.nrc.cadc.ac.server.ldap.LdapGroupDAOTest" />-->
            <!--<formatter type="plain" usefile="false" />-->
        <!--</junit>-->
    <!--</target>-->

</project>
+12 −8
Original line number Diff line number Diff line
@@ -320,7 +320,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO
    {
        try
        {
            Filter filter = Filter.createEqualityFilter("cn", "*");
            Filter filter = Filter.createPresenceFilter("cn");
            String [] attributes = new String[] {"cn", "nsaccountlock"};
            
            SearchRequest searchRequest = 
@@ -336,17 +336,20 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO
            {
                if (e.getResultCode() == ResultCode.NO_SUCH_OBJECT)
                {
                    logger.debug("Count not find groups root", e);
                    throw new IllegalStateException("Count not find groups root");
                    logger.debug("Could not find groups root", e);
                    throw new IllegalStateException("Could not find groups root");
                }
            }
            
            LdapDAO.checkLdapResult(searchResult.getResultCode());
            List<String> groupNames = new ArrayList<String>();
            for (SearchResultEntry next : searchResult.getSearchEntries())
            {
                if (!next.hasAttribute("nsaccountlock"))
                {
                    groupNames.add(next.getAttributeValue("cn"));
                }
            }
            
            return groupNames;
        }
@@ -608,7 +611,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO
        for (Group gr : group.getGroupAdmins())
        {
            DN grDN = getGroupDN(gr.getID());
            newMembers.add(grDN.toNormalizedString());
            newAdmins.add(grDN.toNormalizedString());
        }

        mods.add(new Modification(ModificationType.REPLACE, "uniquemember", 
@@ -783,9 +786,10 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO
                }
                catch (GroupNotFoundException e)
                {
                    throw new IllegalStateException(
                        "BUG: group " + groupDN + " not found but " +
                        "membership exists (" + userID + ")");
                    final String message = "BUG: group " + groupDN + " not found but " +
                                           "membership exists (" + userID + ")";
                    logger.error(message);
                    //throw new IllegalStateException(message);
                }
            }
        }
+34 −4
Original line number Diff line number Diff line
@@ -178,11 +178,23 @@ public class LdapGroupDAOTest
                    actualGroup = getGroupDAO().modifyGroup(expectGroup);
                    assertGroupsEqual(expectGroup, actualGroup);

                    // delete the group
                    expectGroup.description = "Happy testing";
                    expectGroup.getUserMembers().add(daoTestUser2);
                    expectGroup.getGroupMembers().add(otherGroup);

                    // userAdmins
                    expectGroup.getUserAdmins().add(daoTestUser3);
                    actualGroup = getGroupDAO().modifyGroup(expectGroup);
                    assertGroupsEqual(expectGroup, actualGroup);

                    // groupAdmins
                    Group adminGroup = new Group(getGroupID(), daoTestUser1);
                    adminGroup = getGroupDAO().addGroup(adminGroup);
                    expectGroup.getGroupAdmins().add(adminGroup);
                    actualGroup = getGroupDAO().modifyGroup(expectGroup);
                    assertGroupsEqual(expectGroup, actualGroup);

                    // delete the group
                    getGroupDAO().deleteGroup(expectGroup.getID());
                    try
                    {
@@ -494,7 +506,7 @@ public class LdapGroupDAOTest
            }
        });

        Subject.doAs(daoTestUser2Subject, new PrivilegedExceptionAction<Object>()
        Subject.doAs(daoTestUser1Subject, new PrivilegedExceptionAction<Object>()
        {
            public Object run() throws Exception
            {
@@ -856,12 +868,14 @@ public class LdapGroupDAOTest
        assertEquals(gr1.getID(), gr2.getID());
        assertEquals(gr1.description, gr2.description);
        assertEquals(gr1.getOwner(), gr2.getOwner());

        assertEquals(gr1.getGroupMembers(), gr2.getGroupMembers());
        assertEquals(gr1.getGroupMembers().size(), gr2.getGroupMembers().size());
        for (Group gr : gr1.getGroupMembers())
        {
            assertTrue(gr2.getGroupMembers().contains(gr));
        }

        assertEquals(gr1.getUserMembers(), gr2.getUserMembers());
        assertEquals(gr1.getUserMembers().size(), gr2.getUserMembers()
                .size());
@@ -869,6 +883,22 @@ public class LdapGroupDAOTest
        {
            assertTrue(gr2.getUserMembers().contains(user));
        }

        assertEquals(gr1.getGroupAdmins(), gr2.getGroupAdmins());
        assertEquals(gr1.getGroupAdmins().size(), gr2.getGroupAdmins().size());
        for (Group gr : gr1.getGroupAdmins())
        {
            assertTrue(gr2.getGroupAdmins().contains(gr));
        }

        assertEquals(gr1.getUserAdmins(), gr2.getUserAdmins());
        assertEquals(gr1.getUserAdmins().size(), gr2.getUserAdmins()
                .size());
        for (User<?> user : gr1.getUserAdmins())
        {
            assertTrue(gr2.getUserAdmins().contains(user));
        }

        assertEquals(gr1.getProperties(), gr2.getProperties());
        for (GroupProperty prop : gr1.getProperties())
        {
+16 −13
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.security.AccessControlContext;
import java.security.AccessControlException;
import java.security.AccessController;
@@ -235,7 +236,7 @@ public class GMSClient
        String retXML = transfer.getResponseBody();
        try
        {
            log.debug("createGroup returned: " + groupXML);
            log.debug("createGroup returned: " + retXML);
            return GroupReader.read(retXML);
        }
        catch (Exception bug)
@@ -313,15 +314,13 @@ public class GMSClient
        URL getGroupNamesURL = new URL(this.baseURL + "/groups");
        log.debug("getGroupNames request to " + getGroupNamesURL.toString());
        
        HttpURLConnection conn = 
                (HttpURLConnection) getGroupNamesURL.openConnection();
        HttpURLConnection conn = (HttpURLConnection) getGroupNamesURL.openConnection();
        conn.setRequestMethod("GET");

        SSLSocketFactory sf = getSSLSocketFactory();
        if ((sf != null) && ((conn instanceof HttpsURLConnection)))
        {
            ((HttpsURLConnection) conn)
                    .setSSLSocketFactory(sf);
            ((HttpsURLConnection) conn).setSSLSocketFactory(sf);
        }
        int responseCode = -1;
        try
@@ -332,11 +331,12 @@ public class GMSClient
        {
            throw new AccessControlException(e.getMessage());
        }
        log.debug("getGroupNames response " + responseCode);
        
        if (responseCode != 200)
        {
            String errMessage = NetUtil.getErrorBody(conn);
            log.debug("deleteGroup response " + responseCode + ": " + 
            log.debug("getGroupNames response " + responseCode + ": " +
                      errMessage);

            if ((responseCode == 401) || (responseCode == 403) || 
@@ -351,17 +351,20 @@ public class GMSClient
            throw new IOException("HttpResponse (" + responseCode + ") - " + errMessage);
        }

        log.error("Content-Length: " + conn.getHeaderField("Content-Length"));
        log.error("Content-Type: " + conn.getHeaderField("Content-Type"));

        try
        {
            List<String> groupNames = new ArrayList<String>();
            Reader ioReader = new InputStreamReader(conn.getInputStream());
            BufferedReader br = new BufferedReader(ioReader);
            CsvReader reader = new CsvReader(br);
            
            CsvReader reader = new CsvReader(conn.getInputStream(), ',', Charset.forName("UTF-8"));
            if (reader.readRecord())
            {
                for (int i = 0; i < reader.getColumnCount(); i++)
                {
                    groupNames.add(reader.get(i));
                }
            }
            
            return groupNames;
        }
@@ -435,7 +438,7 @@ public class GMSClient
        String retXML = transfer.getResponseBody();
        try
        {
            log.debug("updateGroup returned: " + groupXML);
            log.debug("updateGroup returned: " + retXML);
            return GroupReader.read(retXML);
        }
        catch (Exception bug)