package com.github.scribejava.core.model;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertNotSame;
public class ParameterListTest {
private ParameterList params;
@Before
public void setUp() {
this.params = new ParameterList();
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowExceptionWhenAppendingNullMapToQuerystring() {
params.appendTo(null);
}
@Test
public void shouldAppendNothingToQuerystringIfGivenEmptyMap() {
final String url = "http://www.example.com";
Assert.assertEquals(url, params.appendTo(url));
}
@Test
public void shouldAppendParametersToSimpleUrl() {
String url = "http://www.example.com";
final String expectedUrl = "http://www.example.com?param1=value1¶m2=value%20with%20spaces";
params.add("param1", "value1");
params.add("param2", "value with spaces");
url = params.appendTo(url);
Assert.assertEquals(expectedUrl, url);
}
@Test
public void shouldAppendParametersToUrlWithQuerystring() {
String url = "http://www.example.com?already=present";
final String expectedUrl = "http://www.example.com?already=present¶m1=value1¶m2=value%20with%20spaces";
params.add("param1", "value1");
params.add("param2", "value with spaces");
url = params.appendTo(url);
Assert.assertEquals(expectedUrl, url);
}
@Test
public void shouldProperlySortParameters() {
params.add("param1", "v1");
params.add("param6", "v2");
params.add("a_param", "v3");
params.add("param2", "v4");
Assert.assertEquals("a_param=v3¶m1=v1¶m2=v4¶m6=v2", params.sort().asFormUrlEncodedString());
}
@Test
public void shouldProperlySortParametersWithTheSameName() {
params.add("param1", "v1");
params.add("param6", "v2");
params.add("a_param", "v3");
params.add("param1", "v4");
Assert.assertEquals("a_param=v3¶m1=v1¶m1=v4¶m6=v2", params.sort().asFormUrlEncodedString());
}
@Test
public void shouldNotModifyTheOriginalParameterList() {
params.add("param1", "v1");
params.add("param6", "v2");
assertNotSame(params, params.sort());
}
}