All Versions
152
Latest Version
Avg Release Cycle
21 days
Latest Release
-

Changelog History
Page 15

  • v1.2.2 Changes

    • πŸ›  Fixed problem where ArgumentError was raised if query params were made up of an array e.g. data[]=a&data[]=b. Thanks to Steve Tooke
  • v1.2.1 Changes

    • πŸ”„ Changed license from GPL to MIT

    • πŸ›  Fixed gemspec file. Thanks to Razic

  • v1.2.0 Changes

    • RSpec 2 compatibility. Thanks to Sam Phillips!

    • :allow_localhost => true' now permits 127.0.0.1 as well as 'localhost'. Thanks to Mack Earnhardt

    • Request URI matching in now 2x faster!

  • v1.1.0 Changes

    • VCR compatibility. Many thanks to Myron Marston for all suggestions.

    • πŸ‘Œ Support for stubbing requests and returning responses with multiple headers with the same name. i.e multiple Accept headers.

              stub_http_request(:get, 'www.example.com').
                with(:headers => {'Accept' => ['image/png', 'image/jpeg']}).
                to_return(:body => 'abc')
              RestClient.get('www.example.com',
               {"Accept" => ['image/png', 'image/jpeg']}) # ===> "abc\n"
      
    • When real net connections are disabled and unstubbed request is made, WebMock throws WebMock::NetConnectNotAllowedError instead of assertion error or StandardError.

    • βž• Added WebMock.version()

  • v1.0.0 Changes

    • βž• Added support for Patron

    • Responses dynamically evaluated from block (idea and implementation by Tom Ward)

              stub_request(:any, 'www.example.net').
                   to_return { |request| {:body => request.body} }
      
              RestClient.post('www.example.net', 'abc')    # ===> "abc\n"
      
    • Responses dynamically evaluated from lambda (idea and implementation by Tom Ward)

      stub_request(:any, 'www.example.net').
            to_return(lambda { |request| {:body => request.body} })
      
          RestClient.post('www.example.net', 'abc')    # ===> "abc\n"
      
    • Response with custom status message

              stub_request(:any, "www.example.com").to_return(:status => [500, "Internal Server Error"])
      
              req = Net::HTTP::Get.new("/")
              Net::HTTP.start("www.example.com") { |http| http.request(req) }.message # ===> "Internal Server Error"
      
    • πŸ’Ž Raising timeout errors (suggested by Jeffrey Jones) (compatibility with Ruby 1.8.6 by Mack Earnhardt)

              stub_request(:any, 'www.example.net').to_timeout
      
              RestClient.post('www.example.net', 'abc')    # ===> RestClient::RequestTimeout
      
    • External requests can be disabled while allowing localhost (idea and implementation by Mack Earnhardt)

              WebMock.disable_net_connect!(:allow_localhost => true)
      
              Net::HTTP.get('www.something.com', '/')   # ===> Failure
      
              Net::HTTP.get('localhost:9887', '/')      # ===> Allowed. Perhaps to Selenium?
      

    πŸ› Bug fixes

    • πŸ›  Fixed issue where Net::HTTP adapter didn't work for requests with body responding to read (reported by Tekin Suleyman)
    • πŸ›  Fixed issue where request stub with headers declared as nil was matching requests with non empty headers
  • v0.9.1 Changes

    • πŸ›  Fixed issue where response status code was not read from raw (curl -is) responses
  • v0.9.0 Changes

    • Matching requests against provided block (by Sergio Gil)

              stub_request(:post, "www.example.com").with { |request| request.body == "abc" }.to_return(:body => "def")
              RestClient.post('www.example.com', 'abc')    # ===> "def\n"
              request(:post, "www.example.com").with { |req| req.body == "abc" }.should have_been_made
              #or
              assert_requested(:post, "www.example.com") { |req| req.body == "abc" }
      
    • Matching request body against regular expressions (suggested by Ben Pickles)

              stub_request(:post, "www.example.com").with(:body => /^.*world$/).to_return(:body => "abc")
              RestClient.post('www.example.com', 'hello world')    # ===> "abc\n"
      
    • Matching request headers against regular expressions (suggested by Ben Pickles)

              stub_request(:post, "www.example.com").with(:headers => {"Content-Type" => /image\/.+/}).to_return(:body => "abc")
              RestClient.post('www.example.com', '', {'Content-Type' => 'image/png'})    # ===> "abc\n"
      
    • Replaying raw responses recorded with curl -is

              `curl -is www.example.com > /tmp/example_curl_-is_output.txt`
              raw_response_file = File.new("/tmp/example_curl_-is_output.txt")
      
      from file
      
              stub_request(:get, "www.example.com").to_return(raw_response_file)
      
      or string
      
              stub_request(:get, "www.example.com").to_return(raw_response_file.read)
      
    • Multiple responses for repeated requests

              stub_request(:get, "www.example.com").to_return({:body => "abc"}, {:body => "def"})
              Net::HTTP.get('www.example.com', '/')    # ===> "abc\n"
              Net::HTTP.get('www.example.com', '/')    # ===> "def\n"
      
    • Multiple responses using chained to_return() or to_raise() declarations

              stub_request(:get, "www.example.com").
                      to_return({:body => "abc"}).then.  #then() just is a syntactic sugar
                      to_return({:body => "def"}).then.
                      to_raise(MyException)
              Net::HTTP.get('www.example.com', '/')    # ===> "abc\n"
              Net::HTTP.get('www.example.com', '/')    # ===> "def\n"
              Net::HTTP.get('www.example.com', '/')    # ===> MyException raised
      
    • Specifying number of times given response should be returned

              stub_request(:get, "www.example.com").
                      to_return({:body => "abc"}).times(2).then.
                      to_return({:body => "def"})
      
              Net::HTTP.get('www.example.com', '/')    # ===> "abc\n"
              Net::HTTP.get('www.example.com', '/')    # ===> "abc\n"
              Net::HTTP.get('www.example.com', '/')    # ===> "def\n"
      
    • βž• Added support for Net::HTTP::Post#body_stream

      This fixes compatibility with new versions of RestClient
      
    • 0️⃣ WebMock doesn't suppress default request headers added by http clients anymore.

      i.e. Net::HTTP adds `'Accept'=>'*/*'` to all requests by default
      
  • v0.8.2 Changes

    • Fixed issue where WebMock was not closing IO object passed as response body after reading it.
    • Ruby 1.9.2 compat: Use File#expand_path for require path because "." is not be included in LOAD_PATH since Ruby 1.9.2
  • v0.8.1 Changes

    • Fixed HTTPClient adapter compatibility with Ruby 1.8.6 (reported by Piotr Usewicz)
    • Net:HTTP adapter now handles request body assigned as Net::HTTP::Post#body attribute (fixed by Mack Earnhardt)
    • Fixed issue where requests were not matching stubs with Accept header set.(reported by Piotr Usewicz)
    • Fixed compatibility with Ruby 1.9.1, 1.9.2 and JRuby 1.3.1 (reported by Diego E. β€œFlameeyes” PettenΓ²)
    • Fixed issue with response body declared as IO object and multiple requests (reported by Niels Meersschaert)
    • Fixed "undefined method `assertion_failure'" error (reported by Nick Plante)
  • v0.8.0 Changes

    • Support for HTTPClient (sync and async requests)
    • Support for dynamic responses. Response body and headers can be now declared as lambda. (Thanks to Ivan Vega ( @ivanyv ) for suggesting this feature)
    • Support for stubbing and expecting requests with empty body
    • Executing non-stubbed request leads to failed expectation instead of error

    πŸ› Bug fixes

    • Basic authentication now works correctly
    • Fixed problem where WebMock didn't call a block with the response when block was provided
    • Fixed problem where uris with single slash were not matching uris without path provided