diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-08-13 03:40:31 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-08-13 03:40:31 +0900 |
commit | 8a5541d786022e118d73e2cab4e2d985c4a45842 (patch) | |
tree | 91dd3621db6422b1b5e34aa4c2c422d5c54abd6a /test | |
parent | a429578603c30eb205136b00b90cf0ac640f9173 (diff) | |
download | plum-8a5541d786022e118d73e2cab4e2d985c4a45842.tar.gz |
hpack: raise error if buffer is incomplete
Diffstat (limited to 'test')
-rw-r--r-- | test/plum/hpack/test_decoder.rb | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/test/plum/hpack/test_decoder.rb b/test/plum/hpack/test_decoder.rb index d8f5d10..9acb821 100644 --- a/test/plum/hpack/test_decoder.rb +++ b/test/plum/hpack/test_decoder.rb @@ -25,23 +25,44 @@ class HPACKDecoderTest < Minitest::Test assert_equal([0b00001111].pack("C*"), buf) end + def test_hpack_read_integer_too_big + buf = [0b11011111, 0b10011010, 0b10001010, 0b10001111, 0b11111111, 0b00000011].pack("C*") + assert_raises(HPACKError) { + new_decoder.__send__(:read_integer!, buf, 5) + } + end + + def test_hpack_read_integer_incomplete + buf = [0b11011111, 0b10011010].pack("C*") + assert_raises(HPACKError) { + new_decoder.__send__(:read_integer!, buf, 5) + } + end + # C.2.1 def test_hpack_decode_indexing - encoded = "\x40\x0a\x63\x75\x73\x74\x6f\x6d\x2d\x6b\x65\x79\x0d\x63\x75\x73\x74\x6f\x6d\x2d\x68\x65\x61\x64\x65\x72" + encoded = "\x40\x0acustom-key\x0dcustom-header" result = new_decoder.decode(encoded) assert_equal([["custom-key", "custom-header"]], result) end + def test_hpack_decode_indexing_imcomplete + encoded = "\x40\x0acus" + assert_raises(HTTPError) { + new_decoder.decode(encoded) + } + end + # C.2.2 def test_hpack_decode_without_indexing - encoded = "\x04\x0c\x2f\x73\x61\x6d\x70\x6c\x65\x2f\x70\x61\x74\x68" + encoded = "\x04\x0c/sample/path" result = new_decoder.decode(encoded) assert_equal([[":path", "/sample/path"]], result) end # C.2.3 def test_hpack_decode_without_indexing2 - encoded = "\x10\x08\x70\x61\x73\x73\x77\x6f\x72\x64\x06\x73\x65\x63\x72\x65\x74" + encoded = "\x10\x08password\x06secret" result = new_decoder.decode(encoded) assert_equal([["password", "secret"]], result) end |