blob: e381edc4c18baf0c68f349b0aaa2ace1589bb097 [file] [log] [blame]
/*
* Copyright 2007 Google Inc.
*
* 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 test;
import com.google.gwt.core.client.GWT;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.rpc.TestSetValidator;
/**
* TODO: document me.
*/
public class ServletMappingTest extends GWTTestCase {
private static final int RPC_WAIT = 5000;
@Override
public String getModuleName() {
return "test.ServletMappingTest";
}
/**
* Should call the implementation that returns 1.
*/
public void testServletMapping1() {
makeAsyncCall(GWT.getModuleBaseURL() + "test", new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
TestSetValidator.rethrowException(caught);
}
@Override
public void onSuccess(Object result) {
finishTest();
assertEquals(new Integer(1), result);
}
});
}
/**
* Should call the implementation that returns 2.
*/
public void testServletMapping2() {
makeAsyncCall(GWT.getModuleBaseURL() + "test/longer", new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
TestSetValidator.rethrowException(caught);
}
@Override
public void onSuccess(Object result) {
finishTest();
assertEquals(new Integer(2), result);
}
});
}
/**
* Should call the implementation that returns 3.
*/
public void testServletMapping3() {
makeAsyncCall(GWT.getModuleBaseURL() + "test/long", new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
TestSetValidator.rethrowException(caught);
}
@Override
public void onSuccess(Object result) {
finishTest();
assertEquals(new Integer(3), result);
}
});
}
/**
* Should fail to find an entry point.
*/
public void testBadRequestWithExtraPath() {
makeAsyncCall(GWT.getModuleBaseURL() + "test/bogus/extra/path",
new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
finishTest();
}
@Override
public void onSuccess(Object result) {
finishTest();
assertEquals(new Integer(1), result);
}
});
}
/**
* Should fail to find an entry point.
*/
public void testBadRequestWithQueryString() {
makeAsyncCall(GWT.getModuleBaseURL() + "test/bogus?a=b&c=d",
new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
finishTest();
}
@Override
public void onSuccess(Object result) {
finishTest();
assertEquals(new Integer(1), result);
}
});
}
/**
* Should call the implementation that returns 3 with a query string.
*/
public void testServletMapping3WithQueryString() {
makeAsyncCall(GWT.getModuleBaseURL() + "test/long?a=b&c=d",
new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
TestSetValidator.rethrowException(caught);
}
@Override
public void onSuccess(Object result) {
finishTest();
assertEquals(new Integer(3), result);
}
});
}
/**
* Should call the implementation that returns 3 with a query string.
*/
public void testTotallyDifferentServletMapping3() {
makeAsyncCall(GWT.getModuleBaseURL()
+ "totally/different/but/valid?a=b&c=d", new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
TestSetValidator.rethrowException(caught);
}
@Override
public void onSuccess(Object result) {
finishTest();
assertEquals(new Integer(3), result);
}
});
}
private void makeAsyncCall(String url, AsyncCallback callback) {
ServletMappingTestServiceAsync async = (ServletMappingTestServiceAsync) GWT.create(ServletMappingTestService.class);
ServiceDefTarget target = (ServiceDefTarget) async;
target.setServiceEntryPoint(url);
delayTestFinish(RPC_WAIT);
async.which(callback);
}
}