summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Kemp <steve@steve.org.uk>2013-04-23 10:23:17 +0100
committerSteve Kemp <steve@steve.org.uk>2013-04-23 10:23:17 +0100
commit0e2880e32d622a7a44350bac175d156535338bd6 (patch)
tree0f2c0110ce4f8df475c35938881596bd77f41f7c
parent5dc1462a4ce536cacf9fc380b1022d1c48d12bc2 (diff)
Updated the parser to allow the test to specify whether HTTP-redirects
are followed. Added test-cases to match.
-rw-r--r--lib/custodian/protocoltest/http.rb35
-rwxr-xr-xt/test-custodian-parser.rb37
2 files changed, 68 insertions, 4 deletions
diff --git a/lib/custodian/protocoltest/http.rb b/lib/custodian/protocoltest/http.rb
index 11a16d5..0450753 100644
--- a/lib/custodian/protocoltest/http.rb
+++ b/lib/custodian/protocoltest/http.rb
@@ -59,6 +59,12 @@ module Custodian
#
+ # Will we follow redirects?
+ #
+ @redirect = true
+
+
+ #
# Ensure we've got a HTTP/HTTPS url.
#
if ( @url !~ /^https?:/ )
@@ -119,12 +125,17 @@ module Custodian
@expected_content = nil
end
+ #
+ # Do we follow redirects?
+ #
+ if ( line =~ /not following redirects?/i )
+ @redirect = false
+ end
end
#
- # Get the right type of this object, based on the
- # URL
+ # Get the right type of this object, based on the URL
#
def get_type
if ( @url =~ /^https:/ )
@@ -136,6 +147,15 @@ module Custodian
end
end
+
+ #
+ # Do we follow redirects?
+ #
+ def follow_redirects?
+ @redirect
+ end
+
+
#
# Allow this test to be serialized.
#
@@ -167,8 +187,15 @@ module Custodian
timeout( 20 ) do
begin
c = Curl::Easy.new(@url)
- c.follow_location = true
- c.max_redirects = 10
+
+ #
+ # Should we follow redirections?
+ #
+ if ( follow_redirects? )
+ c.follow_location = true
+ c.max_redirects = 10
+ end
+
c.ssl_verify_host = false
c.ssl_verify_peer = false
c.timeout = 20
diff --git a/t/test-custodian-parser.rb b/t/test-custodian-parser.rb
index 811cbb5..f982b10 100755
--- a/t/test-custodian-parser.rb
+++ b/t/test-custodian-parser.rb
@@ -275,6 +275,43 @@ EOF
end
+ #
+ # Test that the parser works for HTTP-redirection
+ #
+ def test_http_redirection
+
+ #
+ # test data
+ #
+ data = {
+ "http://example must run http." => true,
+ "http://example must run http with status 200." => true,
+ "http://example must run http with content 'bar'." => true,
+ "http://example must run http following redirects." => true,
+ "http://example must run http not following redirects." => false,
+ "http://example must run http not following redirect." => false,
+ }
+
+ data.each do |str,follow|
+ assert_nothing_raised do
+
+ #
+ # Create the new parser
+ #
+ obj = Custodian::TestFactory.create( str )
+
+ assert(obj)
+
+ if ( follow )
+ assert( obj.follow_redirects? )
+ else
+ assert( ! obj.follow_redirects? )
+ end
+ end
+ end
+ end
+
+
#
# Test that the text we're going to use in alerters is present.