Package org.apache.wink.client.handlers

Source Code of org.apache.wink.client.handlers.AuthSecurityHandlerTest

/*
* 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.wink.client.handlers;

import org.apache.wink.client.BaseTest;
import org.apache.wink.client.ClientAuthenticationException;
import org.apache.wink.client.ClientConfig;
import org.apache.wink.client.ClientResponse;
import org.apache.wink.client.MockHttpServer;
import org.apache.wink.client.Resource;
import org.apache.wink.client.RestClient;

public class AuthSecurityHandlerTest extends BaseTest {
   
    /*
     * API TESTS
     */
   
    // basic auth handler should throw exception when challenged but no username is set
    public void testNoUserNameBasicAuthFailure() throws Exception {
        server.getMockHttpServerResponses().get(0).setMockResponseCode(401);
        ClientConfig config = new ClientConfig();
        BasicAuthSecurityHandler basicAuthSecurityHandler = new BasicAuthSecurityHandler();
        // oops, forgot to set username!
        basicAuthSecurityHandler.setPassword("password");
        config.handlers(basicAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        try {
            @SuppressWarnings("unused")
            ClientResponse response = resource.get();
            fail("should have got a ClientAuthenticationException");
        } catch (ClientAuthenticationException e) {
            // do nothing
        }
    }
   
    // basic auth handler should throw exception when challenged but no password is set
    public void testNoPasswordBasicAuthFailure() throws Exception {
        server.getMockHttpServerResponses().get(0).setMockResponseCode(401);
        ClientConfig config = new ClientConfig();
        BasicAuthSecurityHandler basicAuthSecurityHandler = new BasicAuthSecurityHandler();
        basicAuthSecurityHandler.setUserName("username");
        // oops, forgot to set password!
        config.handlers(basicAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        try {
            @SuppressWarnings("unused")
            ClientResponse response = resource.get();
            fail("should have got a ClientAuthenticationException");
        } catch (ClientAuthenticationException e) {
            // do nothing
        }
    }
   
    // basic auth handler should flow through when NOT challenged but no username is set
    public void testNoUserNameBasicAuthAllowed() throws Exception {
        server.getMockHttpServerResponses().get(0).setMockResponseCode(200);
        ClientConfig config = new ClientConfig();
        BasicAuthSecurityHandler basicAuthSecurityHandler = new BasicAuthSecurityHandler();
        // oops, forgot to set username!
        basicAuthSecurityHandler.setPassword("password");
        config.handlers(basicAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        ClientResponse response = resource.get();
        assertEquals(200, response.getStatusCode());
    }
   
    // proxy auth handler should throw exception when challenged but no username is set
    public void testNoUserNameProxyAuthFailure() throws Exception {
        server.getMockHttpServerResponses().get(0).setMockResponseCode(407);
        ClientConfig config = new ClientConfig();
        ProxyAuthSecurityHandler proxyAuthSecurityHandler = new ProxyAuthSecurityHandler();
        // oops, forgot to set username!
        proxyAuthSecurityHandler.setPassword("password");
        config.handlers(proxyAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        try {
            @SuppressWarnings("unused")
            ClientResponse response = resource.get();
            fail("should have got a ClientAuthenticationException");
        } catch (ClientAuthenticationException e) {
            // do nothing
        }
    }
   
    // proxy auth handler should throw exception when challenged but no password is set
    public void testNoPasswordProxyAuthFailure() throws Exception {
        server.getMockHttpServerResponses().get(0).setMockResponseCode(407);
        ClientConfig config = new ClientConfig();
        ProxyAuthSecurityHandler proxyAuthSecurityHandler = new ProxyAuthSecurityHandler();
        proxyAuthSecurityHandler.setUserName("username");
        // oops, forgot to set password!
        config.handlers(proxyAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        try {
            @SuppressWarnings("unused")
            ClientResponse response = resource.get();
            fail("should have got a ClientAuthenticationException");
        } catch (ClientAuthenticationException e) {
            // do nothing
        }
    }
   
    // proxy auth handler should flow through when NOT challenged but no username is set
    public void testNoUserNameProxyAuthAllowed() throws Exception {
        server.getMockHttpServerResponses().get(0).setMockResponseCode(200);
        ClientConfig config = new ClientConfig();
        ProxyAuthSecurityHandler proxyAuthSecurityHandler = new ProxyAuthSecurityHandler();
        // oops, forgot to set username!
        proxyAuthSecurityHandler.setPassword("password");
        config.handlers(proxyAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        ClientResponse response = resource.get();
        assertEquals(200, response.getStatusCode());
    }
   
    /*
     * BASIC AUTH
     */
   
    public void testNoBasicAuthHandler() throws Exception {
        server.getMockHttpServerResponses().get(0).setMockResponseCode(401);
        RestClient client = new RestClient(new ClientConfig());
        Resource resource = client.resource(serviceURL);
        ClientResponse response = resource.get();
        assertEquals(401, response.getStatusCode())// should have challenged us due to lack of credentials
    }
   
    public void testBasicAuthHandlerNoAuthRequired() throws Exception {
        // try with BasicAuthSecurityHandler, but return 200 from server for first response; BasicAuthSecurityHandler should allow flow through
        server.getMockHttpServerResponses().get(0).setMockResponseCode(200);
        ClientConfig config = new ClientConfig();
        BasicAuthSecurityHandler basicAuthSecurityHandler = new BasicAuthSecurityHandler();
        basicAuthSecurityHandler.setUserName("username");
        basicAuthSecurityHandler.setPassword("password");
        config.handlers(basicAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        ClientResponse response = resource.get();
        assertEquals(200, response.getStatusCode());
    }

    public void testBasicAuthHandlerAuthDenied() throws Exception {
        // try with BasicAuthSecurityHandler, but still return 401 from server for both first and second responses
        MockHttpServer.MockHttpServerResponse response1 = new MockHttpServer.MockHttpServerResponse();
        response1.setMockResponseCode(401);
        MockHttpServer.MockHttpServerResponse response2 = new MockHttpServer.MockHttpServerResponse();
        response2.setMockResponseCode(401);
        server.setMockHttpServerResponses(response1, response2);
        ClientConfig config = new ClientConfig();
        BasicAuthSecurityHandler basicAuthSecurityHandler = new BasicAuthSecurityHandler();
        basicAuthSecurityHandler.setUserName("username");
        basicAuthSecurityHandler.setPassword("password");
        config.handlers(basicAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        try {
            @SuppressWarnings("unused")
            ClientResponse response = resource.get();
            fail("should have got a ClientAuthenticationException");
        } catch (ClientAuthenticationException e) {
            // do nothing
        }
    }
   
    public void testBasicAuthHandlerAuthGranted() throws Exception {
        // try again with BasicAuthSecurityHandler, but now return 200 from server on the second response
        MockHttpServer.MockHttpServerResponse response1 = new MockHttpServer.MockHttpServerResponse();
        response1.setMockResponseCode(401);
        MockHttpServer.MockHttpServerResponse response2 = new MockHttpServer.MockHttpServerResponse();
        response2.setMockResponseCode(200);
        server.setMockHttpServerResponses(response1, response2);
        ClientConfig config = new ClientConfig();
        BasicAuthSecurityHandler basicAuthSecurityHandler = new BasicAuthSecurityHandler();
        basicAuthSecurityHandler.setUserName("username");
        basicAuthSecurityHandler.setPassword("password");
        config.handlers(basicAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        ClientResponse response = resource.get();
        assertEquals(200, response.getStatusCode());
    }
   
    /*
     * PROXY AUTH
     */
   
    public void testNoProxyAuthHandler() throws Exception {
        server.getMockHttpServerResponses().get(0).setMockResponseCode(407);
        RestClient client = new RestClient(new ClientConfig());
        Resource resource = client.resource(serviceURL);
        ClientResponse response = resource.get();
        assertEquals(407, response.getStatusCode())// should have challenged us due to lack of credentials
    }
   
    public void testProxyAuthHandlerNoAuthRequired() throws Exception {
        // try with ProxyAuthSecurityHandler, but return 200 from server for first response; ProxyAuthSecurityHandler should allow flow through
        server.getMockHttpServerResponses().get(0).setMockResponseCode(200);
        ClientConfig config = new ClientConfig();
        ProxyAuthSecurityHandler proxyAuthSecurityHandler = new ProxyAuthSecurityHandler();
        proxyAuthSecurityHandler.setUserName("username");
        proxyAuthSecurityHandler.setPassword("password");
        config.handlers(proxyAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        ClientResponse response = resource.get();
        assertEquals(200, response.getStatusCode());
    }

    public void testProxyAuthHandlerAuthDenied() throws Exception {
        // try with ProxyAuthSecurityHandler, but still return 407 from server for both first and second responses
        MockHttpServer.MockHttpServerResponse response1 = new MockHttpServer.MockHttpServerResponse();
        response1.setMockResponseCode(407);
        MockHttpServer.MockHttpServerResponse response2 = new MockHttpServer.MockHttpServerResponse();
        response2.setMockResponseCode(407);
        server.setMockHttpServerResponses(response1, response2);
        ClientConfig config = new ClientConfig();
        ProxyAuthSecurityHandler proxyAuthSecurityHandler = new ProxyAuthSecurityHandler();
        proxyAuthSecurityHandler.setUserName("username");
        proxyAuthSecurityHandler.setPassword("password");
        config.handlers(proxyAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        try {
            @SuppressWarnings("unused")
            ClientResponse response = resource.get();
            fail("should have got a ClientAuthenticationException");
        } catch (ClientAuthenticationException e) {
            // do nothing
        }
    }
   
    public void testProxyAuthHandlerAuthGranted() throws Exception {
        // try again with ProxyAuthSecurityHandler, but now return 200 from server on the second response
        MockHttpServer.MockHttpServerResponse response1 = new MockHttpServer.MockHttpServerResponse();
        response1.setMockResponseCode(407);
        MockHttpServer.MockHttpServerResponse response2 = new MockHttpServer.MockHttpServerResponse();
        response2.setMockResponseCode(200);
        server.setMockHttpServerResponses(response1, response2);
        ClientConfig config = new ClientConfig();
        ProxyAuthSecurityHandler proxyAuthSecurityHandler = new ProxyAuthSecurityHandler();
        proxyAuthSecurityHandler.setUserName("username");
        proxyAuthSecurityHandler.setPassword("password");
        config.handlers(proxyAuthSecurityHandler);
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        ClientResponse response = resource.get();
        assertEquals(200, response.getStatusCode());
    }
   
    /*
     * BOTH PROXY AND BASIC
     */
   
    public void testProxyAndBasicAuthHandlerAuthGranted() throws Exception {
        // try again with ProxyAuthSecurityHandler and BasicAuthSecurityHandler, return 407, then 401, then 200
        MockHttpServer.MockHttpServerResponse response1 = new MockHttpServer.MockHttpServerResponse();
        response1.setMockResponseCode(407);
        MockHttpServer.MockHttpServerResponse response2 = new MockHttpServer.MockHttpServerResponse();
        response2.setMockResponseCode(401);
        MockHttpServer.MockHttpServerResponse response3 = new MockHttpServer.MockHttpServerResponse();
        response3.setMockResponseCode(200);
        server.setMockHttpServerResponses(response1, response2, response3);
        ClientConfig config = new ClientConfig();
        BasicAuthSecurityHandler basicAuthSecurityHandler = new BasicAuthSecurityHandler();
        basicAuthSecurityHandler.setUserName("basicuser");
        basicAuthSecurityHandler.setPassword("basicpassword");
        ProxyAuthSecurityHandler proxyAuthSecurityHandler = new ProxyAuthSecurityHandler();
        proxyAuthSecurityHandler.setUserName("username");
        proxyAuthSecurityHandler.setPassword("password");
        config.handlers(proxyAuthSecurityHandler, basicAuthSecurityHandler)// proxy first, then basic, of course
        RestClient client = new RestClient(config);
        Resource resource = client.resource(serviceURL);
        ClientResponse response = resource.get();
        assertEquals(200, response.getStatusCode());
    }
   
}
TOP

Related Classes of org.apache.wink.client.handlers.AuthSecurityHandlerTest

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.