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