/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2010 Sun Microsystems, Inc. */ package org.opends.sdk; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * This class defines a set of tests for the org.opends.sdk.LDAPUrl class. */ public class LDAPUrlTestCase extends SdkTestCase { /** * LDAPUrl encoding test data provider. * * @return The array of test encoding of LDAP URL strings. */ @DataProvider(name = "ldapurls") public Object[][] createEncodingData() { return new Object[][] { { "ldap://", "ldap://", true }, { "ldap:///", "ldap:///", true }, { "ldap://ldap.example.net", "ldap://ldap.example.net", true }, { "ldap://ldap.example.net/", "ldap://ldap.example.net/", true }, { "ldap://ldap.example.net/?", "ldap://ldap.example.net/?", true }, { "ldap:///o=University of Michigan,c=US", "ldap:///o=University%20of%20Michigan,c=US", true }, { "ldap://ldap1.example.net/o=University of Michigan,c=US", "ldap://ldap1.example.net/o=University%20of%20Michigan,c=US", true }, { "ldap://ldap1.example.net/o=University of Michigan,c=US?postalAddress", "ldap://ldap1.example.net/o=University%20of%20Michigan,c=US?postalAddress", true }, { "ldap://ldap1.example.net:6666/o=University of Michigan,c=US??sub?(cn=Babs Jensen)", "ldap://ldap1.example.net:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)", true }, { "LDAP://ldap1.example.com/c=GB?objectClass?ONE", "LDAP://ldap1.example.com/c=GB?objectClass?ONE", true }, // { "ldap://ldap2.example.com/o=Question?,c=US?mail", // "ldap://ldap2.example.com/o=Question%3f,c=US?mail",true }, { "ldap://ldap3.example.com/o=Babsco,c=US???(four-octet=\00\00\00\04)", "ldap://ldap3.example.com/o=Babsco,c=US???(four-octet=%5c00%5c00%5c00%5c04)", true }, { "ldap://ldap.example.com/o=An Example\\2C Inc.,c=US", "ldap://ldap.example.com/o=An%20Example%5C2C%20Inc.,c=US", true }, { "ldap:///", "ldap:///", true }, { "ldap:///", "ldap:///", true }, { "ldap:///", "ldap:///", true }, }; } /** * LDAPUrl construction test data provider. * * @return The array of test construction of LDAPUrl objects. */ @DataProvider(name = "urlobjects1") public Object[][] createURLObjects1() { return new Object[][] { { new LDAPUrl(false, null, null, null, null, null), "ldap:///???" }, { new LDAPUrl(true, null, null, null, null, null), "ldaps:///???" }, { new LDAPUrl(true, "void.central.sun.com", null, null, null, null), "ldaps://void.central.sun.com/???" }, { new LDAPUrl(true, null, 1245, null, null, null), "ldaps://:1245/???" }, { new LDAPUrl(true, "void.central", 123, null, null, null), "ldaps://void.central:123/???" }, { new LDAPUrl(true, null, null, null, null, null, "cn", "sn"), "ldaps:///?cn,sn??" }, { new LDAPUrl(true, null, null, null, null, Filter .newEqualityMatchFilter("uid", "abc"), "cn"), "ldaps:///?cn??(uid=abc)" }, { new LDAPUrl(true, null, null, null, SearchScope.WHOLE_SUBTREE, Filter.newEqualityMatchFilter("uid", "abc"), "cn"), "ldaps:///?cn?sub?(uid=abc)" }, { new LDAPUrl(true, null, null, DN.valueOf("uid=abc,o=target"), SearchScope.WHOLE_SUBTREE, Filter.newEqualityMatchFilter("uid", "abc"), "cn"), "ldaps:///uid=abc,o=target?cn?sub?(uid=abc)" }, { new LDAPUrl(true, "localhost", 1345, DN.valueOf("uid=abc,o=target"), SearchScope.WHOLE_SUBTREE, Filter.newEqualityMatchFilter("uid", "abc"), "cn"), "ldaps://localhost:1345/uid=abc,o=target?cn?sub?(uid=abc)" }, }; } /** * LDAPUrl construction test data provider. * * @return The array of test construction of LDAPUrl objects. */ @DataProvider(name = "urlobjects2") public Object[][] createURLObjects2() { return new Object[][] { { new LDAPUrl(false, null, null, null, null, null), LDAPUrl.valueOf("ldap:///") }, { new LDAPUrl(true, null, null, null, null, null), LDAPUrl.valueOf("ldaps:///") }, { new LDAPUrl(true, "void.central.sun.com", null, null, null, null), LDAPUrl.valueOf("ldaps://void.central.sun.com") }, { new LDAPUrl(true, null, 1245, null, null, null), LDAPUrl.valueOf("ldaps://:1245") }, { new LDAPUrl(true, "void.central", 123, null, null, null), LDAPUrl.valueOf("ldaps://void.central:123") }, { new LDAPUrl(true, null, null, null, null, null, "cn", "sn"), LDAPUrl.valueOf("ldaps:///?cn,sn??") }, { new LDAPUrl(true, null, null, null, null, Filter .newEqualityMatchFilter("uid", "abc"), "cn"), LDAPUrl.valueOf("ldaps:///?cn??(uid=abc)") }, { new LDAPUrl(true, null, null, null, SearchScope.WHOLE_SUBTREE, Filter.newEqualityMatchFilter("uid", "abc"), "cn"), LDAPUrl.valueOf("ldaps:///?cn?sub?(uid=abc)") }, { new LDAPUrl(true, null, null, DN.valueOf("uid=abc,o=target"), SearchScope.WHOLE_SUBTREE, Filter.newEqualityMatchFilter("uid", "abc"), "cn"), LDAPUrl.valueOf("ldaps:///uid=abc,o=target?cn?sub?(uid=abc)") }, { new LDAPUrl(true, "localhost", 1345, DN.valueOf("uid=abc,o=target"), SearchScope.WHOLE_SUBTREE, Filter.newEqualityMatchFilter("uid", "abc"), "cn"), LDAPUrl .valueOf("ldaps://localhost:1345/uid=abc,o=target?cn?sub?(uid=abc)") }, }; } /** * Tests equals method of the LDAP URL. * * @param urlObj1 * The LDAPUrl object. * @param urlObj2 * The LDAPUrl object. * @throws Exception * If the test failed unexpectedly. */ @Test(dataProvider = "urlobjects2") public void testLDAPURLCtor(final LDAPUrl urlObj1, final LDAPUrl urlObj2) throws Exception { assertTrue(urlObj1.equals(urlObj2)); } /** * Test Whether the LDAP URL (non-encoded) is constructed properly from the * arguments. * * @param urlObj * The LDAPUrl object. * @param urlString * The non-encoded ldap url. * @throws Exception * If the test failed unexpectedly. */ @Test(dataProvider = "urlobjects1") public void testLDAPURLCtor(final LDAPUrl urlObj, final String urlString) throws Exception { assertEquals(urlString, urlObj.toString()); } /** * Test the LDAP URL encoding. * * @param toEncode * The URL that needs encoding. * @param encoded * The encoded URL. * @param valid * if the encoding is valid. * @throws Exception * If the test failed unexpectedly. */ @Test(dataProvider = "ldapurls") public void testURLEncoding(final String toEncode, final String encoded, final boolean valid) throws Exception { final LDAPUrl url1 = LDAPUrl.valueOf(toEncode); final LDAPUrl url2 = LDAPUrl.valueOf(encoded); if (valid) { assertTrue(url1.equals(url2)); } } }