Package org.apache.mina.proxy

Source Code of org.apache.mina.proxy.HttpAuthTest

/*
*  Licensed to the Apache Software Foundation (ASF) under one
*  or more contributor license agreements.  See the NOTICE file
*  distributed with this work for additional information
*  regarding copyright ownership.  The ASF licenses this file
*  to you under the Apache License, Version 2.0 (the
*  "License"); you may not use this file except in compliance
*  with the License.  You may obtain a copy of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing,
*  software distributed under the License is distributed on an
*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
*  KIND, either express or implied.  See the License for the
*  specific language governing permissions and limitations
*  under the License.
*
*/
package org.apache.mina.proxy;

import java.util.HashMap;

import junit.framework.TestCase;

import org.apache.mina.core.session.DummySession;
import org.apache.mina.proxy.handlers.http.basic.HttpBasicAuthLogicHandler;
import org.apache.mina.proxy.handlers.http.digest.DigestUtilities;

/**
* HttpAuthTest.java - JUNIT tests of the HTTP Basic & Digest authentication mechanisms.
* See <a href="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617</a> .
*
* @author The Apache MINA Project (dev@mina.apache.org)
* @version $Rev: 751473 $, $Date: 2009-03-08 18:22:14 +0100 (Sun, 08 Mar 2009) $
* @since MINA 2.0.0-M3
*/
public class HttpAuthTest extends TestCase {

    /**
     * The charset in use.
     */
    private final static String CHARSET_IN_USE = "ISO-8859-1";

    /**
     * Tests Basic authentication mechanism.
     */
    public void testBasicAuthResponse() {
        String USER = "Aladdin";
        String PWD = "open sesame";

        assertEquals("QWxhZGRpbjpvcGVuIHNlc2FtZQ==", HttpBasicAuthLogicHandler
                .createAuthorization(USER, PWD));
    }

    /**
     * Tests Http Digest authentication mechanism.
     */
    public void testDigestAuthResponse() {
        String USER = "Mufasa";
        String PWD = "Circle Of Life";
        String METHOD = "GET";

        HashMap<String, String> map = new HashMap<String, String>();

        map.put("realm", "testrealm@host.com");
        map.put("qop", "auth");
        map.put("nc", "00000001");

        map.put("cnonce", "0a4f113b");

        map.put("nonce", "dcd98b7102dd2f0e8b11d0f600bfb0c093");
        map.put("opaque", "5ccc069c403ebaf9f0171e9517f40e41");
        map.put("uri", "/dir/index.html");
        map.put("username", USER);

        String response = null;
        try {
            response = DigestUtilities.computeResponseValue(new DummySession(),
                    map, METHOD, PWD, CHARSET_IN_USE, null);
            assertEquals("6629fae49393a05397450978507c4ef1", response);
            writeResponse(map, response);
        } catch (Exception e) {
            //e.printStackTrace();
        }
    }

    /**
     * Pretty prints the digest response header .
     *
     * @param map the map holding the authentication parameters
     * @param response the built digest response string
     */
    private void writeResponse(HashMap<String, String> map, String response) {
        map.put("response", response);
        StringBuilder sb = new StringBuilder("Digest ");
        boolean addSeparator = false;

        for (String key : map.keySet()) {

            if (addSeparator) {
                sb.append(",\n\t\t\t ");
            } else {
                addSeparator = true;
            }

            boolean quotedValue = !"qop".equals(key) && !"nc".equals(key);
            sb.append(key);
            if (quotedValue) {
                sb.append("=\"").append(map.get(key)).append('\"');
            } else {
                sb.append('=').append(map.get(key));
            }
        }

        //System.out.println("Proxy-Authorization: " + sb.toString());
    }
}
TOP

Related Classes of org.apache.mina.proxy.HttpAuthTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.