/* * Copyright (C) 2014 SCVNGR, Inc. d/b/a LevelUp * * 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.scvngr.levelup.core.net; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.test.suitebuilder.annotation.SmallTest; import com.scvngr.levelup.core.test.SupportAndroidTestCase; import org.apache.http.HttpStatus; import java.io.IOException; import java.net.MalformedURLException; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Tests {@link com.scvngr.levelup.core.net.AbstractResponse}. */ public final class AbstractResponseTest extends SupportAndroidTestCase { @SmallTest public void testConstructor2() throws MalformedURLException, IOException { final Exception e = new Exception(); final AbstractResponseUnderTest response = new AbstractResponseUnderTest(e); assertEquals(AbstractResponse.HTTP_STATUS_CODE_UNUSED, response.getHttpStatusCode()); assertNotNull(response.getError()); assertEquals(e, response.getError()); } @SmallTest public void testConstructor_withHttpHeaders() { final Map<String, List<String>> headers = new HashMap<String, List<String>>(); final String contentLength = "Content-Length"; final String contentType = "Content-Type"; final String emptyList = "Empty-List"; headers.put(contentLength, Arrays.asList(new String[] { "0" })); // Pretend that there are accidentally two headers. headers.put(contentType, Arrays.asList(new String[] { "application/json", "text/plain" })); // Empty list. headers.put(emptyList, Arrays.asList(new String[] {})); headers.put("X-Foo", null); final AbstractResponseUnderTest response = new AbstractResponseUnderTest(HttpStatus.SC_OK, Collections .unmodifiableMap(headers), null); assertEquals("0", response.getHttpHeader(contentLength)); assertNull(response.getHttpHeader("content-length")); // does not normalize yet assertNull(response.getHttpHeader("X-Kitteh")); assertNull(response.getHttpHeader("X-Foo")); assertNull(response.getHttpHeader(emptyList)); assertEquals("application/json", response.getHttpHeader(contentType)); } @SmallTest public void testConstructor_nullHttpHeaders() { final AbstractResponseUnderTest response = new AbstractResponseUnderTest(HttpStatus.SC_OK, null, null); assertNull(response.getHttpHeader("X-Foo")); } private static final class AbstractResponseUnderTest extends AbstractResponse<Object> { final Object object = new Object(); public AbstractResponseUnderTest(@NonNull final Exception error) { super(error); } public AbstractResponseUnderTest(final int statusCode, final Map<String, List<String>> headers, final Exception error) { super(statusCode, headers, error); } @Override @Nullable public Object getData() { return object; } } }