/**
* Copyright (C) 2012-2014 Gist Labs, LLC. (http://gistlabs.com)
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package com.gistlabs.mechanize;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import com.gistlabs.mechanize.exceptions.MechanizeException;
import com.gistlabs.mechanize.parameters.Parameters;
/**
* @author Martin Kersten<Martin.Kersten.mk@gmail.com>
*/
public class MechanizeAgentTest extends MechanizeTestCase {
@Test
public void testReceivingAPage() {
addPageRequest("http://test.com", "Test Page");
Resource page = agent().get("http://test.com");
assertEquals("Test Page", page.asString());
}
@Test(expected=MechanizeException.class)
public void testExpectPostButReceiveGetRequestFails() throws Exception {
addPageRequest("POST", "http://test.com/form", newHtml("OK", ""));
disableAfterTest();
Resource result = agent().get("http://test.com/form");
assertEquals("OK", result.getTitle());
}
@Test
public void testRequestParametersExtractedFromUri() {
Parameters parameters = agent().doRequest("http://www.test.com/index.html?query=ab+cd&page=1").parameters();
assertEquals("ab cd", parameters.get("query")[0]);
assertEquals("1", parameters.get("page")[0]);
}
@Test
public void testDoRequestGet() {
addPageRequest("GET", "http://test.com/index.html?query=ab+cd&page=1", "Test Page");
Resource page = agent().doRequest("http://test.com/index.html").add("query", "ab cd").add("page", "1").get();
assertEquals("Test Page", page.asString());
}
@Test
public void testDoRequestGetWithExistingQueryParameters() {
addPageRequest("GET", "http://test.com/index.html?query=ab+cd&page=2", "Test Page");
Resource page = agent().doRequest("http://test.com/index.html?query=ab+cd&page=1").set("page", "2").get();
assertEquals("Test Page", page.asString());
}
@Test
public void testDoRequestPostWithExistingQueryParameters() {
Parameters expectedParameters = new Parameters().add("query","ab cd").add("page", "2");
addPageRequest("Post", "http://test.com/index.html", "Test Page").setParameters(expectedParameters);
Resource page = agent().doRequest("http://test.com/index.html?query=ab+cd&page=1").set("page", "2").post();
assertEquals("Test Page", page.asString());
}
@Test
public void testDoRequestWithSetHeader() {
addPageRequest("GET", "http://test.com/index.html?query=ab+cd&page=1", "Test Page").addHeader("foo", "bar");
Resource page = agent().doRequest("http://test.com/index.html").add("query", "ab cd").add("page", "1").setHeader("foo", "x").setHeader("foo", "bar").get();
assertEquals("Test Page", page.asString());
}
@Test
public void testDoRequestWithAddHeaders() {
addPageRequest("GET", "http://test.com/index.html?query=ab+cd&page=1", "Test Page").addHeader("foo", "bar", "baz");
Resource page = agent().doRequest("http://test.com/index.html").add("query", "ab cd").add("page", "1").addHeader("foo", "bar", "baz").get();
assertEquals("Test Page", page.asString());
}
@Test
public void testDoRequestWithAccept() {
addPageRequest("GET", "http://test.com/index.html?query=ab+cd&page=1", "Test Page").addHeader("Accept", "application/json");
Resource page = agent().doRequest("http://test.com/index.html").add("query", "ab cd").add("page", "1").accept("application/json").get();
assertEquals("Test Page", page.asString());
}
}