http_redirect_test 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'http_redirect_test'
4
+ require 'optparse'
5
+
6
+ OptionParser.new do |opts|
7
+ opts.banner = "Usage: http_redirect_test command project_name"
8
+
9
+ opts.on("g", "generate DIR", "The directory your projects are located, defaults to ~/code") do |d|
10
+ @dir = d
11
+ end
12
+
13
+ opts.on_tail("-h", "--help", "Show this help message.") do
14
+ puts opts;
15
+ exit
16
+ end
17
+ end.parse!
@@ -0,0 +1,5 @@
1
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'mocha'
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_redirect_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 2
10
+ version: 0.1.2
5
11
  platform: ruby
6
12
  authors:
7
13
  - Matt House
@@ -9,12 +15,27 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2009-12-04 00:00:00 +00:00
18
+ date: 2010-10-21 00:00:00 +01:00
13
19
  default_executable:
14
- dependencies: []
15
-
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: mocha
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 49
30
+ segments:
31
+ - 0
32
+ - 9
33
+ - 5
34
+ version: 0.9.5
35
+ type: :development
36
+ version_requirements: *id001
16
37
  description:
17
- email: matt@theshadowaspect.com
38
+ email: matt@eightbitraptor.com
18
39
  executables: []
19
40
 
20
41
  extensions: []
@@ -22,12 +43,11 @@ extensions: []
22
43
  extra_rdoc_files: []
23
44
 
24
45
  files:
25
- - lib/http_redirect_test/http_redirect_test.rb
26
- - lib/http_redirect_test/redirect_check.rb
27
- - lib/http_redirect_test/resource_path.rb
46
+ - bin/http_redirect_test.rb
28
47
  - lib/http_redirect_test.rb
48
+ - test/test_helper.rb
29
49
  has_rdoc: true
30
- homepage: http://github.com/shadowaspect/http_redirect_test
50
+ homepage: http://github.com/eightbitraptor/http_redirect_test
31
51
  licenses: []
32
52
 
33
53
  post_install_message:
@@ -36,23 +56,29 @@ rdoc_options: []
36
56
  require_paths:
37
57
  - lib
38
58
  required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
39
60
  requirements:
40
61
  - - ">="
41
62
  - !ruby/object:Gem::Version
63
+ hash: 3
64
+ segments:
65
+ - 0
42
66
  version: "0"
43
- version:
44
67
  required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
45
69
  requirements:
46
70
  - - ">="
47
71
  - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
48
75
  version: "0"
49
- version:
50
76
  requirements: []
51
77
 
52
78
  rubyforge_project:
53
- rubygems_version: 1.3.5
79
+ rubygems_version: 1.3.7
54
80
  signing_key:
55
81
  specification_version: 3
56
- summary: A subclass of Test::Unit::TestCase to allow for http redirect testing, packaged from a gist by Patrick Reagan of Viget Labs
82
+ summary: Test Apache behavior using Test::Unit, based on a gist by Patrick Reagan of Viget Labs
57
83
  test_files: []
58
84
 
@@ -1,70 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "redirect_check")
2
- require File.join(File.dirname(__FILE__), "resource_path")
3
- require 'test/unit'
4
-
5
- class HTTPRedirectTest < Test::Unit::TestCase
6
- # permanent can be overriden in 2 ways, with a call to self.permanent to set globally. Or via the options array for each redirect call
7
- @permanent=nil
8
-
9
- def default_test; end # placeholder to stop Test::Unit from complaining
10
-
11
- class <<self
12
- def domain=(domain)
13
- @domain = domain
14
- end
15
-
16
- def domain
17
- @domain
18
- end
19
-
20
- def permanent=(permanent)
21
- @permanent=permanent
22
- end
23
-
24
- def permanent?
25
- @permanent.nil? ? false : true
26
- end
27
-
28
- def should_not_redirect(path)
29
- class_eval <<-CODE
30
- def test_#{name_for(path)}_should_not_redirect
31
- check = RedirectCheck.new(self.class.domain, '#{path}')
32
- assert_equal false, check.redirected?, "#{path} is redirecting"
33
- assert_equal true, check.success?, "#{path} is not a success response"
34
- end
35
- CODE
36
- end
37
-
38
- def name_for(path)
39
- name = path.gsub(/\W+/, '_')
40
- name.gsub!(/^_+/, '')
41
- name.gsub!(/_+$/, '')
42
-
43
- name = 'root' if name == ''
44
-
45
- name
46
- end
47
-
48
- def should_redirect(source, options)
49
- source_path = ResourcePath.new(source, :param => 'subdir').to_s
50
- destination_path = ResourcePath.new(options[:to], :param => 'subdir').to_s
51
-
52
- @permanent = options.fetch(:permanent, true) if @permanent.nil?
53
-
54
- class_eval <<-CODE
55
- def test_#{name_for(source_path)}_should_redirect_to_#{name_for(destination_path)}
56
- redirection = RedirectCheck.new(self.class.domain, '#{source_path}', '#{destination_path}')
57
- assert_equal true, redirection.redirected?, "'#{source_path}' is not redirecting"
58
- assert_equal '#{destination_path}', redirection.redirected_path,
59
- "'#{source_path}' is not redirecting to '#{destination_path}'"
60
-
61
- if #{@permanent}
62
- assert_equal true, redirection.permanent_redirect?,
63
- "The redirection from '#{source_path}' to '#{destination_path}' doesn't appear to be a permanent redirect"
64
- end
65
- end
66
- CODE
67
- end
68
- end
69
-
70
- end
@@ -1,37 +0,0 @@
1
- require 'uri'
2
- require 'net/http'
3
-
4
- class RedirectCheck
5
- attr_reader :source_path, :destination_path
6
-
7
- def initialize(domain, source_path, destination_path = nil)
8
- @domain = domain
9
- @source_path = source_path.to_s
10
- @destination_path = destination_path.to_s
11
- end
12
-
13
- def uri
14
- URI.parse("http://#{@domain}#{source_path}")
15
- end
16
-
17
- def response
18
- @response ||= Net::HTTP.start(uri.host, uri.port) {|http| return http.head(uri.path) }
19
- end
20
-
21
- def success?
22
- response.is_a?(Net::HTTPOK)
23
- end
24
-
25
- def redirected?
26
- response.is_a?(Net::HTTPRedirection)
27
- end
28
-
29
- def permanent_redirect?
30
- redirected? && response.is_a?(Net::HTTPMovedPermanently)
31
- end
32
-
33
- def redirected_path
34
- response['location'].sub(/#{Regexp.escape("#{uri.scheme}://#{uri.host}")}/, '') if redirected?
35
- end
36
-
37
- end
@@ -1,18 +0,0 @@
1
- class ResourcePath
2
-
3
- attr_writer :param
4
-
5
- def initialize(path, options = {})
6
- @path = path
7
- @param = options[:param]
8
- end
9
-
10
- def param
11
- @param ||= (0...8).map{65.+(rand(25)).chr}.join
12
- end
13
-
14
- def to_s
15
- @path.gsub('*', param)
16
- end
17
-
18
- end