rubyntlm 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -3
  3. data/.rspec +2 -2
  4. data/.travis.yml +13 -12
  5. data/CHANGELOG.md +118 -6
  6. data/Gemfile +3 -3
  7. data/LICENSE +19 -19
  8. data/Rakefile +25 -22
  9. data/lib/net/ntlm.rb +266 -266
  10. data/lib/net/ntlm/blob.rb +28 -28
  11. data/lib/net/ntlm/channel_binding.rb +65 -65
  12. data/lib/net/ntlm/client.rb +65 -65
  13. data/lib/net/ntlm/client/session.rb +237 -237
  14. data/lib/net/ntlm/encode_util.rb +48 -48
  15. data/lib/net/ntlm/exceptions.rb +14 -14
  16. data/lib/net/ntlm/field.rb +34 -34
  17. data/lib/net/ntlm/field_set.rb +129 -129
  18. data/lib/net/ntlm/int16_le.rb +25 -25
  19. data/lib/net/ntlm/int32_le.rb +24 -24
  20. data/lib/net/ntlm/int64_le.rb +25 -25
  21. data/lib/net/ntlm/message.rb +129 -129
  22. data/lib/net/ntlm/message/type0.rb +16 -16
  23. data/lib/net/ntlm/message/type1.rb +18 -18
  24. data/lib/net/ntlm/message/type2.rb +102 -102
  25. data/lib/net/ntlm/message/type3.rb +131 -131
  26. data/lib/net/ntlm/security_buffer.rb +47 -47
  27. data/lib/net/ntlm/string.rb +34 -34
  28. data/lib/net/ntlm/target_info.rb +89 -89
  29. data/lib/net/ntlm/version.rb +11 -11
  30. data/rubyntlm.gemspec +29 -28
  31. data/spec/lib/net/ntlm/blob_spec.rb +16 -16
  32. data/spec/lib/net/ntlm/channel_binding_spec.rb +17 -17
  33. data/spec/lib/net/ntlm/client/session_spec.rb +68 -68
  34. data/spec/lib/net/ntlm/client_spec.rb +64 -64
  35. data/spec/lib/net/ntlm/encode_util_spec.rb +16 -16
  36. data/spec/lib/net/ntlm/field_set_spec.rb +33 -33
  37. data/spec/lib/net/ntlm/field_spec.rb +34 -34
  38. data/spec/lib/net/ntlm/int16_le_spec.rb +17 -17
  39. data/spec/lib/net/ntlm/int32_le_spec.rb +18 -18
  40. data/spec/lib/net/ntlm/int64_le_spec.rb +18 -18
  41. data/spec/lib/net/ntlm/message/type0_spec.rb +20 -20
  42. data/spec/lib/net/ntlm/message/type1_spec.rb +131 -131
  43. data/spec/lib/net/ntlm/message/type2_spec.rb +132 -132
  44. data/spec/lib/net/ntlm/message/type3_spec.rb +225 -225
  45. data/spec/lib/net/ntlm/message_spec.rb +16 -16
  46. data/spec/lib/net/ntlm/security_buffer_spec.rb +64 -64
  47. data/spec/lib/net/ntlm/string_spec.rb +72 -72
  48. data/spec/lib/net/ntlm/target_info_spec.rb +76 -76
  49. data/spec/lib/net/ntlm/version_spec.rb +27 -27
  50. data/spec/lib/net/ntlm_spec.rb +127 -127
  51. data/spec/spec_helper.rb +22 -22
  52. data/spec/support/certificates/sha_256_hash.pem +19 -19
  53. data/spec/support/shared/examples/net/ntlm/field_shared.rb +25 -25
  54. data/spec/support/shared/examples/net/ntlm/fieldset_shared.rb +239 -239
  55. data/spec/support/shared/examples/net/ntlm/int_shared.rb +43 -43
  56. data/spec/support/shared/examples/net/ntlm/message_shared.rb +35 -35
  57. metadata +17 -3
