rubyntlm 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -3
  3. data/.rspec +2 -2
  4. data/.travis.yml +10 -11
  5. data/CHANGELOG.md +5 -5
  6. data/Gemfile +3 -3
  7. data/LICENSE +19 -19
  8. data/Rakefile +22 -22
  9. data/lib/net/ntlm.rb +266 -263
  10. data/lib/net/ntlm/blob.rb +28 -28
  11. data/lib/net/ntlm/channel_binding.rb +65 -0
  12. data/lib/net/ntlm/client.rb +65 -65
  13. data/lib/net/ntlm/client/session.rb +237 -223
  14. data/lib/net/ntlm/encode_util.rb +49 -49
  15. data/lib/net/ntlm/exceptions.rb +14 -0
  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 -0
  29. data/lib/net/ntlm/version.rb +11 -11
  30. data/rubyntlm.gemspec +28 -28
  31. data/spec/lib/net/ntlm/blob_spec.rb +16 -16
  32. data/spec/lib/net/ntlm/channel_binding_spec.rb +17 -0
  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 -0
  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 -0
  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 +12 -3
@@ -1,11 +1,11 @@
1
- module Net
2
- module NTLM
3
- # @private
4
- module VERSION
5
- MAJOR = 0
6
- MINOR = 5
7
- TINY = 3
8
- STRING = [MAJOR, MINOR, TINY].join('.')
9
- end
10
- end
11
- end
1
+ module Net
2
+ module NTLM
3
+ # @private
4
+ module VERSION
5
+ MAJOR = 0
6
+ MINOR = 6
7
+ TINY = 0
8
+ STRING = [MAJOR, MINOR, TINY].join('.')
9
+ end
10
+ end
11
+ end
@@ -1,28 +1,28 @@
1
- require File.join(File.dirname(__FILE__), 'lib', 'net', 'ntlm', 'version')
2
-
3
- Gem::Specification.new do |s|
4
- s.platform = Gem::Platform::RUBY
5
- s.name = 'rubyntlm'
6
- s.version = Net::NTLM::VERSION::STRING
7
- s.summary = 'Ruby/NTLM library.'
8
- s.description = 'Ruby/NTLM provides message creator and parser for the NTLM authentication.'
9
-
10
- s.authors = ['Kohei Kajimoto','Paul Morton']
11
- s.email = ['koheik@gmail.com','paul.e.morton@gmail.com']
12
- s.homepage = 'https://github.com/winrb/rubyntlm'
13
-
14
-
15
- s.files = `git ls-files`.split($/)
16
- s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- s.test_files = s.files.grep(%r{^(test|spec|features)/})
18
- s.require_paths = ["lib"]
19
-
20
- s.required_ruby_version = '>= 1.8.7'
21
-
22
- s.license = 'MIT'
23
-
24
- s.add_development_dependency "pry"
25
- s.add_development_dependency "rake"
26
- s.add_development_dependency "rspec", ">= 2.11"
27
- s.add_development_dependency "simplecov"
28
- end
1
+ require File.join(File.dirname(__FILE__), 'lib', 'net', 'ntlm', 'version')
2
+
3
+ Gem::Specification.new do |s|
4
+ s.platform = Gem::Platform::RUBY
5
+ s.name = 'rubyntlm'
6
+ s.version = Net::NTLM::VERSION::STRING
7
+ s.summary = 'Ruby/NTLM library.'
8
+ s.description = 'Ruby/NTLM provides message creator and parser for the NTLM authentication.'
9
+
10
+ s.authors = ['Kohei Kajimoto','Paul Morton']
11
+ s.email = ['koheik@gmail.com','paul.e.morton@gmail.com']
12
+ s.homepage = 'https://github.com/winrb/rubyntlm'
13
+
14
+
15
+ s.files = `git ls-files`.split($/)
16
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
18
+ s.require_paths = ["lib"]
19
+
20
+ s.required_ruby_version = '>= 1.8.7'
21
+
22
+ s.license = 'MIT'
23
+
24
+ s.add_development_dependency "pry"
25
+ s.add_development_dependency "rake"
26
+ s.add_development_dependency "rspec", ">= 2.11"
27
+ s.add_development_dependency "simplecov"
28
+ end
@@ -1,16 +1,16 @@
1
- require 'spec_helper'
2
-
3
- describe Net::NTLM::Blob do
4
-
5
- fields = [
6
- { :name => :blob_signature, :class => Net::NTLM::Int32LE, :value => 257, :active => true },
7
- { :name => :reserved, :class => Net::NTLM::Int32LE, :value => 0, :active => true },
8
- { :name => :timestamp, :class => Net::NTLM::Int64LE, :value => 0, :active => true },
9
- { :name => :challenge, :class => Net::NTLM::String, :value => '', :active => true },
10
- { :name => :unknown1, :class => Net::NTLM::Int32LE, :value => 0, :active => true },
11
- { :name => :target_info, :class => Net::NTLM::String, :value => '', :active => true },
12
- { :name => :unknown2, :class => Net::NTLM::Int32LE, :value => 0, :active => true },
13
- ]
14
-
15
- it_behaves_like 'a fieldset', fields
16
- end
1
+ require 'spec_helper'
2
+
3
+ describe Net::NTLM::Blob do
4
+
5
+ fields = [
6
+ { :name => :blob_signature, :class => Net::NTLM::Int32LE, :value => 257, :active => true },
7
+ { :name => :reserved, :class => Net::NTLM::Int32LE, :value => 0, :active => true },
8
+ { :name => :timestamp, :class => Net::NTLM::Int64LE, :value => 0, :active => true },
9
+ { :name => :challenge, :class => Net::NTLM::String, :value => '', :active => true },
10
+ { :name => :unknown1, :class => Net::NTLM::Int32LE, :value => 0, :active => true },
11
+ { :name => :target_info, :class => Net::NTLM::String, :value => '', :active => true },
12
+ { :name => :unknown2, :class => Net::NTLM::Int32LE, :value => 0, :active => true },
13
+ ]
14
+
15
+ it_behaves_like 'a fieldset', fields
16
+ end
@@ -0,0 +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,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)).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')).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")).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')).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")).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