aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-08-11 21:23:25 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-08-11 21:23:25 +0900
commit0de6a937be423123dbd3322e34c72dc34f382a90 (patch)
treef9a7bf102710b68de41eb4cc5a0b542793194ce2 /test
parent72fc8863a315916237a5e3141432c8926783c2bf (diff)
downloadplum-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.rb36
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