| /* | |
| * 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); | |
| } | |
| } |