mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
OkHttp is more strict than other http libraries. (#21231)
Summary: It crashes with IllegalStateException in case you pass a wrong URL. It crashes if it meets unexpected symbols in the header name and value, while standard says it is not recommended to use those symbols not that they are prohibited. The headers handing is a special use case as a client might have an auth token in the header. In this case, we want to get 401 error response from the server to find out that token is wrong. In case of the onerror client will continue to retry with an existing token. [ANDROID][Fixed] - Networking: Passing invalid URL not crashes the app instead onerror callback of HttpClient is called. Invalid symbols are stripped from the headers to allow HTTP query to fail with 401 error code in case of the broken token. Pull Request resolved: https://github.com/facebook/react-native/pull/21231 Reviewed By: axe-fb Differential Revision: D10222129 Pulled By: hramos fbshipit-source-id: b23340692d0fb059a90e338fa85ad4d9612275f2
This commit is contained in:
committed by
Facebook Github Bot
parent
fe3aebf87b
commit
aad4dbbbfe
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
package com.facebook.react.modules.network;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class HeaderUtilTest {
|
||||
public static final String TABULATION_TEST = "\teyJhbGciOiJS\t";
|
||||
public static final String TABULATION_STRIP_EXPECTED = "eyJhbGciOiJS";
|
||||
public static final String NUMBERS_TEST = "0123456789";
|
||||
public static final String SPECIALS_TEST = "!@#$%^&*()-=_+{}[]\\|;:'\",.<>/?";
|
||||
public static final String ALPHABET_TEST = "abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWHYZ";
|
||||
public static final String VALUE_BANNED_SYMBOLS_TEST = "���name�����������\u007f\u001f";
|
||||
public static final String NAME_BANNED_SYMBOLS_TEST = "���name�����������\u007f\u0020\u001f";
|
||||
public static final String BANNED_TEST_EXPECTED = "name";
|
||||
|
||||
@Test
|
||||
public void nameStripKeepsLetters() {
|
||||
assertEquals(ALPHABET_TEST, HeaderUtil.stripHeaderName(ALPHABET_TEST));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void valueStripKeepsLetters() {
|
||||
assertEquals(ALPHABET_TEST, HeaderUtil.stripHeaderValue(ALPHABET_TEST));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nameStripKeepsNumbers() {
|
||||
assertEquals(NUMBERS_TEST, HeaderUtil.stripHeaderName(NUMBERS_TEST));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void valueStripKeepsNumbers() {
|
||||
assertEquals(NUMBERS_TEST, HeaderUtil.stripHeaderValue(NUMBERS_TEST));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void valueStripKeepsSpecials() {
|
||||
assertEquals(SPECIALS_TEST, HeaderUtil.stripHeaderValue(SPECIALS_TEST));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nameStripKeepsSpecials() {
|
||||
assertEquals(SPECIALS_TEST, HeaderUtil.stripHeaderName(SPECIALS_TEST));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void valueStripKeepsTabs() {
|
||||
assertEquals(TABULATION_TEST, HeaderUtil.stripHeaderValue(TABULATION_TEST));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nameStripDeletesTabs() {
|
||||
assertEquals(TABULATION_STRIP_EXPECTED, HeaderUtil.stripHeaderName(TABULATION_TEST));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void valueStripRemovesExtraSymbols() {
|
||||
assertEquals(BANNED_TEST_EXPECTED, HeaderUtil.stripHeaderValue(VALUE_BANNED_SYMBOLS_TEST));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nameStripRemovesExtraSymbols() {
|
||||
assertEquals(BANNED_TEST_EXPECTED, HeaderUtil.stripHeaderName(NAME_BANNED_SYMBOLS_TEST));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user