eric-fakeweb 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,62 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper")
2
+
3
+ class TestFakeWebOpenURI < Test::Unit::TestCase
4
+
5
+ def setup
6
+ FakeWeb.clean_registry
7
+ end
8
+
9
+ def test_content_for_registered_uri
10
+ FakeWeb.register_uri('http://mock/test_example.txt', :file => File.dirname(__FILE__) + '/fixtures/test_example.txt')
11
+ assert_equal 'test example content', FakeWeb.response_for('http://mock/test_example.txt').body
12
+ end
13
+
14
+ def test_mock_open
15
+ FakeWeb.register_uri('http://mock/test_example.txt', :file => File.dirname(__FILE__) + '/fixtures/test_example.txt')
16
+ assert_equal 'test example content', open('http://mock/test_example.txt').read
17
+ end
18
+
19
+ def test_mock_open_with_string_as_registered_uri
20
+ FakeWeb.register_uri('http://mock/test_string.txt', :string => 'foo')
21
+ assert_equal 'foo', open('http://mock/test_string.txt').string
22
+ end
23
+
24
+ def test_real_open
25
+ setup_expectations_for_real_apple_hot_news_request
26
+ resp = open('http://images.apple.com/main/rss/hotnews/hotnews.rss')
27
+ assert_equal "200", resp.status.first
28
+ body = resp.read
29
+ assert body.include?('Apple')
30
+ assert body.include?('News')
31
+ end
32
+
33
+ def test_mock_open_that_raises_exception
34
+ FakeWeb.register_uri('http://mock/raising_exception.txt', :exception => StandardError)
35
+ assert_raises(StandardError) do
36
+ open('http://mock/raising_exception.txt')
37
+ end
38
+ end
39
+
40
+ def test_mock_open_that_raises_an_http_error
41
+ FakeWeb.register_uri('http://mock/raising_exception.txt', :exception => OpenURI::HTTPError)
42
+ assert_raises(OpenURI::HTTPError) do
43
+ open('http://mock/raising_exception.txt')
44
+ end
45
+ end
46
+
47
+ def test_mock_open_that_raises_an_http_error_with_a_specific_status
48
+ FakeWeb.register_uri('http://mock/raising_exception.txt', :exception => OpenURI::HTTPError, :status => ['123', 'jodel'])
49
+ exception = assert_raises(OpenURI::HTTPError) do
50
+ open('http://mock/raising_exception.txt')
51
+ end
52
+ assert_equal '123', exception.io.code
53
+ assert_equal 'jodel', exception.io.message
54
+ end
55
+
56
+ def test_mock_open_with_block
57
+ FakeWeb.register_uri('http://mock/test_example.txt', :file => File.dirname(__FILE__) + '/fixtures/test_example.txt')
58
+ open('http://mock/test_example.txt') do |f|
59
+ assert 'test example content', f.readlines
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,52 @@
1
+ $:.unshift "#{File.dirname(__FILE__)}/../lib"
2
+
3
+ require 'test/unit'
4
+ require 'open-uri'
5
+ require 'fake_web'
6
+ require 'rubygems'
7
+ require 'mocha'
8
+
9
+ module FakeWebTestHelper
10
+
11
+ # Sets several expectations (using Mocha) that a real HTTP request makes it
12
+ # past FakeWeb to the socket layer. You can use this when you need to check
13
+ # that a request isn't handled by FakeWeb.
14
+ def setup_expectations_for_real_request(options = {})
15
+ # Socket handling
16
+ if options[:port] == 443
17
+ socket = mock("SSLSocket")
18
+ OpenSSL::SSL::SSLSocket.expects(:===).with(socket).returns(true).at_least_once
19
+ OpenSSL::SSL::SSLSocket.expects(:new).with(socket, instance_of(OpenSSL::SSL::SSLContext)).returns(socket).at_least_once
20
+ socket.stubs(:sync_close=).returns(true)
21
+ socket.expects(:connect).with().at_least_once
22
+ else
23
+ socket = mock("TCPSocket")
24
+ Socket.expects(:===).with(socket).returns(true)
25
+ end
26
+
27
+ TCPSocket.expects(:open).with(options[:host], options[:port]).returns(socket).at_least_once
28
+ socket.stubs(:closed?).returns(false)
29
+ socket.stubs(:close).returns(true)
30
+
31
+ # Request/response handling
32
+ request_parts = ["#{options[:method]} #{options[:path]} HTTP/1.1", "Host: #{options[:host]}"]
33
+ socket.expects(:write).with(all_of(includes(request_parts[0]), includes(request_parts[1]))).returns(100)
34
+
35
+ # TODO: handle long response bodies that use more than one #sysread call
36
+ socket.expects(:sysread).at_least_once.returns("HTTP/1.1 #{options[:response_code]} #{options[:response_message]}\nContent-Length: #{options[:response_body].length}\n\n#{options[:response_body]}").then.raises(EOFError)
37
+ end
38
+
39
+
40
+ # A helper that calls #setup_expectations_for_real_request for you, using
41
+ # defaults for our commonly used test request to images.apple.com.
42
+ def setup_expectations_for_real_apple_hot_news_request(options = {})
43
+ defaults = { :host => "images.apple.com", :port => 80, :method => "GET",
44
+ :path => "/main/rss/hotnews/hotnews.rss",
45
+ :response_code => 200, :response_message => "OK",
46
+ :response_body => "<title>Apple Hot News</title>" }
47
+ setup_expectations_for_real_request(defaults.merge(options))
48
+ end
49
+
50
+ end
51
+
52
+ Test::Unit::TestCase.send(:include, FakeWebTestHelper)
@@ -0,0 +1,49 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper")
2
+
3
+ class TestFakeWebQueryString < Test::Unit::TestCase
4
+
5
+ def setup
6
+ FakeWeb.clean_registry
7
+ end
8
+
9
+ def test_register_uri_string_with_query_params
10
+ FakeWeb.register_uri('http://example.com/?a=1&b=1', :string => 'foo')
11
+ assert FakeWeb.registered_uri?('http://example.com/?a=1&b=1')
12
+
13
+ FakeWeb.register_uri(URI.parse("http://example.org/?a=1&b=1"), :string => "foo")
14
+ assert FakeWeb.registered_uri?("http://example.org/?a=1&b=1")
15
+ end
16
+
17
+ def test_register_uri_with_query_params_and_check_in_different_order
18
+ FakeWeb.register_uri('http://example.com/?a=1&b=1', :string => 'foo')
19
+ assert FakeWeb.registered_uri?('http://example.com/?b=1&a=1')
20
+
21
+ FakeWeb.register_uri(URI.parse('http://example.org/?a=1&b=1'), :string => 'foo')
22
+ assert FakeWeb.registered_uri?('http://example.org/?b=1&a=1')
23
+ end
24
+
25
+ def test_registered_uri_gets_recognized_with_empty_query_params
26
+ FakeWeb.register_uri('http://example.com/', :string => 'foo')
27
+ assert FakeWeb.registered_uri?('http://example.com/?')
28
+
29
+ FakeWeb.register_uri(URI.parse('http://example.org/'), :string => 'foo')
30
+ assert FakeWeb.registered_uri?('http://example.org/?')
31
+ end
32
+
33
+ def test_register_uri_with_empty_query_params_and_check_with_none
34
+ FakeWeb.register_uri('http://example.com/?', :string => 'foo')
35
+ assert FakeWeb.registered_uri?('http://example.com/')
36
+
37
+ FakeWeb.register_uri(URI.parse('http://example.org/?'), :string => 'foo')
38
+ assert FakeWeb.registered_uri?('http://example.org/')
39
+ end
40
+
41
+ def test_registry_sort_query_params
42
+ assert_equal "a=1&b=2", FakeWeb::Registry.instance.send(:sort_query_params, "b=2&a=1")
43
+ end
44
+
45
+ def test_registry_sort_query_params_sorts_by_value_if_keys_collide
46
+ assert_equal "a=1&a=2&b=2", FakeWeb::Registry.instance.send(:sort_query_params, "a=2&b=2&a=1")
47
+ end
48
+
49
+ end
@@ -0,0 +1,62 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper")
2
+
3
+ class TestFakeWebTrailingSlashes < Test::Unit::TestCase
4
+
5
+ def setup
6
+ FakeWeb.clean_registry
7
+ @original_allow_net_connect = FakeWeb.allow_net_connect?
8
+ end
9
+
10
+ def teardown
11
+ FakeWeb.allow_net_connect = @old_allow_net_conncet
12
+ end
13
+
14
+ def test_registering_root_without_slash_and_ask_predicate_method_with_slash
15
+ FakeWeb.register_uri(:get, "http://www.example.com", :string => "root")
16
+ assert FakeWeb.registered_uri?(:get, "http://www.example.com/")
17
+ end
18
+
19
+ def test_registering_root_without_slash_and_request
20
+ FakeWeb.register_uri(:get, "http://www.example.com", :string => "root")
21
+ response = Net::HTTP.start("www.example.com") { |query| query.get('/') }
22
+ assert_equal "root", response.body
23
+ end
24
+
25
+ def test_registering_root_with_slash_and_ask_predicate_method_without_slash
26
+ FakeWeb.register_uri(:get, "http://www.example.com/", :string => "root")
27
+ assert FakeWeb.registered_uri?(:get, "http://www.example.com")
28
+ end
29
+
30
+ def test_registering_root_with_slash_and_request
31
+ FakeWeb.register_uri(:get, "http://www.example.com/", :string => "root")
32
+ response = Net::HTTP.start("www.example.com") { |query| query.get('/') }
33
+ assert_equal "root", response.body
34
+ end
35
+
36
+ def test_registering_path_without_slash_and_ask_predicate_method_with_slash
37
+ FakeWeb.register_uri(:get, "http://www.example.com/users", :string => "User list")
38
+ assert !FakeWeb.registered_uri?(:get, "http://www.example.com/users/")
39
+ end
40
+
41
+ def test_registering_path_without_slash_and_request_with_slash
42
+ FakeWeb.allow_net_connect = false
43
+ FakeWeb.register_uri(:get, "http://www.example.com/users", :string => "User list")
44
+ assert_raise FakeWeb::NetConnectNotAllowedError do
45
+ response = Net::HTTP.start("www.example.com") { |query| query.get('/users/') }
46
+ end
47
+ end
48
+
49
+ def test_registering_path_with_slash_and_ask_predicate_method_without_slash
50
+ FakeWeb.register_uri(:get, "http://www.example.com/users/", :string => "User list")
51
+ assert !FakeWeb.registered_uri?(:get, "http://www.example.com/users")
52
+ end
53
+
54
+ def test_registering_path_with_slash_and_request_without_slash
55
+ FakeWeb.allow_net_connect = false
56
+ FakeWeb.register_uri(:get, "http://www.example.com/users/", :string => "User list")
57
+ assert_raise FakeWeb::NetConnectNotAllowedError do
58
+ response = Net::HTTP.start("www.example.com") { |query| query.get('/users') }
59
+ end
60
+ end
61
+
62
+ end
metadata ADDED
@@ -0,0 +1,111 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eric-fakeweb
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.2
5
+ platform: ruby
6
+ authors:
7
+ - Blaine Cook
8
+ - Chris Kampmeier
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-05-04 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: mocha
18
+ type: :development
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.9.5
25
+ version:
26
+ description:
27
+ email: chris@kampers.net
28
+ executables: []
29
+
30
+ extensions: []
31
+
32
+ extra_rdoc_files:
33
+ - CHANGELOG
34
+ - LICENSE.txt
35
+ - README.rdoc
36
+ files:
37
+ - CHANGELOG
38
+ - LICENSE.txt
39
+ - README.rdoc
40
+ - Rakefile
41
+ - lib
42
+ - lib/fake_web
43
+ - lib/fake_web.rb
44
+ - lib/fake_web/ext
45
+ - lib/fake_web/ext/net_http.rb
46
+ - lib/fake_web/registry.rb
47
+ - lib/fake_web/responder.rb
48
+ - lib/fake_web/response.rb
49
+ - lib/fake_web/stub_socket.rb
50
+ - lib/fakeweb.rb
51
+ - test
52
+ - test/fixtures
53
+ - test/fixtures/google_response_from_curl
54
+ - test/fixtures/google_response_with_transfer_encoding
55
+ - test/fixtures/google_response_without_transfer_encoding
56
+ - test/fixtures/test_example.txt
57
+ - test/fixtures/test_txt_file
58
+ - test/test_allow_net_connect.rb
59
+ - test/test_fake_authentication.rb
60
+ - test/test_fake_web.rb
61
+ - test/test_fake_web_open_uri.rb
62
+ - test/test_helper.rb
63
+ - test/test_query_string.rb
64
+ - test/test_trailing_slashes.rb
65
+ has_rdoc: true
66
+ homepage: http://github.com/chrisk/fakeweb
67
+ post_install_message:
68
+ rdoc_options:
69
+ - --main
70
+ - README.rdoc
71
+ - --title
72
+ - FakeWeb API Documentation
73
+ - --charset
74
+ - utf-8
75
+ - --line-numbers
76
+ - --inline-source
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: "0"
84
+ version:
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
91
+ requirements: []
92
+
93
+ rubyforge_project: fakeweb
94
+ rubygems_version: 1.2.0
95
+ signing_key:
96
+ specification_version: 2
97
+ summary: A tool for faking responses to HTTP requests
98
+ test_files:
99
+ - test/fixtures
100
+ - test/fixtures/google_response_from_curl
101
+ - test/fixtures/google_response_with_transfer_encoding
102
+ - test/fixtures/google_response_without_transfer_encoding
103
+ - test/fixtures/test_example.txt
104
+ - test/fixtures/test_txt_file
105
+ - test/test_allow_net_connect.rb
106
+ - test/test_fake_authentication.rb
107
+ - test/test_fake_web.rb
108
+ - test/test_fake_web_open_uri.rb
109
+ - test/test_helper.rb
110
+ - test/test_query_string.rb
111
+ - test/test_trailing_slashes.rb