/* MonkeyTalk - a cross-platform functional testing tool Copyright (C) 2012 Gorilla Logic, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.gorillalogic.monkeytalk.sender.tests; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; import static org.junit.matchers.JUnitMatchers.containsString; import org.junit.Test; import com.gorillalogic.monkeytalk.sender.Response; import com.gorillalogic.monkeytalk.sender.Response.ResponseStatus; public class ResponseTest { @Test public void testDefaultConstructor() { Response r = new Response(); assertThat(r, notNullValue()); assertThat(r.getCode(), is(200)); assertThat(r.getBody(), nullValue()); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), nullValue()); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructor() { Response r = new Response(200, "{result:\"OK\",message:\"some msg\"}"); assertThat(r, notNullValue()); assertThat(r.getCode(), is(200)); assertThat(r.getBody(), is("{result:\"OK\",message:\"some msg\"}")); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); assertThat(r.toString(), containsString("OK")); assertThat(r.toString(), containsString("some msg")); } @Test public void testConstructorWithNullBody() { Response r = new Response(200, null); assertThat(r.getCode(), is(200)); assertThat(r.getBody(), nullValue()); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), nullValue()); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWithOnlyResult() { Response r = new Response(200, "{result:\"OK\"}"); assertThat(r.getCode(), is(200)); assertThat(r.getBody(), is("{result:\"OK\"}")); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), nullValue()); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWithEmptyMessage() { Response r = new Response(200, "{result:\"OK\",message:\"\"}"); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), is("")); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWithNullMessage() { Response r = new Response(200, "{result:\"OK\",message:null}"); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), is("null")); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWithNon200Code() { Response r = new Response(0, "{result:\"OK\",message:\"some msg\"}"); assertThat(r.getStatus(), is(ResponseStatus.ERROR)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWithNon200CodeNonJsonMessage() { Response r = new Response(0, "non-json msg"); assertThat(r.getStatus(), is(ResponseStatus.ERROR)); assertThat(r.getMessage(), is("non-json msg")); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWith200CodeNonJsonMessage() { Response r = new Response(200, "non-json msg"); assertThat(r.getStatus(), is(ResponseStatus.ERROR)); assertThat(r.getMessage(), is("non-json msg")); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWithFailure() { Response r = new Response(200, "{result:\"FAILURE\",message:\"some msg\"}"); assertThat(r.getStatus(), is(ResponseStatus.FAILURE)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWithError() { Response r = new Response(200, "{result:\"ERROR\",message:\"some msg\"}"); assertThat(r.getStatus(), is(ResponseStatus.ERROR)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWithFailureCaseInsensitive() { Response r = new Response(200, "{result:\"failURE\",message:\"some msg\"}"); assertThat(r.getStatus(), is(ResponseStatus.FAILURE)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWithWarning() { Response r = new Response(200, "{result:\"OK\",message:{warning:\"some warn\"}}"); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), nullValue()); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), nullValue()); } @Test public void testConstructorWithImage() { Response r = new Response(200, "{result:\"OK\",message:{image:\"some img\"}}"); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), nullValue()); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), is("some img")); } @Test public void testConstructorWithMessageAndWarningAndImage() { Response r = new Response(200, "{result:\"OK\",message:{message:\"some msg\",warning:\"some warn\",image:\"some img\"}}"); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), is("some img")); } @Test public void testConstructorWithMessageAndWarningAndScreenshot() { Response r = new Response(200, "{result:\"OK\",message:{message:\"some msg\",warning:\"some warn\",screenshot:\"some scrn\"}}"); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), is("some scrn")); } @Test public void testConstructorWithFailureAndMessageAndWarningAndImage() { Response r = new Response(200, "{result:\"failure\",message:{message:\"some msg\",warning:\"some warn\",image:\"some img\"}}"); assertThat(r.getStatus(), is(ResponseStatus.FAILURE)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), is("some img")); } @Test public void testConstructorWithFailureAndMessageAndWarningAndScreenshot() { Response r = new Response( 200, "{result:\"failure\",message:{message:\"some msg\",warning:\"some warn\",screenshot:\"some scrn\"}}"); assertThat(r.getStatus(), is(ResponseStatus.FAILURE)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), is("some scrn")); } @Test public void testConstructorWithNon200CodeAndMessageAndWarningAndImage() { Response r = new Response(0, "{result:\"ok\",message:{message:\"some msg\",warning:\"some warn\",image:\"some img\"}}"); assertThat(r.getStatus(), is(ResponseStatus.ERROR)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), is("some img")); } @Test public void testConstructorWithMessageAndWarningAndImageWithoutResult() { Response r = new Response(200, "{message:{message:\"some msg\",warning:\"some warn\",image:\"some img\"}}"); assertThat(r.getStatus(), is(ResponseStatus.ERROR)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), is("some img")); } @Test public void testConstructorWithAlternateFormat() { Response r = new Response(200, "{result:\"ok\",message:\"some msg\",warning:\"some warn\",screenshot:\"some scrn\"}"); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), is("some scrn")); } @Test public void testConstructorWithAlternateFormatWithImage() { Response r = new Response(200, "{result:\"unknown\",message:\"some msg\",warning:\"some warn\",image:\"some scrn\"}"); assertThat(r.getStatus(), is(ResponseStatus.ERROR)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), is("some scrn")); } @Test public void testBuilder() { Response r = new Response.Builder().build(); assertThat(r.getCode(), is(200)); assertThat(r.getBody(), is("{\"result\":\"OK\"}")); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), nullValue()); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testBuilderWithMessage() { Response r = new Response.Builder("some message").build(); assertThat(r.getCode(), is(200)); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), is("some message")); assertThat(r.getWarning(), nullValue()); assertThat(r.getImage(), nullValue()); } @Test public void testBuilderWithOkAndMessageAndWarningAndImage() { Response r = new Response.Builder("some msg").warning("some warn").image("some img") .build(); assertThat(r.getCode(), is(200)); assertThat(r.getStatus(), is(ResponseStatus.OK)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), is("some img")); } @Test public void testBuilderWithErrorAndMessageAndWarningAndImage() { Response r = new Response.Builder("some msg").error().warning("some warn") .image("some img").build(); assertThat(r.getCode(), is(200)); assertThat(r.getStatus(), is(ResponseStatus.ERROR)); assertThat(r.getMessage(), is("some msg")); assertThat(r.getWarning(), is("some warn")); assertThat(r.getImage(), is("some img")); } }