Path: blob/master/spec/lib/rex/proto/kademlia/bootstrap_response_spec.rb
19715 views
# -*- coding: binary -*-12require 'spec_helper'34RSpec.describe Rex::Proto::Kademlia::BootstrapResponse do5describe '#from_data' do6it 'properly decodes real valid bootstrap responses' do7data = File.binread(File.join(File.dirname(__FILE__), 'kademlia_bootstrap_res.bin'))8response = described_class.from_data(data)9expect(response.peer_id).to eq('B54A83462529B21EF51FD54B956B07B0')10expect(response.tcp_port).to eq(4662)11expect(response.version).to eq(8)12# don't bother checking every peer13expect(response.peers.size).to eq(20)14peer = response.peers.first15expect(peer[:id]).to eq('B0A5518388D66BC211B0B9F75B3DCB10')16expect(peer[:ip]).to eq('149.91.116.59')17expect(peer[:tcp_port]).to eq(4882)18expect(peer[:udp_port]).to eq(4992)19expect(peer[:version]).to eq(8)20peer = response.peers.last21expect(peer[:id]).to eq('9B896000AEBE0B0A0ECB35457177A107')22expect(peer[:ip]).to eq('83.46.192.208')23expect(peer[:tcp_port]).to eq(3662)24expect(peer[:udp_port]).to eq(3672)25expect(peer[:version]).to eq(8)26end2728it 'does not decode overly small bootstrap responses' do29expect(described_class.from_data('this is too small')).to eq(nil)30end3132it 'does not decode malformed bootstrap responses' do33expect(described_class.from_data('this is large enough but truncated')).to eq(nil)34end35end36end373839