diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-08-11 21:23:25 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-08-11 21:23:25 +0900 |
commit | 0de6a937be423123dbd3322e34c72dc34f382a90 (patch) | |
tree | f9a7bf102710b68de41eb4cc5a0b542793194ce2 /test | |
parent | 72fc8863a315916237a5e3141432c8926783c2bf (diff) | |
download | plum-0de6a937be423123dbd3322e34c72dc34f382a90.tar.gz |
connection: Connection#receive raises sFRAME_SIZE_ERROR when received too long DATA frame
Diffstat (limited to 'test')
-rw-r--r-- | test/plum/test_connection.rb | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/test/plum/test_connection.rb b/test/plum/test_connection.rb index ffb5264..cd103d2 100644 --- a/test/plum/test_connection.rb +++ b/test/plum/test_connection.rb @@ -3,15 +3,37 @@ require "test_helper" using Plum::BinaryString class ConnectionTest < Minitest::Test - def test_server_must_raise_cframe_size_error_when_exeeeded_max_size + def test_server_must_raise_frame_size_error_when_exeeeded_max_size _settings = "".push_uint16(Frame::SETTINGS_TYPE[:max_frame_size]).push_uint32(2**14) - con = open_server_connection - con.settings(max_frame_size: 2**14) - assert_no_error { - con << Frame.new(type: :settings, stream_id: 0, payload: _settings*(2**14/6)).assemble + limit = 2 ** 14 + + new_con = -> (&blk) { + c = open_server_connection + c.settings(max_frame_size: limit) + blk.call c + } + + new_con.call {|con| + assert_no_error { + con << Frame.new(type: :settings, stream_id: 0, payload: _settings * (limit / 6)).assemble + } } - assert_connection_error(:frame_size_error) { - con << Frame.new(type: :settings, stream_id: 0, payload: _settings*((2**14)/6+1)).assemble + new_con.call {|con| + assert_connection_error(:frame_size_error) { + con << Frame.new(type: :settings, stream_id: 0, payload: _settings * (limit / 6 + 1)).assemble + } + } + + new_con.call {|con| + assert_connection_error(:frame_size_error) { + con << Frame.new(type: :headers, stream_id: 3, payload: "\x00" * (limit + 1)).assemble + } + } + new_con.call {|con| + assert_stream_error(:frame_size_error) { + con << Frame.new(type: :headers, stream_id: 3, flags: [:end_headers], payload: "").assemble + con << Frame.new(type: :data, stream_id: 3, payload: "\x00" * (limit + 1)).assemble + } } end |