package com.soundcloud.api;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.apache.http.Header;
import org.apache.http.HttpRequest;
import org.apache.http.RequestLine;
import org.apache.http.auth.AuthScheme;
import org.apache.http.auth.AuthState;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
public class OAuth2HttpRequestInterceptorTest {
OAuth2HttpRequestInterceptor interceptor;
HttpRequest request;
HttpContext context;
AuthState authState;
@Before
public void setup() {
interceptor = new OAuth2HttpRequestInterceptor();
request = mock(HttpRequest.class);
RequestLine line = mock(RequestLine.class);
when(line.getMethod()).thenReturn("GET");
when(request.getRequestLine()).thenReturn(line);
context = new BasicHttpContext();
authState = new AuthState();
context.setAttribute(ClientContext.TARGET_AUTH_STATE, authState);
}
@Test
public void shouldCallAuthenticate() throws Exception {
AuthScheme scheme = mock(AuthScheme.class);
authState.setAuthScheme(scheme);
interceptor.process(request, context);
verify(scheme).authenticate(
Matchers.<org.apache.http.auth.Credentials>anyObject(),
Matchers.<HttpRequest>anyObject());
verify(request).setHeader(Matchers.<Header>anyObject());
}
}