blob: b59585deb0a8520a1e1afb3dbb742b937d885a2a [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 com.google.gwt.http.client;
import com.google.gwt.core.client.GWT;
/**
*
*/
public class ResponseTest extends RequestTestBase {
private static RequestBuilder getHTTPRequestBuilder() {
return getHTTPRequestBuilder(getTestBaseURL());
}
private static RequestBuilder getHTTPRequestBuilder(String testURL) {
return new RequestBuilder(RequestBuilder.GET, testURL);
}
private static String getTestBaseURL() {
return GWT.getModuleBaseURL() + "testResponse/";
}
private static native boolean isSafari() /*-{
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('safari') != -1) {
return true;
}
return false;
}-*/;
private static void raiseUnexpectedException(Throwable exception) {
fail("Unexpected exception: " + exception.toString());
}
@Override
public String getModuleName() {
return "com.google.gwt.http.ResponseTest";
}
/**
* Test method for {@link com.google.gwt.http.client.Response#getStatusCode()}.
*/
public void testGetStatusCode() {
executeTest(new RequestCallback() {
public void onError(Request request, Throwable exception) {
fail();
}
public void onResponseReceived(Request request, Response response) {
assertEquals(200, response.getStatusCode());
finishTest();
}
});
}
/**
* Test method for {@link com.google.gwt.http.client.Response#getStatusCode()}.
* DISABLED - we use a newer version of webkit in our hosted browser than
* Safari's; we can't reliably distinguish between the two so we disabled the
* test
*/
public void disabledTestGetStatusCode_Safari() {
if (!isSafari()) {
// Only test this on Safari
return;
}
executeTest(getHTTPRequestBuilder(getTestBaseURL() + "noResponseText"),
new RequestCallback() {
public void onError(Request request, Throwable exception) {
if (exception instanceof RuntimeException) {
finishTest();
} else {
raiseUnexpectedException(exception);
}
}
public void onResponseReceived(Request request, Response response) {
try {
int statusCode = response.getStatusCode();
fail("Unexpected RuntimeException from getStatusCode()");
} catch (RuntimeException ex) {
}
finishTest();
}
});
}
/**
* Test method for {@link com.google.gwt.http.client.Response#getStatusText()}.
*/
public void testGetStatusText() {
executeTest(new RequestCallback() {
public void onError(Request request, Throwable exception) {
if (exception instanceof RuntimeException) {
} else {
raiseUnexpectedException(exception);
}
}
public void onResponseReceived(Request request, Response response) {
assertEquals("OK", response.getStatusText());
finishTest();
}
});
}
/**
* Test method for {@link com.google.gwt.http.client.Response#getStatusText()}.
*/
public void disabledTestGetStatusText_Safari() {
if (!isSafari()) {
// Only test this on Safari
return;
}
executeTest(getHTTPRequestBuilder(getTestBaseURL() + "noResponseText"),
new RequestCallback() {
public void onError(Request request, Throwable exception) {
if (exception instanceof RuntimeException) {
finishTest();
} else {
raiseUnexpectedException(exception);
}
}
public void onResponseReceived(Request request, Response response) {
try {
String statusText = response.getStatusText();
fail("Unexpected RuntimeException from getStatusText()");
} catch (RuntimeException ex) {
}
finishTest();
}
});
}
private void executeTest(RequestBuilder builder, RequestCallback callback) {
delayTestFinishForRequest();
try {
builder.sendRequest(null, callback);
} catch (RequestException e) {
fail(e.getMessage());
}
}
private void executeTest(RequestCallback callback) {
executeTest(getHTTPRequestBuilder(), callback);
}
}