Path: blob/master/spec/lib/rex/proto/sip/response_spec.rb
19592 views
# -*- coding: binary -*-12RSpec.describe 'Rex::Proto::SIP::Response parsing' do3describe 'Parses valid responses correctly' do4specify do5resp = 'SIP/1.0 123 Sure, OK'6r = ::Rex::Proto::SIP::Response.parse(resp)7expect(r.status_line).to eq(resp)8expect(r.version).to eq('1.0')9expect(r.code).to eq('123')10expect(r.message).to eq('Sure, OK')11expect(r.headers).to be_nil12end1314specify do15resp = "SIP/2.0 200 OK\r\nFoo: bar\r\nBlah: 0\r\nFoO: blaf\r\n"16r = ::Rex::Proto::SIP::Response.parse(resp)17expect(r.status_line).to eq('SIP/2.0 200 OK')18expect(r.version).to eq('2.0')19expect(r.code).to eq('200')20expect(r.message).to eq('OK')21expect(r.headers).to eq('Foo' => %w(bar), 'Blah' => %w(0), 'FoO' => %w(blaf))22expect(r.header('Foo')).to eq %w(bar blaf)23end24end2526describe 'Parses invalid responses correctly' do27[28'',29'aldkjfakdjfasdf',30'SIP/foo 200 OK',31'SIP/2.0 foo OK'32].each do |r|33it 'Should fail to parse an invalid response' do34expect { ::Rex::Proto::SIP::Response.parse(r) }.to raise_error(ArgumentError, /status/)35end36end37end38end394041