fakeweb 1.2.5 → 1.2.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/CHANGELOG +16 -0
- data/Rakefile +49 -55
- data/VERSION +1 -0
- data/fakeweb.gemspec +88 -0
- data/lib/fake_web.rb +7 -3
- data/lib/fake_web/registry.rb +46 -22
- data/lib/fake_web/utility.rb +22 -0
- data/test/test_deprecations.rb +7 -7
- data/test/test_fake_web.rb +21 -0
- data/test/test_helper.rb +2 -0
- data/test/test_precedence.rb +28 -0
- data/test/test_regexes.rb +59 -10
- data/test/test_response_headers.rb +7 -1
- data/test/test_utility.rb +21 -0
- metadata +7 -17
data/CHANGELOG
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
fakeweb (1.2.6)
|
2
|
+
|
3
|
+
* fix that query params in a regex would have to be sorted for it to ever match
|
4
|
+
a request URI [Chris Kampmeier, Ben Hall]
|
5
|
+
|
6
|
+
* improve regex handling so registration with an explicit port (like
|
7
|
+
/example.com:80/) matches a request that uses an implied port
|
8
|
+
(like "http://example.com/") [Chris Kampmeier, Dan Dofter]
|
9
|
+
|
10
|
+
* refactor URI registry to reduce duplication; now about twice as fast at
|
11
|
+
handling requests [Chris Kampmeier]
|
12
|
+
|
13
|
+
* Add FakeWeb::VERSION so you can programmatically determine what version of
|
14
|
+
FakeWeb is loaded without using RubyGems [Chris Kampmeier, Chris Wanstrath]
|
15
|
+
|
16
|
+
|
1
17
|
fakeweb (1.2.5)
|
2
18
|
|
3
19
|
* fix handling of userinfo strings that contain percent-encoded unsafe
|
data/Rakefile
CHANGED
@@ -1,76 +1,70 @@
|
|
1
1
|
puts "Using ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
|
-
require 'rake
|
5
|
-
|
4
|
+
require 'rake'
|
5
|
+
|
6
6
|
begin
|
7
|
-
require '
|
7
|
+
require 'jeweler'
|
8
|
+
Jeweler::Tasks.new do |gem|
|
9
|
+
gem.name = "fakeweb"
|
10
|
+
gem.rubyforge_project = "fakeweb"
|
11
|
+
gem.summary = "A tool for faking responses to HTTP requests"
|
12
|
+
gem.description = "FakeWeb is a helper for faking web requests in Ruby. It works at a global level, without modifying code or writing extensive stubs."
|
13
|
+
gem.email = ["chris@kampers.net", "romeda@gmail.com"]
|
14
|
+
gem.authors = ["Chris Kampmeier", "Blaine Cook"]
|
15
|
+
gem.homepage = "http://github.com/chrisk/fakeweb"
|
16
|
+
gem.add_development_dependency "mocha", ">= 0.9.5"
|
17
|
+
end
|
18
|
+
Jeweler::GemcutterTasks.new
|
19
|
+
Jeweler::RubyforgeTasks.new do |rubyforge|
|
20
|
+
rubyforge.doc_task = "rdoc"
|
21
|
+
rubyforge.remote_doc_path = ""
|
22
|
+
end
|
8
23
|
rescue LoadError
|
9
|
-
puts "
|
10
|
-
puts "You can try upgrading with `sudo gem install rdoc`.\n\n"
|
11
|
-
raise
|
24
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
12
25
|
end
|
13
26
|
|
14
|
-
task :default => :test
|
15
27
|
|
16
|
-
|
17
|
-
Rake::TestTask.new
|
18
|
-
test.test_files = ["test/**/*.rb"]
|
28
|
+
require 'rake/testtask'
|
29
|
+
Rake::TestTask.new(:test) do |test|
|
30
|
+
test.test_files = FileList["test/**/*.rb"].exclude("test/test_helper.rb")
|
19
31
|
test.verbose = false
|
32
|
+
test.warning = true
|
20
33
|
end
|
21
34
|
|
22
|
-
|
23
|
-
RDoc::Task.new do |rdoc|
|
24
|
-
rdoc.main = "README.rdoc"
|
25
|
-
rdoc.rdoc_dir = "doc"
|
26
|
-
rdoc.rdoc_files.include("README.rdoc", "CHANGELOG", "LICENSE.txt", "lib/*.rb")
|
27
|
-
rdoc.title = "FakeWeb API Documentation"
|
28
|
-
rdoc.options << '--line-numbers' << '--charset' << 'utf-8'
|
29
|
-
end
|
30
|
-
|
31
|
-
desc %{Update ".manifest" with the latest list of project filenames. Respect\
|
32
|
-
.gitignore by excluding everything that git ignores. Update `files` and\
|
33
|
-
`test_files` arrays in "*.gemspec" file if it's present.}
|
34
|
-
task :manifest do
|
35
|
-
list = Dir['**/*'].sort
|
36
|
-
spec_file = Dir['*.gemspec'].first
|
37
|
-
list -= [spec_file] if spec_file
|
38
|
-
|
39
|
-
File.read('.gitignore').each_line do |glob|
|
40
|
-
glob = glob.chomp.sub(/^\//, '')
|
41
|
-
list -= Dir[glob]
|
42
|
-
list -= Dir["#{glob}/**/*"] if File.directory?(glob) and !File.symlink?(glob)
|
43
|
-
puts "excluding #{glob}"
|
44
|
-
end
|
45
|
-
|
46
|
-
if spec_file
|
47
|
-
spec = File.read spec_file
|
48
|
-
spec.gsub!(/^(\s* s.(test_)?files \s* = \s* )( \[ [^\]]* \] | %w\( [^)]* \) )/mx) do
|
49
|
-
assignment = $1
|
50
|
-
bunch = $2 ? list.grep(/^test\//) : list
|
51
|
-
'%s%%w(%s)' % [assignment, bunch.join(' ')]
|
52
|
-
end
|
35
|
+
task :default => :test
|
53
36
|
|
54
|
-
File.open(spec_file, 'w') {|f| f << spec }
|
55
|
-
end
|
56
|
-
File.open('.manifest', 'w') {|f| f << list.join("\n") }
|
57
|
-
end
|
58
37
|
|
59
|
-
|
60
|
-
puts "rcov support disabled (running under JRuby)."
|
61
|
-
elsif RUBY_VERSION =~ /^1\.9/
|
62
|
-
puts "rcov support disabled (running under Ruby 1.9)"
|
63
|
-
else
|
38
|
+
begin
|
64
39
|
require 'rcov/rcovtask'
|
65
40
|
Rcov::RcovTask.new do |t|
|
66
|
-
t.test_files = FileList[
|
41
|
+
t.test_files = FileList["test/**/*.rb"].exclude("test/test_helper.rb")
|
67
42
|
t.rcov_opts << "--sort coverage"
|
68
43
|
t.rcov_opts << "--exclude gems"
|
44
|
+
t.warning = true
|
45
|
+
end
|
46
|
+
rescue
|
47
|
+
print "rcov support disabled "
|
48
|
+
if RUBY_PLATFORM =~ /java/
|
49
|
+
puts "(running under JRuby)"
|
50
|
+
elsif RUBY_VERSION =~ /^1\.9/
|
51
|
+
puts "(running under Ruby 1.9)"
|
52
|
+
else
|
53
|
+
puts "(install RCov to enable the `rcov` task)"
|
69
54
|
end
|
70
55
|
end
|
71
56
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
57
|
+
|
58
|
+
begin
|
59
|
+
require 'rdoc/task'
|
60
|
+
Rake::RDocTask.new do |rdoc|
|
61
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
62
|
+
rdoc.main = "README.rdoc"
|
63
|
+
rdoc.rdoc_files.include("README.rdoc", "CHANGELOG", "LICENSE.txt", "lib/*.rb")
|
64
|
+
rdoc.title = "FakeWeb #{version} API Documentation"
|
65
|
+
rdoc.options << '--line-numbers' << '--charset' << 'utf-8'
|
66
|
+
end
|
67
|
+
rescue LoadError
|
68
|
+
puts "\nIt looks like you're using an old version of RDoc, but FakeWeb requires a newer one."
|
69
|
+
puts "You can try upgrading with `sudo gem install rdoc`.\n\n"
|
76
70
|
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.2.6
|
data/fakeweb.gemspec
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{fakeweb}
|
8
|
+
s.version = "1.2.6"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Chris Kampmeier", "Blaine Cook"]
|
12
|
+
s.date = %q{2009-08-31}
|
13
|
+
s.description = %q{FakeWeb is a helper for faking web requests in Ruby. It works at a global level, without modifying code or writing extensive stubs.}
|
14
|
+
s.email = ["chris@kampers.net", "romeda@gmail.com"]
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".gitignore",
|
21
|
+
"CHANGELOG",
|
22
|
+
"LICENSE.txt",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"fakeweb.gemspec",
|
27
|
+
"lib/fake_web.rb",
|
28
|
+
"lib/fake_web/ext/net_http.rb",
|
29
|
+
"lib/fake_web/registry.rb",
|
30
|
+
"lib/fake_web/responder.rb",
|
31
|
+
"lib/fake_web/response.rb",
|
32
|
+
"lib/fake_web/stub_socket.rb",
|
33
|
+
"lib/fake_web/utility.rb",
|
34
|
+
"lib/fakeweb.rb",
|
35
|
+
"test/fixtures/google_response_from_curl",
|
36
|
+
"test/fixtures/google_response_with_transfer_encoding",
|
37
|
+
"test/fixtures/google_response_without_transfer_encoding",
|
38
|
+
"test/fixtures/test_example.txt",
|
39
|
+
"test/fixtures/test_txt_file",
|
40
|
+
"test/test_allow_net_connect.rb",
|
41
|
+
"test/test_deprecations.rb",
|
42
|
+
"test/test_fake_authentication.rb",
|
43
|
+
"test/test_fake_web.rb",
|
44
|
+
"test/test_fake_web_open_uri.rb",
|
45
|
+
"test/test_helper.rb",
|
46
|
+
"test/test_missing_open_uri.rb",
|
47
|
+
"test/test_precedence.rb",
|
48
|
+
"test/test_query_string.rb",
|
49
|
+
"test/test_regexes.rb",
|
50
|
+
"test/test_response_headers.rb",
|
51
|
+
"test/test_trailing_slashes.rb",
|
52
|
+
"test/test_utility.rb"
|
53
|
+
]
|
54
|
+
s.homepage = %q{http://github.com/chrisk/fakeweb}
|
55
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
56
|
+
s.require_paths = ["lib"]
|
57
|
+
s.rubyforge_project = %q{fakeweb}
|
58
|
+
s.rubygems_version = %q{1.3.5}
|
59
|
+
s.summary = %q{A tool for faking responses to HTTP requests}
|
60
|
+
s.test_files = [
|
61
|
+
"test/test_allow_net_connect.rb",
|
62
|
+
"test/test_deprecations.rb",
|
63
|
+
"test/test_fake_authentication.rb",
|
64
|
+
"test/test_fake_web.rb",
|
65
|
+
"test/test_fake_web_open_uri.rb",
|
66
|
+
"test/test_helper.rb",
|
67
|
+
"test/test_missing_open_uri.rb",
|
68
|
+
"test/test_precedence.rb",
|
69
|
+
"test/test_query_string.rb",
|
70
|
+
"test/test_regexes.rb",
|
71
|
+
"test/test_response_headers.rb",
|
72
|
+
"test/test_trailing_slashes.rb",
|
73
|
+
"test/test_utility.rb"
|
74
|
+
]
|
75
|
+
|
76
|
+
if s.respond_to? :specification_version then
|
77
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
78
|
+
s.specification_version = 3
|
79
|
+
|
80
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
81
|
+
s.add_development_dependency(%q<mocha>, [">= 0.9.5"])
|
82
|
+
else
|
83
|
+
s.add_dependency(%q<mocha>, [">= 0.9.5"])
|
84
|
+
end
|
85
|
+
else
|
86
|
+
s.add_dependency(%q<mocha>, [">= 0.9.5"])
|
87
|
+
end
|
88
|
+
end
|
data/lib/fake_web.rb
CHANGED
@@ -9,6 +9,9 @@ require 'fake_web/utility'
|
|
9
9
|
|
10
10
|
module FakeWeb
|
11
11
|
|
12
|
+
# Returns the version string for the copy of FakeWeb you have loaded.
|
13
|
+
VERSION = File.read(File.join(File.dirname(__FILE__), "..", "VERSION")).strip
|
14
|
+
|
12
15
|
# Resets the FakeWeb Registry. This will force all subsequent web requests to
|
13
16
|
# behave as real requests.
|
14
17
|
def self.clean_registry
|
@@ -47,9 +50,10 @@ module FakeWeb
|
|
47
50
|
class NetConnectNotAllowedError < StandardError; end;
|
48
51
|
|
49
52
|
# This exception is raised if a Net::HTTP request matches more than one of
|
50
|
-
# the
|
51
|
-
# disambiguate
|
52
|
-
|
53
|
+
# the stubs you've registered. To fix the problem, remove a duplicate
|
54
|
+
# registration or disambiguate any regular expressions by making them more
|
55
|
+
# specific.
|
56
|
+
class MultipleMatchingURIsError < StandardError; end;
|
53
57
|
|
54
58
|
# call-seq:
|
55
59
|
# FakeWeb.register_uri(method, uri, options)
|
data/lib/fake_web/registry.rb
CHANGED
@@ -19,7 +19,6 @@ module FakeWeb
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def registered_uri?(method, uri)
|
22
|
-
normalized_uri = normalize_uri(uri)
|
23
22
|
!responses_for(method, uri).empty?
|
24
23
|
end
|
25
24
|
|
@@ -45,39 +44,64 @@ module FakeWeb
|
|
45
44
|
def responses_for(method, uri)
|
46
45
|
uri = normalize_uri(uri)
|
47
46
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
uri_map_matches(method, uri)
|
54
|
-
elsif uri_map_matches(:any, uri)
|
55
|
-
uri_map_matches(:any, uri)
|
56
|
-
else
|
57
|
-
[]
|
58
|
-
end
|
47
|
+
uri_map_matches(method, uri, URI) ||
|
48
|
+
uri_map_matches(:any, uri, URI) ||
|
49
|
+
uri_map_matches(method, uri, Regexp) ||
|
50
|
+
uri_map_matches(:any, uri, Regexp) ||
|
51
|
+
[]
|
59
52
|
end
|
60
53
|
|
61
|
-
def uri_map_matches
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
def uri_map_matches(method, uri)
|
66
|
-
uri = normalize_uri(uri.to_s).to_s
|
67
|
-
uri = Utility.strip_default_port_from_uri(uri)
|
54
|
+
def uri_map_matches(method, uri, type_to_check = URI)
|
55
|
+
uris_to_check = variations_of_uri_as_strings(uri)
|
68
56
|
|
69
57
|
matches = uri_map.select { |registered_uri, method_hash|
|
70
|
-
registered_uri.is_a?(
|
58
|
+
registered_uri.is_a?(type_to_check) && method_hash.has_key?(method)
|
59
|
+
}.select { |registered_uri, method_hash|
|
60
|
+
if type_to_check == URI
|
61
|
+
uris_to_check.include?(registered_uri.to_s)
|
62
|
+
elsif type_to_check == Regexp
|
63
|
+
uris_to_check.any? { |u| u.match(registered_uri) }
|
64
|
+
end
|
71
65
|
}
|
72
66
|
|
73
67
|
if matches.size > 1
|
74
|
-
raise
|
75
|
-
"More than one
|
68
|
+
raise MultipleMatchingURIsError,
|
69
|
+
"More than one registered URI matched this request: #{method.to_s.upcase} #{uri}"
|
76
70
|
end
|
77
71
|
|
78
72
|
matches.map { |_, method_hash| method_hash[method] }.first
|
79
73
|
end
|
80
74
|
|
75
|
+
|
76
|
+
def variations_of_uri_as_strings(uri_object)
|
77
|
+
uris = []
|
78
|
+
normalized_uri = normalize_uri(uri_object)
|
79
|
+
|
80
|
+
# all orderings of query parameters
|
81
|
+
query = normalized_uri.query
|
82
|
+
if query.nil? || query.empty?
|
83
|
+
uris << normalized_uri
|
84
|
+
else
|
85
|
+
FakeWeb::Utility.simple_array_permutation(query.split('&')) do |p|
|
86
|
+
current_permutation = normalized_uri.dup
|
87
|
+
current_permutation.query = p.join('&')
|
88
|
+
uris << current_permutation
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
uri_strings = uris.map { |uri| uri.to_s }
|
93
|
+
|
94
|
+
# including and omitting the default port
|
95
|
+
if normalized_uri.default_port == normalized_uri.port
|
96
|
+
uri_strings += uris.map { |uri|
|
97
|
+
uri.to_s.sub(/#{Regexp.escape(normalized_uri.request_uri)}$/,
|
98
|
+
":#{normalized_uri.port}#{normalized_uri.request_uri}")
|
99
|
+
}
|
100
|
+
end
|
101
|
+
|
102
|
+
uri_strings
|
103
|
+
end
|
104
|
+
|
81
105
|
def normalize_uri(uri)
|
82
106
|
return uri if uri.is_a?(Regexp)
|
83
107
|
normalized_uri =
|
data/lib/fake_web/utility.rb
CHANGED
@@ -18,5 +18,27 @@ module FakeWeb
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
# Array#permutation wrapper for 1.8.6-compatibility. It only supports the
|
22
|
+
# simple case that returns all permutations (so it doesn't take a numeric
|
23
|
+
# argument).
|
24
|
+
def self.simple_array_permutation(array, &block)
|
25
|
+
# use native implementation if it exists
|
26
|
+
return array.permutation(&block) if array.respond_to?(:permutation)
|
27
|
+
|
28
|
+
yield array if array.length <= 1
|
29
|
+
|
30
|
+
array.length.times do |i|
|
31
|
+
rest = array.dup
|
32
|
+
picked = rest.delete_at(i)
|
33
|
+
next if rest.empty?
|
34
|
+
|
35
|
+
simple_array_permutation(rest) do |part_of_rest|
|
36
|
+
yield [picked] + part_of_rest
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
array
|
41
|
+
end
|
42
|
+
|
21
43
|
end
|
22
44
|
end
|
data/test/test_deprecations.rb
CHANGED
@@ -6,49 +6,49 @@ class TestDeprecations < Test::Unit::TestCase
|
|
6
6
|
warning = capture_stderr do
|
7
7
|
FakeWeb.register_uri("http://example.com", :body => "test")
|
8
8
|
end
|
9
|
-
assert_match
|
9
|
+
assert_match %r(deprecation warning: fakeweb)i, warning
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_registered_uri_without_method_argument_prints_deprecation_warning
|
13
13
|
warning = capture_stderr do
|
14
14
|
FakeWeb.registered_uri?("http://example.com")
|
15
15
|
end
|
16
|
-
assert_match
|
16
|
+
assert_match %r(deprecation warning: fakeweb)i, warning
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_response_for_without_method_argument_prints_deprecation_warning
|
20
20
|
warning = capture_stderr do
|
21
21
|
FakeWeb.response_for("http://example.com")
|
22
22
|
end
|
23
|
-
assert_match
|
23
|
+
assert_match %r(deprecation warning: fakeweb)i, warning
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_register_uri_without_method_argument_prints_deprecation_warning_with_correct_caller
|
27
27
|
warning = capture_stderr do
|
28
28
|
FakeWeb.register_uri("http://example.com", :body => "test")
|
29
29
|
end
|
30
|
-
assert_match
|
30
|
+
assert_match %r(Called at.*?test_deprecations\.rb)i, warning
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_register_uri_with_string_option_prints_deprecation_warning
|
34
34
|
warning = capture_stderr do
|
35
35
|
FakeWeb.register_uri(:get, "http://example.com", :string => "test")
|
36
36
|
end
|
37
|
-
assert_match
|
37
|
+
assert_match %r(deprecation warning: fakeweb's :string option)i, warning
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_register_uri_with_file_option_prints_deprecation_warning
|
41
41
|
warning = capture_stderr do
|
42
42
|
FakeWeb.register_uri(:get, "http://example.com", :file => File.dirname(__FILE__) + '/fixtures/test_example.txt')
|
43
43
|
end
|
44
|
-
assert_match
|
44
|
+
assert_match %r(deprecation warning: fakeweb's :file option)i, warning
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_register_uri_with_string_option_prints_deprecation_warning_with_correct_caller
|
48
48
|
warning = capture_stderr do
|
49
49
|
FakeWeb.register_uri(:get, "http://example.com", :string => "test")
|
50
50
|
end
|
51
|
-
assert_match
|
51
|
+
assert_match %r(Called at.*?test_deprecations\.rb)i, warning
|
52
52
|
end
|
53
53
|
|
54
54
|
end
|
data/test/test_fake_web.rb
CHANGED
@@ -104,6 +104,23 @@ class TestFakeWeb < Test::Unit::TestCase
|
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
+
def test_clean_registry_affects_registered_uri
|
108
|
+
FakeWeb.register_uri(:get, "http://example.com", :body => "registered")
|
109
|
+
assert FakeWeb.registered_uri?(:get, "http://example.com")
|
110
|
+
FakeWeb.clean_registry
|
111
|
+
assert !FakeWeb.registered_uri?(:get, "http://example.com")
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_clean_registry_affects_net_http_requests
|
115
|
+
FakeWeb.register_uri(:get, "http://example.com", :body => "registered")
|
116
|
+
response = Net::HTTP.start("example.com") { |query| query.get("/") }
|
117
|
+
assert_equal "registered", response.body
|
118
|
+
FakeWeb.clean_registry
|
119
|
+
assert_raise FakeWeb::NetConnectNotAllowedError do
|
120
|
+
Net::HTTP.start("example.com") { |query| query.get("/") }
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
107
124
|
def test_response_for_with_registered_uri
|
108
125
|
FakeWeb.register_uri(:get, 'http://mock/test_example.txt', :body => File.dirname(__FILE__) + '/fixtures/test_example.txt')
|
109
126
|
assert_equal 'test example content', FakeWeb.response_for(:get, 'http://mock/test_example.txt').body
|
@@ -515,4 +532,8 @@ class TestFakeWeb < Test::Unit::TestCase
|
|
515
532
|
assert_equal "1.0", response.http_version
|
516
533
|
end
|
517
534
|
|
535
|
+
def test_version
|
536
|
+
assert_equal "1.2.6", FakeWeb::VERSION
|
537
|
+
end
|
538
|
+
|
518
539
|
end
|
data/test/test_helper.rb
CHANGED
@@ -9,12 +9,14 @@ require 'mocha'
|
|
9
9
|
|
10
10
|
# Give all tests a common setup and teardown that prevents shared state
|
11
11
|
class Test::Unit::TestCase
|
12
|
+
alias setup_without_fakeweb setup
|
12
13
|
def setup
|
13
14
|
FakeWeb.clean_registry
|
14
15
|
@original_allow_net_connect = FakeWeb.allow_net_connect?
|
15
16
|
FakeWeb.allow_net_connect = false
|
16
17
|
end
|
17
18
|
|
19
|
+
alias teardown_without_fakeweb teardown
|
18
20
|
def teardown
|
19
21
|
FakeWeb.allow_net_connect = @original_allow_net_connect
|
20
22
|
end
|
data/test/test_precedence.rb
CHANGED
@@ -48,4 +48,32 @@ class TestPrecedence < Test::Unit::TestCase
|
|
48
48
|
assert_equal "string", response.body
|
49
49
|
end
|
50
50
|
|
51
|
+
def test_identical_registration_replaces_previous_registration
|
52
|
+
FakeWeb.register_uri(:get, "http://example.com/test", :body => "first")
|
53
|
+
FakeWeb.register_uri(:get, "http://example.com/test", :body => "second")
|
54
|
+
response = Net::HTTP.start("example.com") { |query| query.get('/test') }
|
55
|
+
assert_equal "second", response.body
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_identical_registration_replaces_previous_registration_accounting_for_normalization
|
59
|
+
FakeWeb.register_uri(:get, "http://example.com/test?", :body => "first")
|
60
|
+
FakeWeb.register_uri(:get, "http://example.com:80/test", :body => "second")
|
61
|
+
response = Net::HTTP.start("example.com") { |query| query.get('/test') }
|
62
|
+
assert_equal "second", response.body
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_identical_registration_replaces_previous_registration_accounting_for_query_params
|
66
|
+
FakeWeb.register_uri(:get, "http://example.com/test?a=1&b=2", :body => "first")
|
67
|
+
FakeWeb.register_uri(:get, "http://example.com/test?b=2&a=1", :body => "second")
|
68
|
+
response = Net::HTTP.start("example.com") { |query| query.get('/test?a=1&b=2') }
|
69
|
+
assert_equal "second", response.body
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_identical_registration_replaces_previous_registration_with_regexes
|
73
|
+
FakeWeb.register_uri(:get, /test/, :body => "first")
|
74
|
+
FakeWeb.register_uri(:get, /test/, :body => "second")
|
75
|
+
response = Net::HTTP.start("example.com") { |query| query.get('/test') }
|
76
|
+
assert_equal "second", response.body
|
77
|
+
end
|
78
|
+
|
51
79
|
end
|
data/test/test_regexes.rb
CHANGED
@@ -39,17 +39,28 @@ class TestRegexes < Test::Unit::TestCase
|
|
39
39
|
def test_requesting_a_uri_that_matches_two_registered_regexes_raises_an_error
|
40
40
|
FakeWeb.register_uri(:get, %r|http://example\.com/|, :body => "first")
|
41
41
|
FakeWeb.register_uri(:get, %r|http://example\.com/a|, :body => "second")
|
42
|
-
assert_raise FakeWeb::
|
42
|
+
assert_raise FakeWeb::MultipleMatchingURIsError do
|
43
43
|
Net::HTTP.start("example.com") { |query| query.get('/a') }
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
def test_requesting_a_uri_that_matches_two_registered_regexes_with_differently_ordered_query_params_raises_an_error
|
48
|
+
FakeWeb.register_uri(:get, %r[example.com/list\?b=2&a=1], :body => "first")
|
49
|
+
FakeWeb.register_uri(:get, %r[example.com/list\?a=1&b=2], :body => "second")
|
50
|
+
assert_raise FakeWeb::MultipleMatchingURIsError do
|
51
|
+
Net::HTTP.start("example.com") { |query| query.get('/list?a=1&b=2') }
|
52
|
+
end
|
53
|
+
assert_raise FakeWeb::MultipleMatchingURIsError do
|
54
|
+
Net::HTTP.start("example.com") { |query| query.get('/list?b=2&a=1') }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
47
58
|
def test_requesting_a_uri_that_matches_two_registered_regexes_raises_an_error_including_request_info
|
48
59
|
FakeWeb.register_uri(:get, %r|http://example\.com/|, :body => "first")
|
49
60
|
FakeWeb.register_uri(:get, %r|http://example\.com/a|, :body => "second")
|
50
61
|
begin
|
51
62
|
Net::HTTP.start("example.com") { |query| query.get('/a') }
|
52
|
-
rescue FakeWeb::
|
63
|
+
rescue FakeWeb::MultipleMatchingURIsError => exception
|
53
64
|
end
|
54
65
|
assert exception.message.include?("GET http://example.com/a")
|
55
66
|
end
|
@@ -60,6 +71,36 @@ class TestRegexes < Test::Unit::TestCase
|
|
60
71
|
assert !FakeWeb.registered_uri?(:get, "http://www.example.com:443")
|
61
72
|
end
|
62
73
|
|
74
|
+
def test_registry_finds_using_non_default_port
|
75
|
+
FakeWeb.register_uri(:get, %r|example\.com:8080|, :body => "example")
|
76
|
+
assert FakeWeb.registered_uri?(:get, "http://www.example.com:8080/path")
|
77
|
+
assert FakeWeb.registered_uri?(:get, "https://www.example.com:8080/path")
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_registry_finds_using_default_port_and_http_when_registered_with_explicit_port_80
|
81
|
+
FakeWeb.register_uri(:get, %r|example\.com:80|, :body => "example")
|
82
|
+
assert FakeWeb.registered_uri?(:get, "http://www.example.com/path")
|
83
|
+
|
84
|
+
# check other permutations, too
|
85
|
+
assert FakeWeb.registered_uri?(:get, "http://www.example.com:80/path")
|
86
|
+
assert FakeWeb.registered_uri?(:get, "http://www.example.com:8080/path")
|
87
|
+
assert FakeWeb.registered_uri?(:get, "https://www.example.com:80/path")
|
88
|
+
assert FakeWeb.registered_uri?(:get, "https://www.example.com:8080/path")
|
89
|
+
assert !FakeWeb.registered_uri?(:get, "https://www.example.com/path")
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_registry_finds_using_default_port_and_https_when_registered_with_explicit_port_443
|
93
|
+
FakeWeb.register_uri(:get, %r|example\.com:443|, :body => "example")
|
94
|
+
assert FakeWeb.registered_uri?(:get, "https://www.example.com/path")
|
95
|
+
|
96
|
+
# check other permutations, too
|
97
|
+
assert FakeWeb.registered_uri?(:get, "https://www.example.com:443/path")
|
98
|
+
assert FakeWeb.registered_uri?(:get, "https://www.example.com:44321/path")
|
99
|
+
assert FakeWeb.registered_uri?(:get, "http://www.example.com:443/path")
|
100
|
+
assert FakeWeb.registered_uri?(:get, "http://www.example.com:44321/path")
|
101
|
+
assert !FakeWeb.registered_uri?(:get, "http://www.example.com/path")
|
102
|
+
end
|
103
|
+
|
63
104
|
def test_registry_only_finds_using_default_port_when_registered_without_if_protocol_matches
|
64
105
|
FakeWeb.register_uri(:get, %r|http://www.example.com/test|, :body => "example")
|
65
106
|
assert FakeWeb.registered_uri?(:get, "http://www.example.com:80/test")
|
@@ -80,14 +121,14 @@ class TestRegexes < Test::Unit::TestCase
|
|
80
121
|
assert !FakeWeb.registered_uri?(:get, "https://www.example.com")
|
81
122
|
end
|
82
123
|
|
83
|
-
def
|
84
|
-
FakeWeb.register_uri(:get, %r|www.example.com|, :body => "example")
|
85
|
-
assert FakeWeb.registered_uri?(:get, "http://www.example.com")
|
86
|
-
assert FakeWeb.registered_uri?(:get, "
|
87
|
-
assert FakeWeb.registered_uri?(:get, "http://www.example.com:
|
88
|
-
assert FakeWeb.registered_uri?(:get, "https://www.example.com")
|
89
|
-
assert FakeWeb.registered_uri?(:get, "https://www.example.com:80")
|
90
|
-
assert FakeWeb.registered_uri?(:get, "
|
124
|
+
def test_registry_matches_using_default_port_for_protocol_when_registered_without_protocol_or_port
|
125
|
+
FakeWeb.register_uri(:get, %r|www.example.com/home|, :body => "example")
|
126
|
+
assert FakeWeb.registered_uri?(:get, "http://www.example.com/home")
|
127
|
+
assert FakeWeb.registered_uri?(:get, "https://www.example.com/home")
|
128
|
+
assert FakeWeb.registered_uri?(:get, "http://www.example.com:80/home")
|
129
|
+
assert FakeWeb.registered_uri?(:get, "https://www.example.com:443/home")
|
130
|
+
assert !FakeWeb.registered_uri?(:get, "https://www.example.com:80/home")
|
131
|
+
assert !FakeWeb.registered_uri?(:get, "http://www.example.com:443/home")
|
91
132
|
end
|
92
133
|
|
93
134
|
def test_registry_matches_with_query_params
|
@@ -100,4 +141,12 @@ class TestRegexes < Test::Unit::TestCase
|
|
100
141
|
assert !FakeWeb.registered_uri?(:get, "http://example.com/list?hash=123&important=2&unimportant=1")
|
101
142
|
assert !FakeWeb.registered_uri?(:get, "http://example.com/list?notimportant=1&unimportant=1")
|
102
143
|
end
|
144
|
+
|
145
|
+
def test_registry_matches_with_unsorted_query_params
|
146
|
+
FakeWeb.register_uri(:get, %r[example\.com/list\?b=2&a=1], :body => "example")
|
147
|
+
assert FakeWeb.registered_uri?(:get, "http://example.com/list?b=2&a=1")
|
148
|
+
assert FakeWeb.registered_uri?(:get, "http://example.com/list?a=1&b=2")
|
149
|
+
assert FakeWeb.registered_uri?(:get, "https://example.com:443/list?b=2&a=1")
|
150
|
+
end
|
151
|
+
|
103
152
|
end
|
@@ -2,13 +2,19 @@ require File.join(File.dirname(__FILE__), "test_helper")
|
|
2
2
|
|
3
3
|
class TestResponseHeaders < Test::Unit::TestCase
|
4
4
|
|
5
|
-
def
|
5
|
+
def test_content_type_when_registering_with_string_and_content_type_header_as_symbol_option
|
6
6
|
FakeWeb.register_uri(:get, "http://example.com/users.json", :body => '[{"username": "chrisk"}]', :content_type => "application/json")
|
7
7
|
response = Net::HTTP.start("example.com") { |query| query.get("/users.json") }
|
8
8
|
assert_equal '[{"username": "chrisk"}]', response.body
|
9
9
|
assert_equal "application/json", response['Content-Type']
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_content_type_when_registering_with_string_and_content_type_header_as_string_option
|
13
|
+
FakeWeb.register_uri(:get, "http://example.com/users.json", :body => '[{"username": "chrisk"}]', 'Content-Type' => "application/json")
|
14
|
+
response = Net::HTTP.start("example.com") { |query| query.get("/users.json") }
|
15
|
+
assert_equal "application/json", response['Content-Type']
|
16
|
+
end
|
17
|
+
|
12
18
|
def test_content_type_when_registering_with_string_only
|
13
19
|
FakeWeb.register_uri(:get, "http://example.com/users.json", :body => '[{"username": "chrisk"}]')
|
14
20
|
response = Net::HTTP.start("example.com") { |query| query.get("/users.json") }
|
data/test/test_utility.rb
CHANGED
@@ -67,4 +67,25 @@ class TestUtility < Test::Unit::TestCase
|
|
67
67
|
assert_equal uri, FakeWeb::Utility.strip_default_port_from_uri(uri)
|
68
68
|
end
|
69
69
|
|
70
|
+
def test_simple_array_permutation_with_one_element
|
71
|
+
array, permutations = [1], [[1]]
|
72
|
+
FakeWeb::Utility.simple_array_permutation(array) do |permutation|
|
73
|
+
permutations.delete(permutation)
|
74
|
+
end
|
75
|
+
assert permutations.empty?
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_simple_array_permutation_with_three_elements
|
79
|
+
array = [1, 2, 3]
|
80
|
+
permutations = [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
|
81
|
+
FakeWeb::Utility.simple_array_permutation(array) do |permutation|
|
82
|
+
permutations.delete(permutation)
|
83
|
+
end
|
84
|
+
assert permutations.empty?
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_simple_array_permutation_return_value
|
88
|
+
array = [1, 2, 3]
|
89
|
+
assert array, FakeWeb::Utility.simple_array_permutation(array) { }
|
90
|
+
end
|
70
91
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fakeweb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Kampmeier
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-08-31 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -32,14 +32,16 @@ executables: []
|
|
32
32
|
extensions: []
|
33
33
|
|
34
34
|
extra_rdoc_files:
|
35
|
-
- CHANGELOG
|
36
35
|
- LICENSE.txt
|
37
36
|
- README.rdoc
|
38
37
|
files:
|
38
|
+
- .gitignore
|
39
39
|
- CHANGELOG
|
40
40
|
- LICENSE.txt
|
41
41
|
- README.rdoc
|
42
42
|
- Rakefile
|
43
|
+
- VERSION
|
44
|
+
- fakeweb.gemspec
|
43
45
|
- lib/fake_web.rb
|
44
46
|
- lib/fake_web/ext/net_http.rb
|
45
47
|
- lib/fake_web/registry.rb
|
@@ -72,14 +74,7 @@ licenses: []
|
|
72
74
|
|
73
75
|
post_install_message:
|
74
76
|
rdoc_options:
|
75
|
-
- --
|
76
|
-
- README.rdoc
|
77
|
-
- --title
|
78
|
-
- FakeWeb API Documentation
|
79
|
-
- --charset
|
80
|
-
- utf-8
|
81
|
-
- --line-numbers
|
82
|
-
- --inline-source
|
77
|
+
- --charset=UTF-8
|
83
78
|
require_paths:
|
84
79
|
- lib
|
85
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -97,16 +92,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
92
|
requirements: []
|
98
93
|
|
99
94
|
rubyforge_project: fakeweb
|
100
|
-
rubygems_version: 1.3.
|
95
|
+
rubygems_version: 1.3.5
|
101
96
|
signing_key:
|
102
97
|
specification_version: 3
|
103
98
|
summary: A tool for faking responses to HTTP requests
|
104
99
|
test_files:
|
105
|
-
- test/fixtures/google_response_from_curl
|
106
|
-
- test/fixtures/google_response_with_transfer_encoding
|
107
|
-
- test/fixtures/google_response_without_transfer_encoding
|
108
|
-
- test/fixtures/test_example.txt
|
109
|
-
- test/fixtures/test_txt_file
|
110
100
|
- test/test_allow_net_connect.rb
|
111
101
|
- test/test_deprecations.rb
|
112
102
|
- test/test_fake_authentication.rb
|