package detective.core.task; import detective.task.HttpClientTask; import org.apache.commons.codec.binary.Base64; import org.apache.http.Header; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpUriRequest; import org.junit.Test; import java.lang.reflect.Method; import java.nio.charset.Charset; import static junit.framework.Assert.*; /** * Created by amila on 11/05/2016. */ public class HttpClientTaskTest extends HttpClientTask { /** * Tests the protected method using reflection * @throws Exception */ @Test public void testAddBasicAuthentication() throws Exception { String userName = "testuser"; String password = "testpass"; String auth = userName + ":" + password; byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("UTF-8"))); String expectedAuthString = "Basic " + new String(encodedAuth); HttpUriRequest request = new HttpPost("http://www.google.com.au"); HttpClientTask httpClientTask = new HttpClientTask(); Method method = httpClientTask.getClass().getDeclaredMethod("addBasicAuthentication", HttpUriRequest.class, String.class, String.class); method.setAccessible(true); method.invoke(httpClientTask, request, userName, password); Header[] headers = request.getHeaders("Authorization"); assertNotNull(headers); assertTrue(headers.length > 0); Header authHeader = headers[0]; String authHeaderValue = authHeader.getValue(); assertEquals(expectedAuthString, authHeaderValue); } @Test public void testAddAuthHeader() throws Exception { String authHeaderValue = "thisistheauthheader"; HttpUriRequest request = new HttpPost("http://www.google.com.au"); HttpClientTask httpClientTask = new HttpClientTask(); Method method = httpClientTask.getClass().getDeclaredMethod("addAuthorizationHeader", HttpUriRequest.class, String.class); method.setAccessible(true); method.invoke(httpClientTask, request, authHeaderValue); Header[] headers = request.getHeaders("Authorization"); assertNotNull(headers); assertTrue(headers.length > 0); Header authHeader = headers[0]; assertEquals(authHeaderValue, authHeader.getValue()); } }