package test.com.xceptance.xlt.common.util.action.data;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import com.gargoylesoftware.htmlunit.util.NameValuePair;
import com.xceptance.xlt.api.data.GeneralDataProvider;
import com.xceptance.xlt.api.util.XltProperties;
import com.xceptance.xlt.common.util.action.data.URLActionData;
import com.xceptance.xlt.common.util.action.data.URLActionDataBuilder;
import com.xceptance.xlt.common.util.action.data.URLActionDataStore;
import com.xceptance.xlt.common.util.action.data.URLActionDataValidation;
import com.xceptance.xlt.common.util.bsh.ParameterInterpreter;
public class URLActionDataBuilderTest
{
private static ParameterInterpreter interpreter;
private static XltProperties properties;
private static GeneralDataProvider dataProvider;
private static String name;
private static String type;
private static String url;
private static String method;
private static String encodeParameters;
private static String encodeBody;
private static String httpResponceCode;
private static String body;
private static List<URLActionDataValidation> validations = new ArrayList<URLActionDataValidation>();
private static URLActionDataValidation validation;
private static List<URLActionDataStore> store = Collections.emptyList();
private static URLActionDataStore storeItem;
private static List<NameValuePair> parameters = Collections.emptyList();
private static List<NameValuePair> cookies = Collections.emptyList();
private static List<NameValuePair> headers = Collections.emptyList();
private static String d_name;
private static String d_type;
private static String d_url;
private static String d_method;
private static String d_encode_parameters;
private static String d_encode_body;
private static String d_httpResponceCode;
private static String d_body;
private static List<URLActionDataValidation> d_validations = Collections.emptyList();
private static List<URLActionDataStore> d_store = Collections.emptyList();
private static List<NameValuePair> d_parameters = Collections.emptyList();
private static List<NameValuePair> d_cookies = Collections.emptyList();
private static List<NameValuePair> d_headers = Collections.emptyList();
@BeforeClass
public static void setup()
{
properties = XltProperties.getInstance();
dataProvider = GeneralDataProvider.getInstance();
interpreter = new ParameterInterpreter(properties, dataProvider);
validation = new URLActionDataValidation("validation", URLActionDataValidation.XPATH, "xpath", URLActionDataValidation.MATCHES,
"matcher", interpreter);
storeItem = new URLActionDataStore("store", URLActionDataStore.XPATH, "some xpath", interpreter);
name = "name";
type = URLActionData.TYPE_ACTION;
url = "http://www.xceptance.com";
method = URLActionData.METHOD_GET;
encodeParameters = "true";
encodeBody = "true";
httpResponceCode = "400";
body = "body";
validations = new ArrayList<URLActionDataValidation>();
validations.add(validation);
store = new ArrayList<URLActionDataStore>();
store.add(storeItem);
parameters = new ArrayList<NameValuePair>();
parameters.add(new NameValuePair("parameter_1", "parameter_value_1"));
cookies = new ArrayList<NameValuePair>();
cookies.add(new NameValuePair("cookie_1", "cookie_value_1"));
headers = new ArrayList<NameValuePair>();
headers.add(new NameValuePair("header_1", "header_value_1"));
d_name = "d_name";
d_type = URLActionData.TYPE_STATIC;
d_url = "http://www.blog.xceptance.com";
d_method = URLActionData.METHOD_POST;
d_encode_parameters = "false";
d_encode_body = "false";
d_httpResponceCode = "500";
d_body = "d_body";
d_validations = new ArrayList<URLActionDataValidation>();
d_store = new ArrayList<URLActionDataStore>();
d_parameters = new ArrayList<NameValuePair>();
d_cookies = new ArrayList<NameValuePair>();
d_headers = new ArrayList<NameValuePair>();
}
@Test
public void testCorrectActionBuild() throws MalformedURLException
{
final URLActionDataBuilder builder = new URLActionDataBuilder();
builder.setBody(body);
builder.setCookies(cookies);
builder.setEncodeParameters(encodeParameters);
builder.setEncodeBody(encodeBody);
builder.setHeaders(headers);
builder.setHttpResponceCode(httpResponceCode);
builder.setValidations(validations);
builder.setUrl(url);
builder.setType(type);
builder.setStore(store);
builder.setParameters(parameters);
builder.setName(name);
builder.setMethod(method);
builder.setInterpreter(interpreter);
builder.setDefaultBody(d_body);
builder.setDefaultCookies(d_cookies);
builder.setDefaultEncodeParameters(d_encode_parameters);
builder.setDefaultEncodeBody(d_encode_body);
builder.setDefaultHeaders(d_headers);
builder.setDefaultHttpResponceCode(d_httpResponceCode);
builder.setDefaultValidations(d_validations);
builder.setDefaultUrl(d_url);
builder.setDefaultType(d_type);
builder.setDefaultStore(d_store);
builder.setDefaultParameters(d_parameters);
builder.setDefaultName(d_name);
builder.setDefaultMethod(d_method);
builder.setInterpreter(interpreter);
URLActionData action = builder.build();
Assert.assertEquals(action.getName(), name);
Assert.assertEquals(action.getBody(), body);
Assert.assertEquals(action.getType(), type);
Assert.assertEquals(action.getMethod().toString(), method);
Assert.assertEquals(action.getUrlString(), url);
Assert.assertFalse(action.getValidations().isEmpty());
Assert.assertFalse(action.getStore().isEmpty());
Assert.assertFalse(action.getHeaders().isEmpty());
Assert.assertFalse(action.getParameters().isEmpty());
Assert.assertFalse(action.getCookies().isEmpty());
Assert.assertEquals(action.encodeBody().toString(), encodeBody);
Assert.assertEquals(action.encodeParameters().toString(), encodeParameters);
builder.setBody(null);
builder.setCookies(Collections.<NameValuePair>emptyList());
builder.setEncodeParameters(null);
builder.setEncodeBody(null);
builder.setHeaders(Collections.<NameValuePair>emptyList());
builder.setHttpResponceCode(null);
builder.setValidations(Collections.<URLActionDataValidation>emptyList());
builder.setUrl(null);
builder.setType(null);
builder.setStore(Collections.<URLActionDataStore>emptyList());
builder.setParameters(Collections.<NameValuePair>emptyList());
builder.setName(null);
builder.setMethod(null);
builder.setInterpreter(interpreter);
action = builder.build();
Assert.assertEquals(action.getName(), d_name);
Assert.assertEquals(action.getBody(), d_body);
Assert.assertEquals(action.getType(), d_type);
Assert.assertEquals(action.getMethod().toString(), d_method);
Assert.assertEquals(action.getUrlString(), d_url);
Assert.assertTrue(action.getValidations().isEmpty());
Assert.assertTrue(action.getStore().isEmpty());
Assert.assertTrue(action.getHeaders().isEmpty());
Assert.assertTrue(action.getParameters().isEmpty());
Assert.assertTrue(action.getCookies().isEmpty());
Assert.assertEquals(action.encodeBody().toString(), d_encode_body);
Assert.assertEquals(action.encodeParameters().toString(), d_encode_parameters);
}
@Test
public void constructActionFromDefaults()
{
final URLActionDataBuilder builder = new URLActionDataBuilder();
builder.setDefaultBody(body);
builder.setDefaultCookies(cookies);
builder.setDefaultEncodeParameters(encodeParameters);
builder.setDefaultHeaders(headers);
builder.setDefaultHttpResponceCode(httpResponceCode);
builder.setDefaultValidations(validations);
builder.setDefaultUrl(url);
builder.setDefaultType(type);
builder.setDefaultStore(store);
builder.setDefaultParameters(parameters);
builder.setDefaultName(name);
builder.setDefaultMethod(method);
builder.setInterpreter(interpreter);
final URLActionData action = builder.build();
Assert.assertEquals(action.getName(), name);
Assert.assertEquals(action.getBody(), body);
Assert.assertEquals(action.getType(), type);
Assert.assertEquals(action.getMethod().toString(), method);
Assert.assertEquals(action.getUrlString(), url);
Assert.assertEquals(action.getValidations(), validations);
Assert.assertEquals(action.getStore(), store);
Assert.assertEquals(action.getHeaders(), headers);
Assert.assertEquals(action.getParameters(), parameters);
Assert.assertEquals(action.getCookies(), cookies);
Assert.assertEquals(action.encodeBody().toString(), encodeBody);
Assert.assertEquals(action.encodeParameters().toString(), encodeParameters);
}
@Test(expected = IllegalArgumentException.class)
public void missingName()
{
final URLActionDataBuilder builder = new URLActionDataBuilder();
builder.setUrl(url);
builder.setInterpreter(interpreter);
@SuppressWarnings("unused")
final URLActionData action = builder.build();
}
@Test(expected = IllegalArgumentException.class)
public void missingUrl()
{
final URLActionDataBuilder builder = new URLActionDataBuilder();
builder.setName(name);
builder.setInterpreter(interpreter);
@SuppressWarnings("unused")
final URLActionData action = builder.build();
}
@Test(expected = IllegalArgumentException.class)
public void missingInterpreter()
{
final URLActionDataBuilder builder = new URLActionDataBuilder();
builder.setUrl(url);
builder.setName(name);
@SuppressWarnings("unused")
final URLActionData action = builder.build();
}
}