/*
|
* 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));
|
}
|
}
|
}
|