Loading projects/cadcAccessControl-Server/build.xml +12 −12 Original line number Diff line number Diff line Loading @@ -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> projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java +12 −8 Original line number Diff line number Diff line Loading @@ -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 = Loading @@ -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; } Loading Loading @@ -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", Loading Loading @@ -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); } } } Loading projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAOTest.java +34 −4 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -494,7 +506,7 @@ public class LdapGroupDAOTest } }); Subject.doAs(daoTestUser2Subject, new PrivilegedExceptionAction<Object>() Subject.doAs(daoTestUser1Subject, new PrivilegedExceptionAction<Object>() { public Object run() throws Exception { Loading Loading @@ -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()); Loading @@ -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()) { Loading projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClient.java +16 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) Loading Loading @@ -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 Loading @@ -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) || Loading @@ -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; } Loading Loading @@ -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) Loading Loading
projects/cadcAccessControl-Server/build.xml +12 −12 Original line number Diff line number Diff line Loading @@ -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>
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java +12 −8 Original line number Diff line number Diff line Loading @@ -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 = Loading @@ -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; } Loading Loading @@ -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", Loading Loading @@ -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); } } } Loading
projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAOTest.java +34 −4 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -494,7 +506,7 @@ public class LdapGroupDAOTest } }); Subject.doAs(daoTestUser2Subject, new PrivilegedExceptionAction<Object>() Subject.doAs(daoTestUser1Subject, new PrivilegedExceptionAction<Object>() { public Object run() throws Exception { Loading Loading @@ -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()); Loading @@ -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()) { Loading
projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClient.java +16 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) Loading Loading @@ -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 Loading @@ -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) || Loading @@ -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; } Loading Loading @@ -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) Loading