package net.hamnaberg.json;
import org.junit.Test;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.*;
public class URITargetTest {
@Test
public void expandShouldKeepEncodingFromBaseURI() {
URI href = URI.create("https://api.test.com/myapi/customer;issue_id=1337;location=LUND%2FB;enterprise=false");
URITarget target = new URITarget(href);
URI expanded = target.expand(new ArrayList<Property>());
assertEquals("https://api.test.com/myapi/customer;issue_id=1337;location=LUND%2FB;enterprise=false", expanded.toString());
}
@Test
public void expandShouldNotDoubleEncodeProperties() {
URI href = URI.create("https://api.test.com/myapi");
URITarget target = new URITarget(href);
List<Property> properties = Arrays.asList(
Property.value("first_name", Value.of("Humle/Dumle"))
);
URI expanded = target.expand(properties);
assertEquals("https://api.test.com/myapi?first_name=Humle%2FDumle", expanded.toString());
}
@Test
public void construction() {
URITarget target = new URITarget(URI.create("http://example.com/foo?per=loser&paal=loser&espen=winner"));
String expected = "per=loser&paal=loser&espen=winner";
assertEquals("Incorrect Query", expected, target.toURI().getQuery());
}
@Test
public void expandIsCorrect() {
URITarget target = new URITarget(URI.create("http://example.com/foo"));
String expected = "per=loser&paal=loser&espen=winner";
List<Property> properties = Arrays.asList(
Property.value("per", Value.of("loser")),
Property.value("paal", Value.of("loser")),
Property.value("espen", Value.of("winner"))
);
URI expanded = target.expand(properties);
assertEquals("Incorrect Query", expected, expanded.getQuery());
assertEquals(URI.create("http://example.com/foo?" + expected), expanded);
}
@Test
public void expandIsCorrectWithExistingUntouchedQuery() {
URITarget target = new URITarget(URI.create("http://example.com/foo?baa=foo"));
String expected = "baa=foo&per=loser&paal=loser&espen=winner";
List<Property> properties = Arrays.asList(
Property.value("per", Value.of("loser")),
Property.value("paal", Value.of("loser")),
Property.value("espen", Value.of("winner"))
);
URI expanded = target.expand(properties);
assertEquals("Incorrect Query", expected, expanded.getQuery());
assertEquals(URI.create("http://example.com/foo?" + expected), expanded);
}
@Test
public void expandIsCorrectWithArrays() {
URITarget target = new URITarget(URI.create("http://example.com/foo"));
String expected = "per=loser&per=big+brother&paal=loser&paal=second+big+brother&espen=winner";
List<Property> properties = Arrays.asList(
Property.array("per", Arrays.asList(Value.of("loser"), Value.of("big brother"))),
Property.array("paal", Arrays.asList(Value.of("loser"), Value.of("second big brother"))),
Property.value("espen", Value.of("winner"))
);
URI expanded = target.expand(properties);
assertEquals("Incorrect Query", expected, expanded.getQuery());
assertEquals(URI.create("http://example.com/foo?" + expected), expanded);
}
}