mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

dugan
23.40.2006 a870875c48842c299d2021fefdd40c7de42eef5e
Add BindResponseProtocolOp to unit test
1 files added
230 ■■■■■ changed files
opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindResponseProtocolOp.java 230 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindResponseProtocolOp.java
New file
@@ -0,0 +1,230 @@
/*
 * 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
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.protocols.ldap;
import java.util.ArrayList;
import java.util.List;
import org.opends.server.TestCaseUtils;
import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.ldap.BindResponseProtocolOp;
import static org.opends.server.protocols.ldap.LDAPConstants.*;
import org.opends.server.types.DN;
import org.opends.server.types.ResultCode;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
public class TestBindResponseProtocolOp  extends LdapTestCase {
    private static String message = "This is a message";
    private static String message2 = "This is a second message";
    ResultCode        okCode          = ResultCode.SUCCESS;
    ResultCode  busyCode = ResultCode.BUSY;
    ResultCode invalidSyntaxCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX;
    private static String dn = "cn=dn, dc=example,dc=com";
    private static String dn2 = "cn=dn2, dc=example,dc=com";
    private static String saslCreds = "sasl credentials";
    private static String saslCreds2 = "sasl2 credentials";
    private static String url = "ldap://somewhere.example.com";
    private static String url2 = "ldap://somewhere2.example.com";
    /**
     * Once-only initialization.
     *
     * @throws Exception
     *           If an unexpected error occurred.
     */
    @BeforeClass
    public void setUp() throws Exception {
      // This test suite depends on having the schema available, so we'll
      // start the server.
      TestCaseUtils.startServer();
    }
    @Test ()
    public void testBindRequestToString() throws Exception
    {
        List<String> referralURLs=new ArrayList<String>();
        referralURLs.add(url);
        DN responseDn = DN.decode(dn);
        ASN1OctetString serverSASLCredentials =
            new ASN1OctetString(saslCreds);
        BindResponseProtocolOp r =
            new BindResponseProtocolOp(okCode.getIntValue(),
                    message, responseDn, referralURLs,
                    serverSASLCredentials);
        StringBuilder sb = new StringBuilder();
        r.toString(sb);
        r.toString(sb, 1);
    }
    @Test (expectedExceptions = LDAPException.class)
    public void testBindResponseTooFew() throws Exception {
        BindResponseProtocolOp busyResp =
            new BindResponseProtocolOp(busyCode.getIntValue());
        tooFewElements(busyResp, OP_TYPE_BIND_RESPONSE);
    }
    @Test (expectedExceptions = LDAPException.class)
    public void testBindResponseTooMany() throws Exception {
        BindResponseProtocolOp busyResp =
            new BindResponseProtocolOp(busyCode.getIntValue());
        tooManyElements(busyResp, OP_TYPE_BIND_RESPONSE);
    }
    @Test (expectedExceptions = LDAPException.class)
    public void testBindResponseBadResult() throws Exception {
        BindResponseProtocolOp busyResp =
            new BindResponseProtocolOp(busyCode.getIntValue());
        badIntegerElement(busyResp, OP_TYPE_BIND_RESPONSE,0);
    }
    @Test (expectedExceptions = LDAPException.class)
    public void testBindResponseBadReferral() throws Exception {
        List<String> referralURLs=new ArrayList<String>();
        referralURLs.add(url);
        DN responseDn = DN.decode(dn);
        ASN1OctetString serverSASLCredentials =
            new ASN1OctetString(saslCreds);
        BindResponseProtocolOp r =
            new BindResponseProtocolOp(okCode.getIntValue(),
                    message, responseDn, referralURLs,
                    serverSASLCredentials);
        badIntegerElement(r,OP_TYPE_BIND_RESPONSE,3);
    }
    @Test
    public void testBindResponseEncodeDecode() throws Exception {
        List<String> referralURLs=new ArrayList<String>();
        referralURLs.add(url);
        DN responseDn = DN.decode(dn);
        ASN1OctetString serverSASLCredentials =
            new ASN1OctetString(saslCreds);
        BindResponseProtocolOp saslOkResp =
            new BindResponseProtocolOp(okCode.getIntValue(),
                    message, responseDn, referralURLs,
                    serverSASLCredentials);
        BindResponseProtocolOp busyResp =
            new BindResponseProtocolOp(busyCode.getIntValue());
        BindResponseProtocolOp invalidSyntaxResp =
            new BindResponseProtocolOp(invalidSyntaxCode.getIntValue(),
                                                              message);
        ASN1Element saslOkElem=saslOkResp.encode();
        ASN1Element busyElem=busyResp.encode();
        ASN1Element invalidSyntaxElem=invalidSyntaxResp.encode();
        ProtocolOp saslOkDec= ProtocolOp.decode(saslOkElem);
        ProtocolOp busyDec = ProtocolOp.decode(busyElem);
        ProtocolOp invalidSyntaxDec = ProtocolOp.decode(invalidSyntaxElem);
        assertTrue(saslOkDec instanceof BindResponseProtocolOp);
        assertTrue(busyDec instanceof BindResponseProtocolOp);
        assertTrue(invalidSyntaxDec instanceof BindResponseProtocolOp);
        BindResponseProtocolOp saslOkOp =
             (BindResponseProtocolOp)saslOkDec;
        BindResponseProtocolOp busyOp =
             (BindResponseProtocolOp)busyDec;
        BindResponseProtocolOp invalidSyntaxOp =
             (BindResponseProtocolOp)invalidSyntaxDec;
        assertTrue(saslOkOp.getProtocolOpName() == saslOkResp.getProtocolOpName());
        assertTrue(busyOp.getProtocolOpName() == busyResp.getProtocolOpName());
        assertTrue(invalidSyntaxOp.getProtocolOpName() == invalidSyntaxResp.getProtocolOpName());
        assertTrue(saslOkOp.getType() == saslOkResp.getType());
        assertTrue(busyOp.getType() == busyResp.getType());
        assertTrue(invalidSyntaxOp.getType() == invalidSyntaxResp.getType());
        assertTrue(saslOkOp.getResultCode() == saslOkResp.getResultCode());
        assertTrue(busyOp.getResultCode() == busyResp.getResultCode());
        assertTrue(invalidSyntaxOp.getResultCode() == invalidSyntaxResp.getResultCode());
        assertTrue(saslOkOp.getErrorMessage().equals(saslOkResp.getErrorMessage()));
        assertTrue(invalidSyntaxOp.getErrorMessage().equals(invalidSyntaxResp.getErrorMessage()));
        String str1=saslOkOp.getServerSASLCredentials().toString();
        String str2=saslOkResp.getServerSASLCredentials().toString();
        assertTrue(str1.equals(str2));
        List<String> list1 = saslOkOp.getReferralURLs();
        List<String> list2 = saslOkResp.getReferralURLs();
        assertTrue(list1.equals(list2));
        DN dn1=saslOkOp.getMatchedDN();
        DN dn2=saslOkResp.getMatchedDN();
        assertTrue(dn1.equals(dn2));
    }
    @Test()
    public void testSetters() throws Exception {
        List<String> referralURLs=new ArrayList<String>();
        referralURLs.add(url);
        List<String> referralURL2s=new ArrayList<String>();
        referralURL2s.add(url2);
        DN responseDn = DN.decode(dn);
        DN responseDn2 = DN.decode(dn2);
        BindResponseProtocolOp resp =
            new BindResponseProtocolOp(okCode.getIntValue(),
                    message, responseDn, referralURLs);
        resp.encode();
        resp.setErrorMessage(message2);
        resp.setMatchedDN(responseDn2);
        resp.setReferralURLs(referralURL2s);
        resp.setResultCode(busyCode.getIntValue());
        ASN1Element respElem=resp.encode();
        ProtocolOp respDec= ProtocolOp.decode(respElem);
        BindResponseProtocolOp respOp =
            (BindResponseProtocolOp)respDec;
        assertTrue(respOp.getResultCode() == resp.getResultCode());
        DN dn1=resp.getMatchedDN();
        DN dn2=respOp.getMatchedDN();
        assertTrue(dn1.equals(dn2));
        assertTrue(respOp.getErrorMessage().equals(resp.getErrorMessage()));
        List<String> list1 = resp.getReferralURLs();
        List<String> list2 = respOp.getReferralURLs();
        assertTrue(list1.equals(list2));
        ASN1OctetString creds =
            new ASN1OctetString(saslCreds);
        ASN1OctetString creds2 =
            new ASN1OctetString(saslCreds2);
        BindResponseProtocolOp sasl =
            new BindResponseProtocolOp(okCode.getIntValue(),
                    message, responseDn, referralURLs,
                    creds);
        sasl.encode();
        sasl.setServerSASLCredentials(creds2);
        ASN1Element saslElem=sasl.encode();
        ProtocolOp saslDec= ProtocolOp.decode(saslElem);
        BindResponseProtocolOp saslOp =
            (BindResponseProtocolOp)saslDec;
        String str1=sasl.getServerSASLCredentials().toString();
        String str2=saslOp.getServerSASLCredentials().toString();
        assertTrue(str1.equals(str2));
    }
}