blob: ea377517f7aee03591521e4626f5bb61b244aa6f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 BSI Business Systems Integration AG.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* BSI Business Systems Integration AG - initial API and implementation
******************************************************************************/
package org.eclipse.scout.commons;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.net.URI;
import org.junit.Test;
/**
* JUnit test for {@link UriBuilder}
*
* @since 3.8.1
*/
public class UriBuilderTest {
static final String SCHEME = "scheme";
static final String HOST = "host";
static final String PATH_TO_SCHEME = "/path/to";
static final String ANCHOR = "anchor";
@Test
public void testScheme() throws Exception {
UriBuilder builder = new UriBuilder();
assertNull(builder.getScheme());
//
assertSame(builder, builder.scheme(null));
//
builder.scheme("ftp");
assertEquals("ftp", builder.getScheme());
//
builder = new UriBuilder("http://acme.com:1234/scout");
assertEquals("http", builder.getScheme());
}
@Test
public void testHost() throws Exception {
UriBuilder builder = new UriBuilder();
assertNull(builder.getHost());
//
assertSame(builder, builder.host(null));
//
String host = "www.eclipse.org";
builder.host(host);
assertEquals(host, builder.getHost());
//
builder = new UriBuilder("http://acme.com:1234/scout");
assertEquals("acme.com", builder.getHost());
}
@Test
public void testPort() throws Exception {
UriBuilder builder = new UriBuilder();
assertEquals(-1, builder.getPort());
//
assertSame(builder, builder.port(-1));
//
builder.port(433);
assertEquals(433, builder.getPort());
//
builder.port(1);
assertEquals(1, builder.getPort());
//
builder.port(0);
assertEquals(-1, builder.getPort());
//
builder.port(-15);
assertEquals(-1, builder.getPort());
//
builder = new UriBuilder("http://www.ecipse.org:1234/scout");
assertEquals(1234, builder.getPort());
//
builder.port(42);
assertEquals(42, builder.getPort());
}
@Test
public void testPath() throws Exception {
UriBuilder builder = new UriBuilder();
assertNull(builder.getPath());
//
assertSame(builder, builder.path(null));
//
String path = "scout/foo";
builder.path(path);
assertEquals(path, builder.getPath());
//
builder = new UriBuilder("http://acme.com:1234/scout/test/3");
assertEquals("/scout/test/3", builder.getPath());
}
@Test
public void testAddPath() throws Exception {
UriBuilder builder = new UriBuilder();
assertNull(builder.getPath());
//
builder.addPath(null);
assertNull(builder.getPath());
//
assertSame(builder, builder.addPath(null));
//
String path = "scout/foo";
builder.addPath(path);
assertEquals(path, builder.getPath());
//
builder = new UriBuilder("http://acme.com:1234/scout/test/3");
builder.addPath("test");
assertEquals("/scout/test/3/test", builder.getPath());
//
builder = new UriBuilder("http://acme.com:1234");
builder.addPath("test");
assertEquals("test", builder.getPath());
}
@Test
public void testFragment() throws Exception {
UriBuilder builder = new UriBuilder();
assertNull(builder.getFragment());
//
assertSame(builder, builder.fragment(null));
//
String fragment = ANCHOR;
builder.fragment(fragment);
assertEquals(fragment, builder.getFragment());
//
builder = new UriBuilder("http://acme.com:1234/scout/test/3#bottomPart");
assertEquals("bottomPart", builder.getFragment());
}
static final String NAME1 = "name1";
static final String NAME2 = "name2";
static final String VALUE1 = "value1";
static final String VALUE2 = "value2";
@Test
public void testParamenter() throws Exception {
UriBuilder builder = new UriBuilder();
assertNotNull(builder.getParameters());
assertTrue(builder.getParameters().isEmpty());
//
builder.parameter(null, null);
builder.parameter(NAME1, null);
builder.parameter(null, VALUE1);
builder.parameter(NAME2, VALUE2);
assertEquals(1, builder.getParameters().size());
assertEquals(VALUE2, builder.getParameters().get(NAME2));
builder.parameter(NAME2, null);
assertTrue(builder.getParameters().isEmpty());
//
assertSame(builder, builder.parameter(null, null));
//
builder = new UriBuilder("http://acme.com:1234/scout?name1=value1&name2=value2");
assertEquals(2, builder.getParameters().size());
assertEquals(VALUE1, builder.getParameters().get(NAME1));
assertEquals(VALUE2, builder.getParameters().get(NAME2));
}
@Test
public void testCreateUri() throws Exception {
UriBuilder builder = new UriBuilder();
assertEquals(URI.create(""), builder.createURI());
//
builder = new UriBuilder();
builder.scheme(SCHEME).host(HOST);
assertEquals(URI.create("scheme://host"), builder.createURI());
//
builder = new UriBuilder();
builder.scheme(SCHEME).path(PATH_TO_SCHEME);
assertEquals(URI.create("scheme:/path/to"), builder.createURI());
//
builder = new UriBuilder();
builder.scheme(SCHEME).host(HOST).path(PATH_TO_SCHEME);
assertEquals(URI.create("scheme://host/path/to"), builder.createURI());
//
builder = new UriBuilder();
builder.scheme(SCHEME).host(HOST).path(PATH_TO_SCHEME).fragment(ANCHOR);
assertEquals(URI.create("scheme://host/path/to#anchor"), builder.createURI());
//
builder = new UriBuilder();
builder.scheme(SCHEME).host(HOST).path(PATH_TO_SCHEME).fragment(ANCHOR).parameter("key", "value");
assertEquals(URI.create("scheme://host/path/to?key=value#anchor"), builder.createURI());
//
builder = new UriBuilder();
builder.scheme(SCHEME).host(HOST).path(PATH_TO_SCHEME).fragment(ANCHOR).parameter("key", "äöü");
assertEquals("scheme://host/path/to?key=%25E4%25F6%25FC#anchor", builder.createURI().toASCIIString());
//
builder = new UriBuilder();
builder.scheme(SCHEME).host(HOST).path(PATH_TO_SCHEME).fragment(ANCHOR).parameter("key", "äöü");
assertEquals("scheme://host/path/to?key=%25C3%25A4%25C3%25B6%25C3%25BC#anchor", builder.createURI("UTF-8").toASCIIString());
//
URI baseUri = new URI("http://www.eclipse.org/scout");
builder = new UriBuilder(baseUri);
assertEquals(baseUri, builder.createURI());
}
}