📄 dsmlcontexttest.java
字号:
" <mydsml:value>top</mydsml:value>\n" +
" <mydsml:value>inetOrganizationalUnit</mydsml:value>\n" +
" </mydsml:attr>\n" +
" </mydsml:searchResultEntry>\n" +
" <mydsml:searchResultEntry dn=\"ou=Planning,o=DEMOCORP,c=AU\">\n" +
" <mydsml:attr name=\"ou\">\n" +
" <mydsml:value>Planning</mydsml:value>\n" +
" </mydsml:attr>\n" +
" <mydsml:attr name=\"objectClass\">\n" +
" <mydsml:value>organizationalUnit</mydsml:value>\n" +
" </mydsml:attr>\n" +
" </mydsml:searchResultEntry>\n" +
" <mydsml:searchResultEntry dn=\"ou=Projects,o=DEMOCORP,c=AU\">\n" +
" <mydsml:attr name=\"ou\">\n" +
" <mydsml:value>Projects</mydsml:value>\n" +
" </mydsml:attr>\n" +
" <mydsml:attr name=\"objectClass\">\n" +
" <mydsml:value>organizationalUnit</mydsml:value>\n" +
" </mydsml:attr>\n" +
" </mydsml:searchResultEntry>\n" +
" <mydsml:searchResultEntry dn=\"ou=Services,o=DEMOCORP,c=AU\">\n" +
" <mydsml:attr name=\"ou\">\n" +
" <mydsml:value>Services</mydsml:value>\n" +
" </mydsml:attr>\n" +
" <mydsml:attr name=\"objectClass\">\n" +
" <mydsml:value>organizationalUnit</mydsml:value>\n" +
" </mydsml:attr>\n" +
" </mydsml:searchResultEntry>\n" +
" <mydsml:searchResultEntry dn=\"ou=\\\"Support\\\",o=DEMOCORP,c=AU\">\n" +
" <mydsml:attr name=\"ou\">\n" +
" <mydsml:value>Support</mydsml:value>\n" +
" </mydsml:attr>\n" +
" <mydsml:attr name=\"objectClass\">\n" +
" <mydsml:value>organizationalUnit</mydsml:value>\n" +
" </mydsml:attr>\n" +
" </mydsml:searchResultEntry>\n" +
" <mydsml:searchResultDone requestID=\"1\">\n" +
" <mydsml:resultCode code=\"0\"/>\n" +
" </mydsml:searchResultDone>\n" +
" </mydsml:searchResponse>\n" +
" </mydsml:batchResponse> \n" +
" </soapenv:Body>\n" +
" </soapenv:Envelope>";
public void testSearchResultParse()
throws NamingException
{
NamingEnumeration results1 = DsmlContext.parseSearchResponse(searchResponse1, "c=AU");
// check out the first entry
SearchResult result = (SearchResult) results1.next();
String dn = result.getName();
assertEquals(dn, "ou=Corporate,o=DEMOCORP,c=AU");
OrderedAttributes atts = new OrderedAttributes(result.getAttributes());
Enumeration attEnum = atts.getAll();
Attribute att1 = (Attribute) attEnum.nextElement();
assertEquals(att1.getID(), "description");
Enumeration values = att1.getAll();
assertEquals(values.nextElement(), "a very nice org unit");
assertEquals(values.nextElement(), "not at all like sales");
assertEquals(values.nextElement(), "no charges were ever proved");
assertEquals(values.nextElement(), "Clerical </value> fred");
}
private static String searchRequestSubTree = "" +
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
" <soap-env:Envelope xmlns:soap-env=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
" <soap-env:Body>\n" +
" <dsml:batchRequest xmlns:dsml=\"urn:oasis:names:tc:DSML:2:0:core\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
" <dsml:searchRequest dn=\"c=AU\" scope=\"wholeSubtree\" derefAliases=\"neverDerefAliases\">\n" +
" <dsml:filter>\n" +
" <dsml:present name=\"objectClass\"/>\n" +
" </dsml:filter>\n" +
" <dsml:attributes>\n" +
" <dsml:attribute name=\"objectClass\"/>\n" +
" <dsml:attribute name=\"cn\"/>\n" +
" </dsml:attributes>\n" +
" </dsml:searchRequest>\n" +
" </dsml:batchRequest>\n" +
" </soap-env:Body>\n" +
" </soap-env:Envelope>";
/**
* Search request (cn=Trudi)
*/
private static String searchRequest1 =
"<dsml:batchRequest xmlns:dsml=\"urn:oasis:names:tc:DSML:2:0:core\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
" <dsml:searchRequest dn=\"c=AU\" scope=\"wholeSubtree\" derefAliases=\"neverDerefAliases\">" +
" <dsml:filter>" +
" <dsml:equalityMatch name=\"cn\">" +
" <dsml:value>Trudi</dsml:value>" +
" </dsml:equalityMatch>" +
" </dsml:filter>" +
" <dsml:attributes>" +
" <dsml:attribute name=\"objectClass\"/>" +
" </dsml:attributes>" +
" </dsml:searchRequest>" +
"</dsml:batchRequest>";
/**
* Search request (&(|(sn=z*)(sn=w*))(|(sn=e*)(sn=r*)))
*/
private static String searchRequest2 =
"<dsml:batchRequest xmlns:dsml=\"urn:oasis:names:tc:DSML:2:0:core\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
" <dsml:searchRequest requestID=\"101\" dn=\"c=AU\" scope=\"wholeSubtree\" derefAliases=\"neverDerefAliases\">" +
" <dsml:filter>" +
" <dsml:and>" +
" <dsml:or>" +
" <dsml:substrings name=\"sn\">" +
" <dsml:initial>z</dsml:initial>" +
" </dsml:substrings>" +
" <dsml:substrings name=\"sn\">" +
" <dsml:initial>w</dsml:initial>" +
" </dsml:substrings>" +
" </dsml:or>" +
" <dsml:or>" +
" <dsml:substrings name=\"sn\">" +
" <dsml:initial>e</dsml:initial>" +
" </dsml:substrings>" +
" <dsml:substrings name=\"sn\">" +
" <dsml:initial>r</dsml:initial>" +
" </dsml:substrings>" +
" </dsml:or>" +
" </dsml:and>" +
" </dsml:filter>" +
" <dsml:attributes>" +
" <dsml:attribute name=\"objectClass\"/>" +
" </dsml:attributes>" +
" </dsml:searchRequest>" +
"</dsml:batchRequest>";
/**
* Test that various ldap filters are correctly translated into the corresponding DSML (ignoring white space differences)
*
* @throws NamingException
*/
public void testLdapFilter()
throws NamingException
{
assertXMLEquals(filter1, DsmlContext.getSearchRequestFilter(new StringBuffer(), "(cn=fred)", " "));
assertXMLEquals(filter2, DsmlContext.getSearchRequestFilter(new StringBuffer(), "(&(!(sn<=Le*))(cn~=Crai))", " "));
assertXMLEquals(filter3, DsmlContext.getSearchRequestFilter(new StringBuffer(), "(!(|(&(!(|(sn=*)(cn=a*)(sn=b)))(!(&(sn=*c)(!(cn=d*))(sn=*e*))))(|(!(sn=f))(cn=g)(cn=*a*b*c*)(!(sn=*h)))))", " "));
}
/**
* Test that various ldap 'attribute match' search filters are correctly constructed.
*/
public void testCreateAttributeLdapFilter()
{
OrderedAttributes testAtts = new OrderedAttributes("person", "chris");
assertEquals("(person=*)", DsmlContext.getAttributeMatchFilter(testAtts));
testAtts.put(new BasicAttribute("favoriteDrink"));
assertEquals("(&(favoriteDrink=*)(person=*))", DsmlContext.getAttributeMatchFilter(testAtts));
testAtts.put(new BasicAttribute("postCode"));
assertEquals("(&(favoriteDrink=*)(person=*)(postCode=*))", DsmlContext.getAttributeMatchFilter(testAtts));
testAtts.put(new BasicAttribute("address"));
testAtts.put(new BasicAttribute("uid"));
assertEquals("(&(address=*)(favoriteDrink=*)(person=*)(postCode=*)(uid=*))", DsmlContext.getAttributeMatchFilter(testAtts));
assertEquals("(objectClass=*)", DsmlContext.getAttributeMatchFilter(new BasicAttributes()));
assertEquals("(objectClass=*)", DsmlContext.getAttributeMatchFilter(null));
}
private static String filter1 =
"<dsml:filter>\n" +
" <dsml:equalityMatch name=\"cn\">\n" +
" <dsml:value>fred</dsml:value>\n" +
" </dsml:equalityMatch>\n" +
"</dsml:filter>";
private static String filter2 =
" <dsml:filter>\n" +
" <dsml:and>\n" +
" <dsml:not>\n" +
" <dsml:lessOrEqual name=\"sn\">\n" +
" <dsml:value>Le*</dsml:value>\n" +
" </dsml:lessOrEqual>\n" +
" </dsml:not>\n" +
" <dsml:approxMatch name=\"cn\">\n" +
" <dsml:value>Crai</dsml:value>\n" +
" </dsml:approxMatch>\n" +
" </dsml:and>\n" +
" </dsml:filter>";
/**
* Search request (!(|(&(!(|(sn=*)(cn=a*)(sn=b)))(!(&(sn=*c)(!(cn=d*))(sn=*e*))))(|(!(sn=f))(cn=g)(cn=*a*b*c*)(!(sn=*h)))))
*/
private static String filter3 =
" <dsml:filter>" +
" <dsml:not>" +
" <dsml:or>" +
" <dsml:and>" +
" <dsml:not>" +
" <dsml:or>" +
" <dsml:present name=\"sn\"/>" +
" <dsml:substrings name=\"cn\">" +
" <dsml:initial>a</dsml:initial>" +
" </dsml:substrings>" +
" <dsml:equalityMatch name=\"sn\">" +
" <dsml:value>b</dsml:value>" +
" </dsml:equalityMatch>" +
" </dsml:or>" +
" </dsml:not>" +
" <dsml:not>" +
" <dsml:and>" +
" <dsml:substrings name=\"sn\">" +
" <dsml:final>c</dsml:final>" +
" </dsml:substrings>" +
" <dsml:not>" +
" <dsml:substrings name=\"cn\">" +
" <dsml:initial>d</dsml:initial>" +
" </dsml:substrings>" +
" </dsml:not>" +
" <dsml:substrings name=\"sn\">" +
" <dsml:any>e</dsml:any>" +
" </dsml:substrings>" +
" </dsml:and>" +
" </dsml:not>" +
" </dsml:and>" +
" <dsml:or>" +
" <dsml:not>" +
" <dsml:equalityMatch name=\"sn\">" +
" <dsml:value>f</dsml:value>" +
" </dsml:equalityMatch>" +
" </dsml:not>" +
" <dsml:equalityMatch name=\"cn\">" +
" <dsml:value>g</dsml:value>" +
" </dsml:equalityMatch>" +
" <dsml:substrings name=\"cn\">" +
" <dsml:any>a</dsml:any>" +
" <dsml:any>b</dsml:any>" +
" <dsml:any>c</dsml:any>" +
" </dsml:substrings>" +
" <dsml:not>" +
" <dsml:substrings name=\"sn\">" +
" <dsml:final>h</dsml:final>" +
" </dsml:substrings>" +
" </dsml:not>" +
" </dsml:or>" +
" </dsml:or>" +
" </dsml:not>" +
" </dsml:filter>";
/**
* Delete cn=Alana SHORE,ou=Infrastructure,ou=Support,o=DEMOCORP,c=AU
*/
private static String deleteRequest1 =
" <dsml:delRequest dn=\"cn=Alana SHORE,ou=Infrastructure,ou=Support,o=DEMOCORP,c=AU\"/>";
/**
* Test that various ldap filters are correctly translated into the corresponding DSML (ignoring white space differences)
*
* @throws NamingException
*/
public void testDeleteRequest()
throws NamingException
{
StringBuffer buffy = new StringBuffer();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -