spec/client_spec.rb in http-2-0.10.0 vs spec/client_spec.rb in http-2-0.10.1

- old
+ new

@@ -30,10 +30,22 @@ frame = f.parse(frames[1]) expect(frame[:type]).to eq :settings expect(frame[:payload]).to include([:settings_max_concurrent_streams, 200]) end + + it 'should initialize client when receiving server settings before sending ack' do + frames = [] + @client.on(:frame) { |bytes| frames << bytes } + @client << f.generate(SETTINGS.dup) + + expect(frames[0]).to eq CONNECTION_PREFACE_MAGIC + expect(f.parse(frames[1])[:type]).to eq :settings + ack_frame = f.parse(frames[2]) + expect(ack_frame[:type]).to eq :settings + expect(ack_frame[:flags]).to include(:ack) + end end context 'upgrade' do it 'fails when client has already created streams' do @client.new_stream @@ -118,8 +130,58 @@ expect(frame[:type]).to eq :rst_stream expect(frame[:stream]).to eq 2 end @client << set_stream_id(f.generate(PUSH_PROMISE.dup), s.id) + end + end + + context 'alt-svc' do + context 'received in the connection' do + it 'should emit :altsvc when receiving one' do + @client << f.generate(SETTINGS.dup) + frame = nil + @client.on(:altsvc) do |f| + frame = f + end + @client << f.generate(ALTSVC.deep_dup) + expect(frame).to be_a(Hash) + end + it 'should not emit :altsvc when the frame when contains no host' do + @client << f.generate(SETTINGS.dup) + frame = nil + @client.on(:altsvc) do |f| + frame = f + end + + @client << f.generate(ALTSVC.deep_dup.merge(origin: nil)) + expect(frame).to be_nil + end + end + context 'received in a stream' do + it 'should emit :altsvc' do + s = @client.new_stream + s.send HEADERS.deep_dup + s.close + + frame = nil + s.on(:altsvc) { |f| frame = f } + + @client << set_stream_id(f.generate(ALTSVC.deep_dup.merge(origin: nil)), s.id) + + expect(frame).to be_a(Hash) + end + it 'should not emit :alt_svc when the frame when contains a origin' do + s = @client.new_stream + s.send HEADERS.deep_dup + s.close + + frame = nil + s.on(:altsvc) { |f| frame = f } + + @client << set_stream_id(f.generate(ALTSVC.deep_dup), s.id) + + expect(frame).to be_nil + end end end end