public void TestClearResetsPseudoHeaderDivision() { DefaultHttp2Headers http2Headers = new DefaultHttp2Headers(); http2Headers.Method = (AsciiString)"POST"; http2Headers.Set((AsciiString)"some", (AsciiString)"value"); http2Headers.Clear(); http2Headers.Method = (AsciiString)"GET"; Assert.Equal(1, http2Headers.Names().Count); }
public void FailedValidationDoesntCorruptHpack() { IByteBuffer in1 = Unpooled.Buffer(200); IByteBuffer in2 = Unpooled.Buffer(200); try { HpackEncoder hpackEncoder = new HpackEncoder(true); IHttp2Headers toEncode = new DefaultHttp2Headers(); toEncode.Add((AsciiString)":method", (AsciiString)"GET"); toEncode.Add((AsciiString)":status", (AsciiString)"200"); toEncode.Add((AsciiString)"foo", (AsciiString)"bar"); hpackEncoder.EncodeHeaders(1, in1, toEncode, NeverSensitiveDetector.Instance); IHttp2Headers decoded = new DefaultHttp2Headers(); var expected = Assert.Throws <StreamException>(() => hpackDecoder.Decode(1, in1, decoded, true)); Assert.Equal(1, expected.StreamId); // Do it again, this time without validation, to make sure the HPACK state is still sane. decoded.Clear(); hpackEncoder.EncodeHeaders(1, in2, toEncode, NeverSensitiveDetector.Instance); hpackDecoder.Decode(1, in2, decoded, false); Assert.Equal(3, decoded.Size); Assert.Equal("GET", decoded.Method); Assert.Equal("200", decoded.Status); Assert.Equal("bar", decoded.Get((AsciiString)"foo", null)); } finally { in1.Release(); in2.Release(); } }