File: target_info_spec.rb

package info (click to toggle)
ruby-ntlm 0.6.3-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 408 kB
  • sloc: ruby: 2,663; makefile: 6
file content (76 lines) | stat: -rw-r--r-- 1,968 bytes parent folder | download
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