| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package org.chromium.net; |
| |
| import android.support.test.filters.MediumTest; |
| |
| import org.junit.Assert; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| |
| import org.chromium.base.library_loader.LibraryLoader; |
| import org.chromium.base.library_loader.LibraryProcessType; |
| import org.chromium.base.library_loader.ProcessInitException; |
| import org.chromium.base.test.BaseJUnit4ClassRunner; |
| |
| import java.util.Arrays; |
| import java.util.List; |
| |
| /** |
| * Tests for {@link HttpUtil}. HttpUtil forwards to native code, and the lion's share of the logic |
| * is tested there. This test is primarily to make sure everything is plumbed through correctly. |
| */ |
| @RunWith(BaseJUnit4ClassRunner.class) |
| public class HttpUtilTest { |
| private static final List<String> UNALLOWED_HEADER_NAMES = Arrays.asList( |
| "accept-encoding", // Unsafe header. |
| "ACCEPT-ENCODING", // Unsafe header. |
| "referer ", // Unsafe header. |
| "referer", // Unsafe header. |
| " referer", // Unsafe header. |
| "", // Badly formed header. |
| "ref(erer", // Badly formed header. |
| "ref\nerer" // Badly formed header. |
| ); |
| |
| private static final List<String> ALLOWED_HEADER_NAMES = Arrays.asList( |
| "accept-language", |
| "Cache-Control" |
| ); |
| |
| private static final String UNALLOWED_HEADER_VALUE = "value\nAccept-Encoding: br"; |
| private static final String ALLOWED_HEADER_VALUE = "value"; |
| |
| @Before |
| public void setUp() throws ProcessInitException { |
| LibraryLoader.getInstance().ensureInitialized(LibraryProcessType.PROCESS_BROWSER); |
| } |
| |
| @Test |
| @MediumTest |
| public void testAllowedHeaders() { |
| for (String headerName: ALLOWED_HEADER_NAMES) { |
| Assert.assertTrue(headerName, |
| HttpUtil.isAllowedHeader(headerName, ALLOWED_HEADER_VALUE)); |
| } |
| } |
| |
| @Test |
| @MediumTest |
| public void testUnallowedHeaders() { |
| for (String headerName: UNALLOWED_HEADER_NAMES) { |
| Assert.assertFalse(headerName, |
| HttpUtil.isAllowedHeader(headerName, UNALLOWED_HEADER_VALUE)); |
| } |
| } |
| |
| @Test |
| @MediumTest |
| public void testUnallowedHeaderNames() { |
| for (String headerName: UNALLOWED_HEADER_NAMES) { |
| Assert.assertFalse(headerName, |
| HttpUtil.isAllowedHeader(headerName, ALLOWED_HEADER_VALUE)); |
| } |
| } |
| |
| |
| @Test |
| @MediumTest |
| public void testUnallowedHeaderValue() { |
| for (String headerName: ALLOWED_HEADER_NAMES) { |
| Assert.assertFalse(headerName, |
| HttpUtil.isAllowedHeader(headerName, UNALLOWED_HEADER_VALUE)); |
| } |
| } |
| } |