1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
require 'spec_helper'
describe Net::NTLM::TargetInfo do
let(:key1) { Net::NTLM::TargetInfo::MSV_AV_NB_COMPUTER_NAME }
let(:value1) { 'some data' }
let(:key2) { Net::NTLM::TargetInfo::MSV_AV_NB_DOMAIN_NAME }
let(:value2) { 'some other data' }
let(:data) do
dt = key1.dup
dt << [value1.length].pack('S')
dt << value1
dt << key2.dup
dt << [value2.length].pack('S')
dt << value2
dt << Net::NTLM::TargetInfo::MSV_AV_EOL
dt << [0].pack('S')
dt.force_encoding(Encoding::ASCII_8BIT)
end
subject { Net::NTLM::TargetInfo.new(data) }
describe 'invalid data' do
context 'invalid pair id' do
let(:data) { "\xFF\x00" }
it 'returns an error' do
expect{subject}.to raise_error Net::NTLM::InvalidTargetDataError
end
end
end
describe '#av_pairs' do
it 'returns the pair values with the given keys' do
expect(subject.av_pairs[key1]).to eq value1
expect(subject.av_pairs[key2]).to eq value2
end
context "target data is nil" do
subject { Net::NTLM::TargetInfo.new(nil) }
it 'returns the pair values with the given keys' do
expect(subject.av_pairs).to be_empty
end
end
end
describe '#to_s' do
let(:data) do
dt = key1.dup
dt << [value1.length].pack('S')
dt << value1
dt << key2.dup
dt << [value2.length].pack('S')
dt << value2
dt.force_encoding(Encoding::ASCII_8BIT)
end
let(:new_key) { Net::NTLM::TargetInfo::MSV_AV_CHANNEL_BINDINGS }
let(:new_value) { 'bindings' }
let(:new_data) do
dt = data
dt << new_key
dt << [new_value.length].pack('S')
dt << new_value
dt << Net::NTLM::TargetInfo::MSV_AV_EOL
dt << [0].pack('S')
dt.force_encoding(Encoding::ASCII_8BIT)
end
it 'returns bytes with any new data added' do
subject.av_pairs[new_key] = new_value
expect(subject.to_s).to eq new_data
end
end
end
|