Skip to content

Instantly share code, notes, and snippets.

@ferblape
Created September 2, 2011 20:22
Show Gist options
  • Save ferblape/1189798 to your computer and use it in GitHub Desktop.
Save ferblape/1189798 to your computer and use it in GitHub Desktop.
Fakeweb POST request tests
def test_register_uri_for_post_method_with_parameters
FakeWeb.register_uri(:post, "http://example.com/users", :body => "User list 1", :parameters => {:p1 => 'v1'})
FakeWeb.register_uri(:post, "http://example.com/users", :body => "User list 2", :parameters => :any)
assert_equal 2, FakeWeb::Registry.instance.uri_map.values.first[:post].size
assert FakeWeb.registered_uri?(:post, "http://example.com/users", :parameters => {:p1 => 'v1'})
assert FakeWeb.registered_uri?(:post, "http://example.com/users", :parameters => :any)
end
def test_response_for_post_method_with_parameters
FakeWeb.register_uri(:post, "http://example.com/users", :body => "User list 1", :parameters => {:p1 => 'v1'})
FakeWeb.register_uri(:post, "http://example.com/users", :body => "User list 2", :parameters => :any)
FakeWeb.register_uri(:post, "http://example.com/users", :body => "User list 3")
assert_equal 'User list 1', FakeWeb.response_for(:post, "http://example.com/users", :parameters => {:p1 => 'v1'}).body
assert_equal 'User list 2', FakeWeb.response_for(:post, "http://example.com/users", :parameters => {:p2 => 'v2'}).body
assert_equal 'User list 3', FakeWeb.response_for(:post, "http://example.com/users").body
end
def test_register_multiple_post_request_to_a_same_uri_and_different_parameters
FakeWeb.register_uri(:post, "http://example.com", :body => "No parameters")
FakeWeb.register_uri(:post, "http://example.com", :body => "Body: p1 => v1", :parameters => {:p1 => 'v1'})
FakeWeb.register_uri(:post, "http://example.com", :body => "Body: p2 => v2, p3 => v3", :parameters => {:p2 => 'v2', :p3 => 'v3'})
FakeWeb.register_uri(:post, "http://example.com", :body => "Any parameter no matching", :parameters => :any)
uri = URI.parse("http://example.com")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
response = http.request(request)
assert_equal 'No parameters', response.body
uri = URI.parse("http://example.com")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data({:p1 => 'v1'})
response = http.request(request)
assert_equal "Body: p1 => v1", response.body
response = Net::HTTP.post_form(URI.parse('http://example.com/'), {:p1 => 'v1'})
assert_equal "Body: p1 => v1", response.body
response = Net::HTTP.post_form(URI.parse('http://example.com/'), {:p2 => 'v2', :p3 => 'v3'})
assert_equal "Body: p2 => v2, p3 => v3", response.body
response = Net::HTTP.post_form(URI.parse('http://example.com/'), {:p4 => 'v4'})
assert_equal "Any parameter no matching", response.body
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment