diff --git a/Gemfile b/Gemfile index 5f122dd5..fbb71aaa 100644 --- a/Gemfile +++ b/Gemfile @@ -12,6 +12,11 @@ group :development do gem 'test-unit' gem 'ci_reporter' gem 'simplecov-rcov' + gem 'pry' + gem 'rack' + gem 'rubysspi' + gem 'rubyntlm' + gem 'rack-ntlm-test-service' end gemspec diff --git a/test/test_auth.rb b/test/test_auth.rb index f53dad53..dad79879 100644 --- a/test/test_auth.rb +++ b/test/test_auth.rb @@ -1,5 +1,9 @@ require File.expand_path('helper', File.dirname(__FILE__)) require 'digest/md5' +require 'rack' +require 'rack/lint' +require 'rack/showexceptions' +require 'rack-ntlm' class TestAuth < Test::Unit::TestCase include Helper @@ -34,6 +38,22 @@ def setup_server '/digest_sess_auth', WEBrick::HTTPServlet::ProcHandler.new(method(:do_digest_sess_auth).to_proc) ) + # NTLM endpoint + ntlm_handler = Rack::Handler::WEBrick.new(@server, + Rack::Builder.app do + use Rack::ShowExceptions + use Rack::ContentLength + use Rack::Ntlm, {:uri_pattern => /.*/, :auth => {:username => "admin", :password => "admin"}} + run lambda { |env| [200, { 'Content-Type' => 'text/html' }, ['ntlm_auth OK']] } + end + ) + @server.mount( + '/ntlm_auth', + WEBrick::HTTPServlet::ProcHandler.new(Proc.new do |req, res| + ntlm_handler.service(req, res) + end) + ) + # Htpasswd htpasswd = File.join(File.dirname(__FILE__), 'htpasswd') htpasswd_userdb = WEBrick::HTTPAuth::Htpasswd.new(htpasswd) htdigest = File.join(File.dirname(__FILE__), 'htdigest') @@ -95,6 +115,13 @@ def do_digest_sess_auth(req, res) res.body = 'digest_sess_auth OK' + req.query_string.to_s end + def test_ntlm_auth + c = HTTPClient.new + c.set_auth("http://localhost:#{serverport}/ntlm_auth", 'admin', 'admin') + assert_equal('ntlm_auth OK', c.get_content("http://localhost:#{serverport}/ntlm_auth")) + puts c.inspect + end + def test_basic_auth c = HTTPClient.new c.set_auth("http://localhost:#{serverport}/", 'admin', 'admin')