/**
* Copyright (C) 2009-2012 the original author or authors.
* See the notice.md file distributed with this work for additional
* information regarding copyright ownership.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.fusesource.restygwt.client.basic;
import java.util.HashMap;
import java.util.Map;
import org.fusesource.restygwt.client.Method;
import org.fusesource.restygwt.client.Resource;
import com.google.gwt.junit.client.GWTTestCase;
/**
* Tests the construction of {@link Resource} as well as the expected behavior
* of their functions
*
* @author <a href="mailto:maerzbow@gmail.com">Markus Merzinger</<a>
*/
public class ResourceTestGwt extends GWTTestCase {
// Base Uri
private static final String BU = "http://localhost:8080/service";
// Expected Query
private static final String EQ = "a=1&b=2";
@Override
public String getModuleName() {
return "org.fusesource.restygwt.BasicTestGwt";
}
// Simple Uri
public void testUri() {
Resource r1 = new Resource(BU);
assertEquals(BU, r1.getPath());
assertEquals(null, r1.getQuery());
assertEquals(BU, r1.getUri());
Resource r2 = r1.addQueryParam("a", "1").addQueryParam("b", "2");
assertEquals(BU, r2.getPath());
assertEquals(EQ, r2.getQuery());
assertEquals(BU + "?" + EQ, r2.getUri());
assertNull(r2.getHeaders());
}
public void testUri_Headers() {
Map<String, String> headersMap = new HashMap<String, String>();
headersMap.put("Authentication", "Basic 4711");
headersMap.put("Accept", "application/json");
Resource r1 = new Resource(BU, headersMap);
assertEquals(BU, r1.getPath());
assertEquals(null, r1.getQuery());
assertEquals(BU, r1.getUri());
Resource r2 = r1.addQueryParam("a", "1").addQueryParam("b", "2");
assertEquals(BU, r2.getPath());
assertEquals(EQ, r2.getQuery());
assertEquals(BU + "?" + EQ, r2.getUri());
assertEquals(2, r2.getHeaders().size());
}
public void testUri_Query() {
Resource r1 = new Resource(BU, "x=y");
assertEquals(BU, r1.getPath());
assertEquals("x=y", r1.getQuery());
assertEquals(BU + "?" + "x=y", r1.getUri());
Resource r2 = r1.addQueryParam("a", "1").addQueryParam("b", "2");
assertEquals(BU, r2.getPath());
assertEquals("x=y" + "&" + EQ, r2.getQuery());
assertEquals(BU + "?" + "x=y" + "&" + EQ, r2.getUri());
assertNull(r2.getHeaders());
}
public void testUri_Query_Headers() {
Map<String, String> headersMap = new HashMap<String, String>();
headersMap.put("Authentication", "Basic 4711");
headersMap.put("Accept", "application/json");
Resource r1 = new Resource(BU, "x=y", headersMap);
assertEquals(BU, r1.getPath());
assertEquals("x=y", r1.getQuery());
assertEquals(BU + "?" + "x=y", r1.getUri());
Resource r2 = r1.addQueryParam("a", "1").addQueryParam("b", "2");
assertEquals(BU, r2.getPath());
assertEquals("x=y" + "&" + EQ, r2.getQuery());
assertEquals(BU + "?" + "x=y" + "&" + EQ, r2.getUri());
assertEquals(2, r2.getHeaders().size());
}
public void testPassOnOfHeaders(){
Map<String, String> headers = new HashMap<String, String>();
headers.put("X-CustomHeader", "123456789");
Method method = new Resource("http://localhost", headers).get();
assertEquals("123456789",method.builder.getHeader("X-CustomHeader"));
}
// Uris with trailing '/'
public void testUriWithTrailingSlash() {
Resource r1 = new Resource(BU + "/");
assertEquals(BU, r1.getPath());
assertEquals(null, r1.getQuery());
assertEquals(BU, r1.getUri());
Resource r2 = r1.addQueryParam("a", "1").addQueryParam("b", "2");
assertEquals(BU, r2.getPath());
assertEquals(EQ, r2.getQuery());
assertEquals(BU + "?" + EQ, r2.getUri());
assertNull(r2.getHeaders());
}
public void testUri_HeadersWithTrailingSlash() {
Map<String, String> headersMap = new HashMap<String, String>();
headersMap.put("Authentication", "Basic 4711");
headersMap.put("Accept", "application/json");
Resource r1 = new Resource(BU + "/", headersMap);
assertEquals(BU, r1.getPath());
assertEquals(null, r1.getQuery());
assertEquals(BU, r1.getUri());
Resource r2 = r1.addQueryParam("a", "1").addQueryParam("b", "2");
assertEquals(BU, r2.getPath());
assertEquals(EQ, r2.getQuery());
assertEquals(BU + "?" + EQ, r2.getUri());
assertEquals(2, r2.getHeaders().size());
}
public void testUri_QueryWithTrailingSlash() {
Resource r1 = new Resource(BU + "/", "x=y");
assertEquals(BU, r1.getPath());
assertEquals("x=y", r1.getQuery());
assertEquals(BU + "?" + "x=y", r1.getUri());
Resource r2 = r1.addQueryParam("a", "1").addQueryParam("b", "2");
assertEquals(BU, r2.getPath());
assertEquals("x=y" + "&" + EQ, r2.getQuery());
assertEquals(BU + "?" + "x=y" + "&" + EQ, r2.getUri());
assertNull(r2.getHeaders());
}
public void testUri_Query_HeadersWithTrailingSlash() {
Map<String, String> headersMap = new HashMap<String, String>();
headersMap.put("Authentication", "Basic 4711");
headersMap.put("Accept", "application/json");
Resource r1 = new Resource(BU + "/", "x=y", headersMap);
assertEquals(BU, r1.getPath());
assertEquals("x=y", r1.getQuery());
assertEquals(BU + "?" + "x=y", r1.getUri());
Resource r2 = r1.addQueryParam("a", "1").addQueryParam("b", "2");
assertEquals(BU, r2.getPath());
assertEquals("x=y" + "&" + EQ, r2.getQuery());
assertEquals(BU + "?" + "x=y" + "&" + EQ, r2.getUri());
assertEquals(2, r2.getHeaders().size());
}
// Uri that includes Query
public void testUriIncludingQuery() {
Resource r1 = new Resource(BU + "?" + "x=y");
assertEquals(BU, r1.getPath());
assertEquals("x=y", r1.getQuery());
assertEquals(BU + "?" + "x=y", r1.getUri());
Resource r2 = r1.addQueryParam("a", "1").addQueryParam("b", "2");
assertEquals(BU, r2.getPath());
assertEquals("x=y" + "&" + EQ, r2.getQuery());
assertEquals(BU + "?" + "x=y" + "&" + EQ, r2.getUri());
assertNull(r2.getHeaders());
}
public void testUriIncludingQuery_Headers() {
Map<String, String> headersMap = new HashMap<String, String>();
headersMap.put("Authentication", "Basic 4711");
headersMap.put("Accept", "application/json");
Resource r1 = new Resource(BU + "?" + "x=y", headersMap);
assertEquals(BU, r1.getPath());
assertEquals("x=y", r1.getQuery());
assertEquals(BU + "?" + "x=y", r1.getUri());
Resource r2 = r1.addQueryParam("a", "1").addQueryParam("b", "2");
assertEquals(BU, r2.getPath());
assertEquals("x=y" + "&" + EQ, r2.getQuery());
assertEquals(BU + "?" + "x=y" + "&" + EQ, r2.getUri());
assertEquals(2, r2.getHeaders().size());
}
}