@@ -1,17 +1,17 @@
1
- require 'spec_helper'
2
-
3
- describe Net::NTLM::ChannelBinding do
4
- let(:certificates_path) { 'spec/support/certificates' }
5
- let(:sha_256_path) { File.join(certificates_path, 'sha_256_hash.pem') }
6
- let(:sha_256_cert) { OpenSSL::X509::Certificate.new(File.read(sha_256_path)) }
7
- let(:cert_hash) { "\x04\x0E\x56\x28\xEC\x4A\x98\x29\x91\x70\x73\x62\x03\x7B\xB2\x3C".force_encoding(Encoding::ASCII_8BIT) }
8
-
9
- subject { Net::NTLM::ChannelBinding.create(sha_256_cert) }
10
-
11
- describe '#channel_binding_token' do
12
-
13
- it 'returns the correct hash' do
14
- expect(subject.channel_binding_token).to eq cert_hash
15
- end
16
- end
17
- end
1
+ require 'spec_helper'
2
+
3
+ describe Net::NTLM::ChannelBinding do
4
+ let(:certificates_path) { 'spec/support/certificates' }
5
+ let(:sha_256_path) { File.join(certificates_path, 'sha_256_hash.pem') }
6
+ let(:sha_256_cert) { OpenSSL::X509::Certificate.new(File.read(sha_256_path)) }
7
+ let(:cert_hash) { "\x04\x0E\x56\x28\xEC\x4A\x98\x29\x91\x70\x73\x62\x03\x7B\xB2\x3C".force_encoding(Encoding::ASCII_8BIT) }
8
+
9
+ subject { Net::NTLM::ChannelBinding.create(sha_256_cert) }
10
+
11
+ describe '#channel_binding_token' do
12
+
13
+ it 'returns the correct hash' do
14
+ expect(subject.channel_binding_token).to eq cert_hash
15
+ end
16
+ end
17
+ end
@@ -1,68 +1,68 @@
1
- require 'spec_helper'
2
-
3
- describe Net::NTLM::Client::Session do
4
- let(:t2_challenge) { Net::NTLM::Message.decode64 "TlRMTVNTUAACAAAADAAMADgAAAA1goriAAyk1DmJUnUAAAAAAAAAAFAAUABEAAAABgLwIwAAAA9TAEUAUgBWAEUAUgACAAwAUwBFAFIAVgBFAFIAAQAMAFMARQBSAFYARQBSAAQADABzAGUAcgB2AGUAcgADAAwAcwBlAHIAdgBlAHIABwAIADd7mrNaB9ABAAAAAA==" }
5
- let(:inst) { Net::NTLM::Client::Session.new(nil, t2_challenge) }
6
- let(:user_session_key) {["3c4918ff0b33e2603e5d7ceaf34bb7d5"].pack("H*")}
7
- let(:client_sign_key) {["f7f97a82ec390f9c903dac4f6aceb132"].pack("H*")}
8
- let(:client_seal_key) {["6f0d99535033951cbe499cd1914fe9ee"].pack("H*")}
9
- let(:server_sign_key) {["f7f97a82ec390f9c903dac4f6aceb132"].pack("H*")}
10
- let(:server_seal_key) {["6f0d99535033951cbe499cd1914fe9ee"].pack("H*")}
11
-
12
- describe "#sign_message" do
13
-
14
- it "signs a message and when KEY_EXCHANGE is true" do
15
- expect(inst).to receive(:client_sign_key).and_return(client_sign_key)
16
- expect(inst).to receive(:client_seal_key).and_return(client_seal_key)
17
- expect(inst).to receive(:negotiate_key_exchange?).and_return(true)
18
- sm = inst.sign_message("Test Message")
19
- str = "01000000b35ccd60c110c52f00000000"
20
- expect(sm.unpack("H*")[0]).to eq(str)
21
- end
22
-
23
- end
24
-
25
- describe "#verify_signature" do
26
-
27
- it "verifies a message signature" do
28
- expect(inst).to receive(:server_sign_key).and_return(server_sign_key)
29
- expect(inst).to receive(:server_seal_key).and_return(server_seal_key)
30
- expect(inst).to receive(:negotiate_key_exchange?).and_return(true)
31
- sig = "01000000b35ccd60c110c52f00000000"
32
- sm = inst.verify_signature([sig].pack("H*"), "Test Message")
33
- expect(sm).to be true
34
- end
35
-
36
- end
37
-
38
- describe "#seal_message" do
39
- it "should seal the message" do
40
- expect(inst).to receive(:client_seal_key).and_return(client_seal_key)
41
- emsg = inst.seal_message("rubyntlm")
42
- expect(emsg.unpack("H*")[0]).to eq("d7389b9604f6274f")
43
- end
44
- end
45
-
46
- describe "#unseal_message" do
47
- it "should unseal the message" do
48
- expect(inst).to receive(:server_seal_key).and_return(server_seal_key)
49
- msg = inst.unseal_message(["d7389b9604f6274f"].pack("H*"))
50
- expect(msg).to eq("rubyntlm")
51
- end
52
- end
53
-
54
- describe "#exported_session_key" do
55
- it "returns a random 16-byte key when negotiate_key_exchange? is true" do
56
- expect(inst).to receive(:negotiate_key_exchange?).and_return(true)
57
- expect(inst).not_to receive(:user_session_key)
58
- inst.exported_session_key
59
- end
60
-
61
- it "returns the user_session_key when negotiate_key_exchange? is false" do
62
- expect(inst).to receive(:negotiate_key_exchange?).and_return(false)
63
- expect(inst).to receive(:user_session_key).and_return(user_session_key)
64
- inst.exported_session_key
65
- end
66
- end
67
-
68
- end
1
+ require 'spec_helper'
2
+
3
+ describe Net::NTLM::Client::Session do
4
+ let(:t2_challenge) { Net::NTLM::Message.decode64 "TlRMTVNTUAACAAAADAAMADgAAAA1goriAAyk1DmJUnUAAAAAAAAAAFAAUABEAAAABgLwIwAAAA9TAEUAUgBWAEUAUgACAAwAUwBFAFIAVgBFAFIAAQAMAFMARQBSAFYARQBSAAQADABzAGUAcgB2AGUAcgADAAwAcwBlAHIAdgBlAHIABwAIADd7mrNaB9ABAAAAAA==" }
5
+ let(:inst) { Net::NTLM::Client::Session.new(nil, t2_challenge) }
6
+ let(:user_session_key) {["3c4918ff0b33e2603e5d7ceaf34bb7d5"].pack("H*")}
7
+ let(:client_sign_key) {["f7f97a82ec390f9c903dac4f6aceb132"].pack("H*")}
8
+ let(:client_seal_key) {["6f0d99535033951cbe499cd1914fe9ee"].pack("H*")}
9
+ let(:server_sign_key) {["f7f97a82ec390f9c903dac4f6aceb132"].pack("H*")}
10
+ let(:server_seal_key) {["6f0d99535033951cbe499cd1914fe9ee"].pack("H*")}
11
+
12
+ describe "#sign_message" do
13
+
14
+ it "signs a message and when KEY_EXCHANGE is true" do
15
+ expect(inst).to receive(:client_sign_key).and_return(client_sign_key)
16
+ expect(inst).to receive(:client_seal_key).and_return(client_seal_key)
17
+ expect(inst).to receive(:negotiate_key_exchange?).and_return(true)
18
+ sm = inst.sign_message("Test Message")
19
+ str = "01000000b35ccd60c110c52f00000000"
20
+ expect(sm.unpack("H*")[0]).to eq(str)
21
+ end
22
+
23
+ end
24
+
25
+ describe "#verify_signature" do
26
+
27
+ it "verifies a message signature" do
28
+ expect(inst).to receive(:server_sign_key).and_return(server_sign_key)
29
+ expect(inst).to receive(:server_seal_key).and_return(server_seal_key)
30
+ expect(inst).to receive(:negotiate_key_exchange?).and_return(true)
31
+ sig = "01000000b35ccd60c110c52f00000000"
32
+ sm = inst.verify_signature([sig].pack("H*"), "Test Message")
33
+ expect(sm).to be true
34
+ end
35
+
36
+ end
37
+
38
+ describe "#seal_message" do
39
+ it "should seal the message" do
40
+ expect(inst).to receive(:client_seal_key).and_return(client_seal_key)
41
+ emsg = inst.seal_message("rubyntlm")
42
+ expect(emsg.unpack("H*")[0]).to eq("d7389b9604f6274f")
43
+ end
44
+ end
45
+
46
+ describe "#unseal_message" do
47
+ it "should unseal the message" do
48
+ expect(inst).to receive(:server_seal_key).and_return(server_seal_key)
49
+ msg = inst.unseal_message(["d7389b9604f6274f"].pack("H*"))
50
+ expect(msg).to eq("rubyntlm")
51
+ end
52
+ end
53
+
54
+ describe "#exported_session_key" do
55
+ it "returns a random 16-byte key when negotiate_key_exchange? is true" do
56
+ expect(inst).to receive(:negotiate_key_exchange?).and_return(true)
57
+ expect(inst).not_to receive(:user_session_key)
58
+ inst.exported_session_key
59
+ end
60
+
61
+ it "returns the user_session_key when negotiate_key_exchange? is false" do
62
+ expect(inst).to receive(:negotiate_key_exchange?).and_return(false)
63
+ expect(inst).to receive(:user_session_key).and_return(user_session_key)
64
+ inst.exported_session_key
65
+ end
66
+ end
67
+
68
+ end
@@ -1,64 +1,64 @@
1
- require 'spec_helper'
2
-
3
- describe Net::NTLM::Client do
4
- let(:inst) { Net::NTLM::Client.new("test", "test01", :workstation => "testhost") }
5
- let(:user_session_key) {["3c4918ff0b33e2603e5d7ceaf34bb7d5"].pack("H*")}
6
-
7
- describe "#init_context" do
8
-
9
- it "returns a default Type1 message" do
10
- t1 = inst.init_context
11
- expect(t1).to be_instance_of Net::NTLM::Message::Type1
12
- expect(t1.domain).to eq("")
13
- expect(t1.workstation).to eq("testhost")
14
- expect(t1).to have_flag(:UNICODE)
15
- expect(t1).to have_flag(:OEM)
16
- expect(t1).to have_flag(:SIGN)
17
- expect(t1).to have_flag(:SEAL)
18
- expect(t1).to have_flag(:REQUEST_TARGET)
19
- expect(t1).to have_flag(:NTLM)
20
- expect(t1).to have_flag(:ALWAYS_SIGN)
21
- expect(t1).to have_flag(:NTLM2_KEY)
22
- expect(t1).to have_flag(:KEY128)
23
- expect(t1).to have_flag(:KEY_EXCHANGE)
24
- expect(t1).to have_flag(:KEY56)
25
- end
26
-
27
- it "clears session variable on new init_context" do
28
- inst.instance_variable_set :@session, "BADSESSION"
29
- expect(inst.session).to eq("BADSESSION")
30
- inst.init_context
31
- expect(inst.session).to be_nil
32
- end
33
-
34
- it "returns a Type1 message with custom flags" do
35
- flags = Net::NTLM::FLAGS[:UNICODE] | Net::NTLM::FLAGS[:REQUEST_TARGET] | Net::NTLM::FLAGS[:NTLM]
36
- inst = Net::NTLM::Client.new("test", "test01", :workstation => "testhost", :flags => flags)
37
- t1 = inst.init_context
38
- expect(t1).to be_instance_of Net::NTLM::Message::Type1
39
- expect(t1.domain).to eq("")
40
- expect(t1.workstation).to eq("testhost")
41
- expect(t1).to have_flag(:UNICODE)
42
- expect(t1).not_to have_flag(:OEM)
43
- expect(t1).not_to have_flag(:SIGN)
44
- expect(t1).not_to have_flag(:SEAL)
45
- expect(t1).to have_flag(:REQUEST_TARGET)
46
- expect(t1).to have_flag(:NTLM)
47
- expect(t1).not_to have_flag(:ALWAYS_SIGN)
48
- expect(t1).not_to have_flag(:NTLM2_KEY)
49
- expect(t1).not_to have_flag(:KEY128)
50
- expect(t1).not_to have_flag(:KEY_EXCHANGE)
51
- expect(t1).not_to have_flag(:KEY56)
52
- end
53
-
54
- it "calls authenticate! when we receive a Challenge Message" do
55
- t2_challenge = "TlRMTVNTUAACAAAADAAMADgAAAA1goriAAyk1DmJUnUAAAAAAAAAAFAAUABEAAAABgLwIwAAAA9TAEUAUgBWAEUAUgACAAwAUwBFAFIAVgBFAFIAAQAMAFMARQBSAFYARQBSAAQADABzAGUAcgB2AGUAcgADAAwAcwBlAHIAdgBlAHIABwAIADd7mrNaB9ABAAAAAA=="
56
- session = double("session")
57
- expect(session).to receive(:authenticate!)
58
- expect(Net::NTLM::Client::Session).to receive(:new).with(inst, instance_of(Net::NTLM::Message::Type2), nil).and_return(session)
59
- inst.init_context t2_challenge
60
- end
61
-
62
- end
63
-
64
- end
1
+ require 'spec_helper'
2
+
3
+ describe Net::NTLM::Client do
4
+ let(:inst) { Net::NTLM::Client.new("test", "test01", :workstation => "testhost") }
5
+ let(:user_session_key) {["3c4918ff0b33e2603e5d7ceaf34bb7d5"].pack("H*")}
6
+
7
+ describe "#init_context" do
8
+
9
+ it "returns a default Type1 message" do
10
+ t1 = inst.init_context
11
+ expect(t1).to be_instance_of Net::NTLM::Message::Type1
12
+ expect(t1.domain).to eq("")
13
+ expect(t1.workstation).to eq("testhost")
14
+ expect(t1).to have_flag(:UNICODE)
15
+ expect(t1).to have_flag(:OEM)
16
+ expect(t1).to have_flag(:SIGN)
17
+ expect(t1).to have_flag(:SEAL)
18
+ expect(t1).to have_flag(:REQUEST_TARGET)
19
+ expect(t1).to have_flag(:NTLM)
20
+ expect(t1).to have_flag(:ALWAYS_SIGN)
21
+ expect(t1).to have_flag(:NTLM2_KEY)
22
+ expect(t1).to have_flag(:KEY128)
23
+ expect(t1).to have_flag(:KEY_EXCHANGE)
24
+ expect(t1).to have_flag(:KEY56)
25
+ end
26
+
27
+ it "clears session variable on new init_context" do
28
+ inst.instance_variable_set :@session, "BADSESSION"
29
+ expect(inst.session).to eq("BADSESSION")
30
+ inst.init_context
31
+ expect(inst.session).to be_nil
32
+ end
33
+
34
+ it "returns a Type1 message with custom flags" do
35
+ flags = Net::NTLM::FLAGS[:UNICODE] | Net::NTLM::FLAGS[:REQUEST_TARGET] | Net::NTLM::FLAGS[:NTLM]
36
+ inst = Net::NTLM::Client.new("test", "test01", :workstation => "testhost", :flags => flags)
37
+ t1 = inst.init_context
38
+ expect(t1).to be_instance_of Net::NTLM::Message::Type1
39
+ expect(t1.domain).to eq("")
40
+ expect(t1.workstation).to eq("testhost")
41
+ expect(t1).to have_flag(:UNICODE)
42
+ expect(t1).not_to have_flag(:OEM)
43
+ expect(t1).not_to have_flag(:SIGN)
44
+ expect(t1).not_to have_flag(:SEAL)
45
+ expect(t1).to have_flag(:REQUEST_TARGET)
46
+ expect(t1).to have_flag(:NTLM)
47
+ expect(t1).not_to have_flag(:ALWAYS_SIGN)
48
+ expect(t1).not_to have_flag(:NTLM2_KEY)
49
+ expect(t1).not_to have_flag(:KEY128)
50
+ expect(t1).not_to have_flag(:KEY_EXCHANGE)
51
+ expect(t1).not_to have_flag(:KEY56)
52
+ end
53
+
54
+ it "calls authenticate! when we receive a Challenge Message" do
55
+ t2_challenge = "TlRMTVNTUAACAAAADAAMADgAAAA1goriAAyk1DmJUnUAAAAAAAAAAFAAUABEAAAABgLwIwAAAA9TAEUAUgBWAEUAUgACAAwAUwBFAFIAVgBFAFIAAQAMAFMARQBSAFYARQBSAAQADABzAGUAcgB2AGUAcgADAAwAcwBlAHIAdgBlAHIABwAIADd7mrNaB9ABAAAAAA=="
56
+ session = double("session")
57
+ expect(session).to receive(:authenticate!)
58
+ expect(Net::NTLM::Client::Session).to receive(:new).with(inst, instance_of(Net::NTLM::Message::Type2), nil).and_return(session)
59
+ inst.init_context t2_challenge
60
+ end
61
+
62
+ end
63
+
64
+ end
@@ -1,16 +1,16 @@
1
- require 'spec_helper'
2
-
3
- describe Net::NTLM::EncodeUtil do
4
-
5
- context '#encode_utf16le' do
6
- it 'should convert an ASCII string to UTF' do
7
- expect(Net::NTLM::EncodeUtil.encode_utf16le('Test'.encode(::Encoding::ASCII_8BIT).freeze)).to eq("T\x00e\x00s\x00t\x00")
8
- end
9
- end
10
-
11
- context '#decode_utf16le' do
12
- it 'should convert a UTF string to ASCII' do
13
- expect(Net::NTLM::EncodeUtil.decode_utf16le("T\x00e\x00s\x00t\x00".freeze)).to eq('Test')
14
- end
15
- end
16
- end
1
+ require 'spec_helper'
2
+
3
+ describe Net::NTLM::EncodeUtil do
4
+
5
+ context '#encode_utf16le' do
6
+ it 'should convert an ASCII string to UTF' do
7
+ expect(Net::NTLM::EncodeUtil.encode_utf16le('Test'.encode(::Encoding::ASCII_8BIT).freeze)).to eq("T\x00e\x00s\x00t\x00")
8
+ end
9
+ end
10
+
11
+ context '#decode_utf16le' do
12
+ it 'should convert a UTF string to ASCII' do
13
+ expect(Net::NTLM::EncodeUtil.decode_utf16le("T\x00e\x00s\x00t\x00".freeze)).to eq('Test')
14
+ end
15
+ end
16
+ end
@@ -1,33 +1,33 @@
1
- require 'spec_helper'
2
-
3
- describe Net::NTLM::FieldSet do
4
-
5
- fields = []
6
-
7
- it_behaves_like 'a fieldset', fields
8
-
9
- subject(:fieldset_class) do
10
- Class.new(Net::NTLM::FieldSet)
11
- end
12
-
13
- context 'an instance' do
14
- subject(:fieldset_object) do
15
- fieldset_class.string(:test_string, { :value => 'Test', :active => true, :size => 4})
16
- fieldset_class.string(:test_string2, { :value => 'Foo', :active => true, :size => 3})
17
- fieldset_class.new
18
- end
19
-
20
- it 'should serialize all the fields' do
21
- expect(fieldset_object.serialize).to eq('TestFoo')
22
- end
23
-
24
- it 'should parse a string across the fields' do
25
- fieldset_object.parse('FooBarBaz')
26
- expect(fieldset_object.serialize).to eq('FooBarB')
27
- end
28
-
29
- it 'should return an aggregate size of all the fields' do
30
- expect(fieldset_object.size).to eq(7)
31
- end
32
- end
33
- end
1
+ require 'spec_helper'
2
+
3
+ describe Net::NTLM::FieldSet do
4
+
5
+ fields = []
6
+
7
+ it_behaves_like 'a fieldset', fields
8
+
9
+ subject(:fieldset_class) do
10
+ Class.new(Net::NTLM::FieldSet)
11
+ end
12
+
13
+ context 'an instance' do
14
+ subject(:fieldset_object) do
15
+ fieldset_class.string(:test_string, { :value => 'Test', :active => true, :size => 4})
16
+ fieldset_class.string(:test_string2, { :value => 'Foo', :active => true, :size => 3})
17
+ fieldset_class.new
18
+ end
19
+
20
+ it 'should serialize all the fields' do
21
+ expect(fieldset_object.serialize).to eq('TestFoo')
22
+ end
23
+
24
+ it 'should parse a string across the fields' do
25
+ fieldset_object.parse('FooBarBaz')
26
+ expect(fieldset_object.serialize).to eq('FooBarB')
27
+ end
28
+
29
+ it 'should return an aggregate size of all the fields' do
30
+ expect(fieldset_object.size).to eq(7)
31
+ end
32
+ end
33
+ end
@@ -1,34 +1,34 @@
1
- require 'spec_helper'
2
-
3
- describe Net::NTLM::Field do
4
-
5
- it_behaves_like 'a field', 'Foo', false
6
-
7
- context 'with no size specified' do
8
- let (:field_without_size) { Net::NTLM::Field.new({ :value => 'Foo', :active => true }) }
9
- it 'should set size to 0 if not active' do
10
- expect(field_without_size.size).to eq(0)
11
- end
12
-
13
- it 'should return 0 if active but no size specified' do
14
- field_without_size.active = true
15
- expect(field_without_size.size).to eq(0)
16
- end
17
- end
18
-
19
- context 'with a size specified' do
20
- let (:field_with_size) { Net::NTLM::Field.new({ :value => 'Foo', :active => true, :size => 100 }) }
21
-
22
- it 'should return the size provided in the initialize options if active' do
23
- expect(field_with_size.size).to eq(100)
24
- end
25
-
26
- it 'should still return 0 if not active' do
27
- field_with_size.active = false
28
- expect(field_with_size.size).to eq(0)
29
- end
30
- end
31
-
32
-
33
-
34
- end
1
+ require 'spec_helper'
2
+
3
+ describe Net::NTLM::Field do
4
+
5
+ it_behaves_like 'a field', 'Foo', false
6
+
7
+ context 'with no size specified' do
8
+ let (:field_without_size) { Net::NTLM::Field.new({ :value => 'Foo', :active => true }) }
9
+ it 'should set size to 0 if not active' do
10
+ expect(field_without_size.size).to eq(0)
11
+ end
12
+
13
+ it 'should return 0 if active but no size specified' do
14
+ field_without_size.active = true
15
+ expect(field_without_size.size).to eq(0)
16
+ end
17
+ end
18
+
19
+ context 'with a size specified' do
20
+ let (:field_with_size) { Net::NTLM::Field.new({ :value => 'Foo', :active => true, :size => 100 }) }
21
+
22
+ it 'should return the size provided in the initialize options if active' do
23
+ expect(field_with_size.size).to eq(100)
24
+ end
25
+
26
+ it 'should still return 0 if not active' do
27
+ field_with_size.active = false
28
+ expect(field_with_size.size).to eq(0)
29
+ end
30
+ end
31
+
32
+
33
+
34
+ end