/*******************************************************************************
* Copyright (c) 2016 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package com.openshift.internal.restclient.okhttp;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import org.apache.commons.lang.StringUtils;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import com.openshift.restclient.authorization.IAuthorizationContext;
import okhttp3.Headers;
import okhttp3.Request;
import okhttp3.Request.Builder;
@RunWith(MockitoJUnitRunner.class)
public class BasicChallangeHandlerTest {
@Mock
private IAuthorizationContext context;
private BasicChallangeHandler handler;
@Before
public void setUp() throws Exception {
this.handler = new BasicChallangeHandler(context);
when(context.getUserName()).thenReturn("username");
when(context.getPassword()).thenReturn("password");
}
@Test
public void testCanHandle() {
assertTrue(handler.canHandle(givenHeader(OpenShiftAuthenticator.PROPERTY_WWW_AUTHENTICATE, "basic")));
assertTrue(handler.canHandle(givenHeader(OpenShiftAuthenticator.PROPERTY_WWW_AUTHENTICATE, "bAsIC")));
assertFalse(handler.canHandle(givenHeader(OpenShiftAuthenticator.PROPERTY_WWW_AUTHENTICATE, "foobar")));
assertFalse(handler.canHandle(givenHeader(OpenShiftAuthenticator.PROPERTY_WWW_AUTHENTICATE, "")));
assertFalse(handler.canHandle(givenHeader("key","value")));
}
@Test
public void testHandleChallange() {
Builder builder = new Request.Builder()
.url("http://foo");
Request request = handler.handleChallange(builder).build();
String authorization = request.header(OpenShiftAuthenticator.PROPERTY_AUTHORIZATION);
assertTrue("Exp. auth to not be blank", StringUtils.isNotBlank(authorization));
assertTrue("Exp. auth to be basic", authorization.startsWith(OpenShiftAuthenticator.AUTHORIZATION_BASIC));
}
@Test
public void testHandleChallangeWhenUsernameIsNull() {
when(context.getUserName()).thenReturn(null);
Builder builder = new Request.Builder()
.url("http://foo");
Request request = handler.handleChallange(builder).build();
String authorization = request.header(OpenShiftAuthenticator.PROPERTY_AUTHORIZATION);
assertTrue("Exp. auth to not be blank", StringUtils.isNotBlank(authorization));
assertTrue("Exp. auth to be basic", authorization.startsWith(OpenShiftAuthenticator.AUTHORIZATION_BASIC));
}
private Headers givenHeader(String name, String value) {
return new Headers.Builder()
.add(name, value)
.build();
}
}