PageRenderTime 52ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/spec/ipv6_spec.rb

http://github.com/todb/packetfu
Ruby | 81 lines | 66 code | 15 blank | 0 comment | 0 complexity | 55029afc3ee8afdd4e71c59dcecdd4e5 MD5 | raw file
  1. require 'spec_helper'
  2. include PacketFu
  3. describe IPv6Header do
  4. context "when initializing an IPv6Header" do
  5. before :each do
  6. @ipv6_header = IPv6Header.new
  7. end
  8. it "should contain sane defaults" do
  9. expect(@ipv6_header.ipv6_v).to eql(6)
  10. expect(@ipv6_header.ipv6_len).to eql(0)
  11. expect(@ipv6_header.ipv6_src).to eql(0)
  12. expect(@ipv6_header.ipv6_dst).to eql(0)
  13. expect(@ipv6_header.ipv6_hop).to eql(255)
  14. expect(@ipv6_header.ipv6_next).to eql(0)
  15. end
  16. end
  17. end
  18. describe AddrIpv6 do
  19. context "when parsing IPv6 from wire" do
  20. before :each do
  21. @address_ipv6 = AddrIpv6.new
  22. end
  23. it "should parse an IPv6 address from string i/o" do
  24. raw_addr_ipv6 = "\xfe\x80\x00\x00\x00\x00\x00\x00\x02\x1a\xc5\xff\xfe\x00\x01\x52"
  25. @address_ipv6.read(raw_addr_ipv6)
  26. expect(@address_ipv6.to_i).to eql(338288524927261089654170548082086773074)
  27. expect(@address_ipv6.to_x).to eql("fe80::21a:c5ff:fe00:152")
  28. end
  29. it "should parse an IPv6 address from octet string" do
  30. ipv6_string = "fe80::21a:c5ff:fe00:152"
  31. @address_ipv6.read_x(ipv6_string)
  32. expect(@address_ipv6.to_x).to eql(ipv6_string)
  33. end
  34. end
  35. end
  36. describe IPv6Packet do
  37. context "when initializing an IPv6Packet" do
  38. before :each do
  39. @ipv6_packet = IPv6Packet.new
  40. end
  41. it "should contain sane defaults" do
  42. expect(@ipv6_packet.ipv6_v).to eql(6)
  43. expect(@ipv6_packet.payload).to eql("")
  44. expect(@ipv6_packet.is_ipv6?).to be true
  45. end
  46. it "should support peek functionality" do
  47. expect(@ipv6_packet.peek).to match(/6\s+54\s+::\s+\->\s+::\s+N:0/)
  48. end
  49. it 'should set payload size on #recalc' do
  50. @ipv6_packet.payload = "\0" * 14
  51. @ipv6_packet.recalc
  52. expect(@ipv6_packet.ipv6_len).to eq(14)
  53. @ipv6_packet.payload = "\0" * 255
  54. @ipv6_packet.recalc(:ipv6)
  55. expect(@ipv6_packet.ipv6_len).to eq(255)
  56. end
  57. it 'should set payload size on #ipv6_recalc' do
  58. @ipv6_packet.payload = "\0" * 3
  59. @ipv6_packet.ipv6_recalc
  60. expect(@ipv6_packet.ipv6_len).to eq(3)
  61. @ipv6_packet.payload = "\xff" * 12
  62. @ipv6_packet.ipv6_recalc(:ipv6_len)
  63. expect(@ipv6_packet.ipv6_len).to eq(12)
  64. end
  65. end
  66. end