/*
* SoapUI, Copyright (C) 2004-2016 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/
package com.eviware.soapui.impl.rest.panels.request;
import org.junit.Test;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
/**
* Unit tests for the ParameterFinder class
*/
public class ParameterFinderTest {
@Test
public void findsSingleQueryParameter() throws Exception {
ParameterFinder finder = new ParameterFinder("?name=Johan");
assertThat(finder.findParameterAt(2), is("name"));
}
@Test
public void locatesSecondQueryParameter() throws Exception {
ParameterFinder finder = new ParameterFinder("?name=Johan&reallyLongOne=value");
assertThat(finder.findParameterAt(15), is("reallyLongOne"));
}
@Test
public void findsSingleMatrixParameter() throws Exception {
ParameterFinder finder = new ParameterFinder(";name=Johan?query1=value1");
assertThat(finder.findParameterAt(2), is("name"));
}
@Test
public void locatesSecondMatrixParameter() throws Exception {
ParameterFinder finder = new ParameterFinder(";name=Johan;reallyLongOne=value?query1=value1");
assertThat(finder.findParameterAt(15), is("reallyLongOne"));
}
@Test
public void findsParameterWhenEqualsSignClicked() throws Exception {
String parametersString = "?name=Johan&reallyLongOne=value";
ParameterFinder finder = new ParameterFinder(parametersString);
assertThat(finder.findParameterAt(parametersString.lastIndexOf('=')), is("reallyLongOne"));
}
@Test
public void findsNextParameterWhenAmpersandClicked() throws Exception {
String parametersString = "?name=Johan&reallyLongOne=value";
ParameterFinder finder = new ParameterFinder(parametersString);
assertThat(finder.findParameterAt(parametersString.indexOf('&')), is("reallyLongOne"));
}
@Test
public void findsNextParameterWhenSemicolonClicked() throws Exception {
String parametersString = ";name=Johan;reallyLongOne=value?query1=value1";
ParameterFinder finder = new ParameterFinder(parametersString);
assertThat(finder.findParameterAt(parametersString.indexOf(";really")), is("reallyLongOne"));
}
@Test
public void findsParameterWhenValueClicked() throws Exception {
String parametersString = "?name=Johan&reallyLongOne=value";
ParameterFinder finder = new ParameterFinder(parametersString);
assertThat(finder.findParameterAt(parametersString.indexOf("Johan")), is("name"));
}
@Test
public void handlesClickOnTrailingAmpersand() throws Exception {
String parametersString = "?name=Johan&reallyLongOne=value&";
ParameterFinder finder = new ParameterFinder(parametersString);
assertThat(finder.findParameterAt(parametersString.lastIndexOf("&")), is(""));
}
@Test
public void handlesClickAtVeryEnd() throws Exception {
String parametersString = ";new=${#Project#site};jsessionid=abc?item=http://www.svd.se/?service=mobile&articleId=8492260&new=true&rssId=123&cid=25968641";
ParameterFinder finder = new ParameterFinder(parametersString);
assertThat(finder.findParameterAt(parametersString.length()), is("cid"));
}
@Test
public void returnsFirstParameterWhenLeadingCharIsClicked() throws Exception {
String parametersString = "?name=Johan&reallyLongOne=value&";
ParameterFinder finder = new ParameterFinder(parametersString);
assertThat(finder.findParameterAt(0), is("name"));
}
@Test
public void handlesClickOnLeadingEqualsSign() throws Exception {
String parametersString = "?=name=Johan&reallyLongOne=value&";
ParameterFinder finder = new ParameterFinder(parametersString);
assertThat(finder.findParameterAt(parametersString.indexOf("=")), is(""));
}
}