From e4040942ab55689f88625c8a048d83d84627d6e0 Mon Sep 17 00:00:00 2001 From: Steve Kemp Date: Tue, 28 Mar 2017 13:14:10 +0300 Subject: Support HTTP BASIC-AUthentication. Supply this like so: http://example.com/ must run http with auth 'username:passw0rd' with status 200 otherwise 'failure' --- lib/custodian/protocoltest/http.rb | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'lib/custodian') diff --git a/lib/custodian/protocoltest/http.rb b/lib/custodian/protocoltest/http.rb index 89d8f18..34e4b6e 100644 --- a/lib/custodian/protocoltest/http.rb +++ b/lib/custodian/protocoltest/http.rb @@ -63,6 +63,11 @@ module Custodian # @redirect = true + # + # No basic-authentication by default + # + @username = nil + @password = nil # # Ensure we've got a HTTP/HTTPS url. @@ -98,6 +103,18 @@ module Custodian end + # + # Look for username & password + # + if line =~ /with auth '([^']+)'/ + data = $1.dup + @username, @password = data.split( ":" ) + end + if line =~ /with auth "([^"]+)"/ + data = $1.dup + @username, @password = data.split( ":" ) + end + # # Expected status # @@ -180,6 +197,24 @@ module Custodian @cache_busting end + # + # Do we have basic auth? + # + def basic_auth? + ( @username.nil? == false ) && ( @password.nil? == false ) + end + + # + # Get the username/password for basic-auth + # + def basic_auth_username + @username + end + + def basic_auth_password + @password + end + # # Allow this test to be serialized. # @@ -239,6 +274,15 @@ module Custodian c.resolve_mode = resolve_mode + # + # Should we use HTTP basic-auth? + # + if basic_auth? + c.http_auth_types = :basic + c.username = basic_auth_username + c.password = basic_auth_password + end + # # Should we follow redirections? # -- cgit v1.2.1