⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsmlcontexttest.java

📁 JAVA开源LDAP浏览器jxplorer的源码!
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            "                     <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 + -