From fc60fa4426cb8e7ee8ef13c3b9e8bd1367ac56ba Mon Sep 17 00:00:00 2001 From: monkey-mas Date: Fri, 8 Nov 2019 04:14:26 -0500 Subject: [PATCH] Add test to check Connection-Specific headers are removed in HTTP/2 (by HttpConversionUtil.toHttp2Headers) (#9766) Motivation: To avoid regression regarding connection-specific headers[1], we should add a test. [1] https://tools.ietf.org/html/rfc7540#section-8.1.2.2 Modification: Add test that checks the following headers are removed. - Connection - Host - Keep-Alive - Proxy-Connection - Transfer-Encoding - Upgrade Result: There's no functional change. --- .../codec/http2/HttpConversionUtilTest.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/codec-http2/src/test/java/io/netty/handler/codec/http2/HttpConversionUtilTest.java b/codec-http2/src/test/java/io/netty/handler/codec/http2/HttpConversionUtilTest.java index 4da9fd51a4..21530c934a 100644 --- a/codec-http2/src/test/java/io/netty/handler/codec/http2/HttpConversionUtilTest.java +++ b/codec-http2/src/test/java/io/netty/handler/codec/http2/HttpConversionUtilTest.java @@ -23,7 +23,12 @@ import org.junit.Test; import static io.netty.handler.codec.http.HttpHeaderNames.CONNECTION; import static io.netty.handler.codec.http.HttpHeaderNames.COOKIE; +import static io.netty.handler.codec.http.HttpHeaderNames.HOST; +import static io.netty.handler.codec.http.HttpHeaderNames.KEEP_ALIVE; +import static io.netty.handler.codec.http.HttpHeaderNames.PROXY_CONNECTION; import static io.netty.handler.codec.http.HttpHeaderNames.TE; +import static io.netty.handler.codec.http.HttpHeaderNames.TRANSFER_ENCODING; +import static io.netty.handler.codec.http.HttpHeaderNames.UPGRADE; import static io.netty.handler.codec.http.HttpHeaderValues.GZIP; import static io.netty.handler.codec.http.HttpHeaderValues.TRAILERS; import static org.junit.Assert.assertEquals; @@ -159,4 +164,29 @@ public class HttpConversionUtilTest { assertEquals("no", outHeaders.get("yes")); assertEquals("foo=bar; bax=baz", outHeaders.get(COOKIE.toString())); } + + @Test + public void connectionSpecificHeadersShouldBeRemoved() { + HttpHeaders inHeaders = new DefaultHttpHeaders(); + inHeaders.add(CONNECTION, "keep-alive"); + inHeaders.add(HOST, "example.com"); + @SuppressWarnings("deprecation") + AsciiString keepAlive = KEEP_ALIVE; + inHeaders.add(keepAlive, "timeout=5, max=1000"); + @SuppressWarnings("deprecation") + AsciiString proxyConnection = PROXY_CONNECTION; + inHeaders.add(proxyConnection, "timeout=5, max=1000"); + inHeaders.add(TRANSFER_ENCODING, "chunked"); + inHeaders.add(UPGRADE, "h2c"); + + Http2Headers outHeaders = new DefaultHttp2Headers(); + HttpConversionUtil.toHttp2Headers(inHeaders, outHeaders); + + assertFalse(outHeaders.contains(CONNECTION)); + assertFalse(outHeaders.contains(HOST)); + assertFalse(outHeaders.contains(keepAlive)); + assertFalse(outHeaders.contains(proxyConnection)); + assertFalse(outHeaders.contains(TRANSFER_ENCODING)); + assertFalse(outHeaders.contains(UPGRADE)); + } }