vcr 3.0.3 → 4.0.0
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.
- checksums.yaml +4 -4
- data/lib/vcr.rb +18 -1
- data/lib/vcr/cassette.rb +11 -3
- data/lib/vcr/cassette/persisters/file_system.rb +1 -1
- data/lib/vcr/configuration.rb +3 -5
- data/lib/vcr/deprecations.rb +0 -62
- data/lib/vcr/errors.rb +16 -0
- data/lib/vcr/library_hooks/typhoeus.rb +37 -8
- data/lib/vcr/middleware/faraday.rb +5 -1
- data/lib/vcr/structs.rb +1 -1
- data/lib/vcr/util/hooks.rb +1 -0
- data/lib/vcr/version.rb +1 -1
- metadata +9 -249
- data/features/CHANGELOG.md +0 -710
- data/features/CONTRIBUTING.md +0 -26
- data/features/LICENSE.md +0 -20
- data/features/README.md +0 -339
- data/features/Upgrade.md +0 -289
- data/features/about_these_examples.md +0 -18
- data/features/cassettes/allow_unused_http_interactions.feature +0 -100
- data/features/cassettes/automatic_re_recording.feature +0 -72
- data/features/cassettes/decompress.feature +0 -74
- data/features/cassettes/dynamic_erb.feature +0 -100
- data/features/cassettes/exclusive.feature +0 -126
- data/features/cassettes/format.feature +0 -411
- data/features/cassettes/freezing_time.feature +0 -68
- data/features/cassettes/naming.feature +0 -28
- data/features/cassettes/no_cassette.feature +0 -152
- data/features/cassettes/update_content_length_header.feature +0 -112
- data/features/configuration/allow_http_connections_when_no_cassette.feature +0 -55
- data/features/configuration/cassette_library_dir.feature +0 -31
- data/features/configuration/debug_logging.feature +0 -58
- data/features/configuration/default_cassette_options.feature +0 -100
- data/features/configuration/filter_sensitive_data.feature +0 -153
- data/features/configuration/hook_into.feature +0 -172
- data/features/configuration/ignore_request.feature +0 -192
- data/features/configuration/preserve_exact_body_bytes.feature +0 -108
- data/features/configuration/query_parser.feature +0 -84
- data/features/configuration/uri_parser.feature +0 -93
- data/features/getting_started.md +0 -82
- data/features/hooks/after_http_request.feature +0 -58
- data/features/hooks/around_http_request.feature +0 -57
- data/features/hooks/before_http_request.feature +0 -63
- data/features/hooks/before_playback.feature +0 -184
- data/features/hooks/before_record.feature +0 -172
- data/features/http_libraries/em_http_request.feature +0 -250
- data/features/http_libraries/net_http.feature +0 -179
- data/features/middleware/faraday.feature +0 -56
- data/features/middleware/rack.feature +0 -92
- data/features/record_modes/all.feature +0 -82
- data/features/record_modes/new_episodes.feature +0 -79
- data/features/record_modes/none.feature +0 -72
- data/features/record_modes/once.feature +0 -95
- data/features/request_matching/README.md +0 -30
- data/features/request_matching/body.feature +0 -91
- data/features/request_matching/body_as_json.feature +0 -90
- data/features/request_matching/custom_matcher.feature +0 -135
- data/features/request_matching/headers.feature +0 -85
- data/features/request_matching/host.feature +0 -95
- data/features/request_matching/identical_request_sequence.feature +0 -89
- data/features/request_matching/method.feature +0 -96
- data/features/request_matching/path.feature +0 -96
- data/features/request_matching/playback_repeats.feature +0 -98
- data/features/request_matching/query.feature +0 -97
- data/features/request_matching/uri.feature +0 -94
- data/features/request_matching/uri_without_param.feature +0 -101
- data/features/step_definitions/cli_steps.rb +0 -199
- data/features/support/env.rb +0 -46
- data/features/support/http_lib_filters.rb +0 -46
- data/features/test_frameworks/cucumber.feature +0 -211
- data/features/test_frameworks/rspec_macro.feature +0 -81
- data/features/test_frameworks/rspec_metadata.feature +0 -150
- data/features/test_frameworks/test_unit.feature +0 -49
- data/lib/vcr/extensions/net_http_response.rb +0 -36
- data/lib/vcr/library_hooks/fakeweb.rb +0 -197
- data/spec/acceptance/concurrency_spec.rb +0 -51
- data/spec/acceptance/threading_spec.rb +0 -34
- data/spec/fixtures/cassette_spec/1_x_cassette.yml +0 -110
- data/spec/fixtures/cassette_spec/empty.yml +0 -0
- data/spec/fixtures/cassette_spec/example.yml +0 -111
- data/spec/fixtures/cassette_spec/with_localhost_requests.yml +0 -111
- data/spec/fixtures/fake_example_responses.yml +0 -110
- data/spec/fixtures/match_requests_on.yml +0 -187
- data/spec/lib/vcr/cassette/erb_renderer_spec.rb +0 -53
- data/spec/lib/vcr/cassette/http_interaction_list_spec.rb +0 -295
- data/spec/lib/vcr/cassette/migrator_spec.rb +0 -196
- data/spec/lib/vcr/cassette/persisters/file_system_spec.rb +0 -75
- data/spec/lib/vcr/cassette/persisters_spec.rb +0 -39
- data/spec/lib/vcr/cassette/serializers_spec.rb +0 -182
- data/spec/lib/vcr/cassette_spec.rb +0 -618
- data/spec/lib/vcr/configuration_spec.rb +0 -326
- data/spec/lib/vcr/deprecations_spec.rb +0 -85
- data/spec/lib/vcr/errors_spec.rb +0 -178
- data/spec/lib/vcr/extensions/net_http_response_spec.rb +0 -86
- data/spec/lib/vcr/library_hooks/excon_spec.rb +0 -104
- data/spec/lib/vcr/library_hooks/fakeweb_spec.rb +0 -169
- data/spec/lib/vcr/library_hooks/faraday_spec.rb +0 -68
- data/spec/lib/vcr/library_hooks/typhoeus_0.4_spec.rb +0 -36
- data/spec/lib/vcr/library_hooks/typhoeus_spec.rb +0 -162
- data/spec/lib/vcr/library_hooks/webmock_spec.rb +0 -117
- data/spec/lib/vcr/library_hooks_spec.rb +0 -51
- data/spec/lib/vcr/middleware/faraday_spec.rb +0 -181
- data/spec/lib/vcr/middleware/rack_spec.rb +0 -115
- data/spec/lib/vcr/request_ignorer_spec.rb +0 -70
- data/spec/lib/vcr/request_matcher_registry_spec.rb +0 -345
- data/spec/lib/vcr/structs_spec.rb +0 -732
- data/spec/lib/vcr/test_frameworks/cucumber_spec.rb +0 -107
- data/spec/lib/vcr/test_frameworks/rspec_spec.rb +0 -94
- data/spec/lib/vcr/util/hooks_spec.rb +0 -158
- data/spec/lib/vcr/util/internet_connection_spec.rb +0 -37
- data/spec/lib/vcr/util/version_checker_spec.rb +0 -31
- data/spec/lib/vcr/version_spec.rb +0 -27
- data/spec/lib/vcr_spec.rb +0 -354
- data/spec/monkey_patches.rb +0 -186
- data/spec/spec_helper.rb +0 -63
- data/spec/support/configuration_stubbing.rb +0 -8
- data/spec/support/cucumber_helpers.rb +0 -39
- data/spec/support/fixnum_extension.rb +0 -10
- data/spec/support/http_library_adapters.rb +0 -289
- data/spec/support/limited_uri.rb +0 -21
- data/spec/support/ruby_interpreter.rb +0 -7
- data/spec/support/shared_example_groups/excon.rb +0 -63
- data/spec/support/shared_example_groups/hook_into_http_library.rb +0 -594
- data/spec/support/shared_example_groups/request_hooks.rb +0 -59
- data/spec/support/sinatra_app.rb +0 -86
- data/spec/support/vcr_localhost_server.rb +0 -76
- data/spec/support/vcr_stub_helpers.rb +0 -17
| @@ -1,49 +0,0 @@ | |
| 1 | 
            -
            Feature: Usage with Test::Unit
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              To use VCR with Test::Unit, wrap the body of any test method in
         | 
| 4 | 
            -
              `VCR.use_cassette`.
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              Scenario: Use `VCR.use_cassette` in a test
         | 
| 7 | 
            -
                Given a file named "test/test_server.rb" with:
         | 
| 8 | 
            -
                  """ruby
         | 
| 9 | 
            -
                  $server = start_sinatra_app do
         | 
| 10 | 
            -
                    get('/') { "Hello" }
         | 
| 11 | 
            -
                  end
         | 
| 12 | 
            -
                  """
         | 
| 13 | 
            -
                Given a file named "test/test_helper.rb" with:
         | 
| 14 | 
            -
                  """ruby
         | 
| 15 | 
            -
                  require 'test/test_server' if ENV['SERVER'] == 'true'
         | 
| 16 | 
            -
                  require 'test/unit'
         | 
| 17 | 
            -
                  require 'vcr'
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  VCR.configure do |c|
         | 
| 20 | 
            -
                    c.hook_into :webmock
         | 
| 21 | 
            -
                    c.cassette_library_dir = 'test/fixtures/vcr_cassettes'
         | 
| 22 | 
            -
                    c.default_cassette_options = {
         | 
| 23 | 
            -
                      :match_requests_on => [:method, :host, :path]
         | 
| 24 | 
            -
                    }
         | 
| 25 | 
            -
                  end
         | 
| 26 | 
            -
                  """
         | 
| 27 | 
            -
                And a file named "test/vcr_example_test.rb" with:
         | 
| 28 | 
            -
                  """ruby
         | 
| 29 | 
            -
                  require 'test_helper'
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                  class VCRExampleTest < Test::Unit::TestCase
         | 
| 32 | 
            -
                    def test_use_vcr
         | 
| 33 | 
            -
                      VCR.use_cassette('test_unit_example') do
         | 
| 34 | 
            -
                        response = Net::HTTP.get_response('localhost', '/', $server ? $server.port : 0)
         | 
| 35 | 
            -
                        assert_equal "Hello", response.body
         | 
| 36 | 
            -
                      end
         | 
| 37 | 
            -
                    end
         | 
| 38 | 
            -
                  end
         | 
| 39 | 
            -
                  """
         | 
| 40 | 
            -
                And the directory "test/fixtures/vcr_cassettes" does not exist
         | 
| 41 | 
            -
                When I set the "SERVER" environment variable to "true"
         | 
| 42 | 
            -
                 And I run `ruby -Itest test/vcr_example_test.rb`
         | 
| 43 | 
            -
                Then it should pass with "1 tests, 1 assertions, 0 failures, 0 errors"
         | 
| 44 | 
            -
                And the file "test/fixtures/vcr_cassettes/test_unit_example.yml" should contain "Hello"
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                # Run again without starting the sinatra server so the response will be replayed
         | 
| 47 | 
            -
                When I set the "SERVER" environment variable to "false"
         | 
| 48 | 
            -
                 And I run `ruby -Itest test/vcr_example_test.rb`
         | 
| 49 | 
            -
                Then it should pass with "1 tests, 1 assertions, 0 failures, 0 errors"
         | 
| @@ -1,36 +0,0 @@ | |
| 1 | 
            -
            module VCR
         | 
| 2 | 
            -
              # @private
         | 
| 3 | 
            -
              module Net
         | 
| 4 | 
            -
                # A Net::HTTP response that has already been read raises an IOError when #read_body
         | 
| 5 | 
            -
                # is called with a destination string or block.
         | 
| 6 | 
            -
                #
         | 
| 7 | 
            -
                # This causes a problem when VCR records a response--it reads the body before yielding
         | 
| 8 | 
            -
                # the response, and if the code that is consuming the HTTP requests uses #read_body, it
         | 
| 9 | 
            -
                # can cause an error.
         | 
| 10 | 
            -
                #
         | 
| 11 | 
            -
                # This is a bit of a hack, but it allows a Net::HTTP response to be "re-read"
         | 
| 12 | 
            -
                # after it has aleady been read.  This attemps to preserve the behavior of
         | 
| 13 | 
            -
                # #read_body, acting just as if it had never been read.
         | 
| 14 | 
            -
                # @private
         | 
| 15 | 
            -
                module HTTPResponse
         | 
| 16 | 
            -
                  def self.extended(response)
         | 
| 17 | 
            -
                    response.instance_variable_set(:@__read_body_previously_called, false)
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                  def read_body(dest = nil, &block)
         | 
| 21 | 
            -
                    return super if @__read_body_previously_called
         | 
| 22 | 
            -
                    return @body if dest.nil? && block.nil?
         | 
| 23 | 
            -
                    raise ArgumentError.new("both arg and block given for HTTP method") if dest && block
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                    if @body
         | 
| 26 | 
            -
                      dest ||= ::Net::ReadAdapter.new(block)
         | 
| 27 | 
            -
                      dest << @body
         | 
| 28 | 
            -
                      @body = dest
         | 
| 29 | 
            -
                    end
         | 
| 30 | 
            -
                  ensure
         | 
| 31 | 
            -
                    # allow subsequent calls to #read_body to proceed as normal, without our hack...
         | 
| 32 | 
            -
                    @__read_body_previously_called = true
         | 
| 33 | 
            -
                  end
         | 
| 34 | 
            -
                end
         | 
| 35 | 
            -
              end
         | 
| 36 | 
            -
            end
         | 
| @@ -1,197 +0,0 @@ | |
| 1 | 
            -
            require 'vcr/util/version_checker'
         | 
| 2 | 
            -
            require 'fakeweb'
         | 
| 3 | 
            -
            require 'net/http'
         | 
| 4 | 
            -
            require 'vcr/extensions/net_http_response'
         | 
| 5 | 
            -
            require 'vcr/request_handler'
         | 
| 6 | 
            -
            require 'set'
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            VCR::VersionChecker.new('FakeWeb', FakeWeb::VERSION, '1.3.0').check_version!
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            module VCR
         | 
| 11 | 
            -
              class LibraryHooks
         | 
| 12 | 
            -
                # @private
         | 
| 13 | 
            -
                module FakeWeb
         | 
| 14 | 
            -
                  # @private
         | 
| 15 | 
            -
                  class RequestHandler < ::VCR::RequestHandler
         | 
| 16 | 
            -
                    attr_reader :net_http, :request, :request_body, :response_block
         | 
| 17 | 
            -
                    def initialize(net_http, request, request_body = nil, &response_block)
         | 
| 18 | 
            -
                      @net_http, @request, @request_body, @response_block =
         | 
| 19 | 
            -
                       net_http,  request,  request_body,  response_block
         | 
| 20 | 
            -
                      @stubbed_response, @vcr_response, @recursing = nil, nil, false
         | 
| 21 | 
            -
                    end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                    def handle
         | 
| 24 | 
            -
                      super
         | 
| 25 | 
            -
                    ensure
         | 
| 26 | 
            -
                      invoke_after_request_hook(@vcr_response) unless @recursing
         | 
| 27 | 
            -
                    end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                  private
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                    def externally_stubbed?
         | 
| 32 | 
            -
                      ::FakeWeb.registered_uri?(request_method, uri)
         | 
| 33 | 
            -
                    end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                    def on_externally_stubbed_request
         | 
| 36 | 
            -
                      # just perform the request--FakeWeb will handle it
         | 
| 37 | 
            -
                      perform_request(:started)
         | 
| 38 | 
            -
                    end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                    def on_recordable_request
         | 
| 41 | 
            -
                      perform_request(net_http.started?, :record_interaction)
         | 
| 42 | 
            -
                    end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                    def on_stubbed_by_vcr_request
         | 
| 45 | 
            -
                      with_exclusive_fakeweb_stub(stubbed_response) do
         | 
| 46 | 
            -
                        # force it to be considered started since it doesn't
         | 
| 47 | 
            -
                        # recurse in this case like the others.
         | 
| 48 | 
            -
                        perform_request(:started)
         | 
| 49 | 
            -
                      end
         | 
| 50 | 
            -
                    end
         | 
| 51 | 
            -
             | 
| 52 | 
            -
                    def on_ignored_request
         | 
| 53 | 
            -
                      perform_request(net_http.started?)
         | 
| 54 | 
            -
                    end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                    def perform_request(started, record_interaction = false)
         | 
| 57 | 
            -
                      # Net::HTTP calls #request recursively in certain circumstances.
         | 
| 58 | 
            -
                      # We only want to record the request when the request is started, as
         | 
| 59 | 
            -
                      # that is the final time through #request.
         | 
| 60 | 
            -
                      unless started
         | 
| 61 | 
            -
                        @recursing = true
         | 
| 62 | 
            -
                        request.instance_variable_set(:@__vcr_request_handler, recursive_request_handler)
         | 
| 63 | 
            -
                        return net_http.request_without_vcr(request, request_body, &response_block)
         | 
| 64 | 
            -
                      end
         | 
| 65 | 
            -
             | 
| 66 | 
            -
                      net_http.request_without_vcr(request, request_body) do |response|
         | 
| 67 | 
            -
                        @vcr_response = vcr_response_from(response)
         | 
| 68 | 
            -
             | 
| 69 | 
            -
                        if record_interaction
         | 
| 70 | 
            -
                          VCR.record_http_interaction VCR::HTTPInteraction.new(vcr_request, @vcr_response)
         | 
| 71 | 
            -
                        end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                        response.extend VCR::Net::HTTPResponse # "unwind" the response
         | 
| 74 | 
            -
                        response_block.call(response) if response_block
         | 
| 75 | 
            -
                      end
         | 
| 76 | 
            -
                    end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                    def uri
         | 
| 79 | 
            -
                      @uri ||= ::FakeWeb::Utility.request_uri_as_string(net_http, request)
         | 
| 80 | 
            -
                    end
         | 
| 81 | 
            -
             | 
| 82 | 
            -
                    def response_hash(response)
         | 
| 83 | 
            -
                      (response.headers || {}).merge(
         | 
| 84 | 
            -
                        :body   => response.body,
         | 
| 85 | 
            -
                        :status => [response.status.code.to_s, response.status.message]
         | 
| 86 | 
            -
                      )
         | 
| 87 | 
            -
                    end
         | 
| 88 | 
            -
             | 
| 89 | 
            -
                    def with_exclusive_fakeweb_stub(response)
         | 
| 90 | 
            -
                      original_map = ::FakeWeb::Registry.instance.uri_map.dup
         | 
| 91 | 
            -
                      ::FakeWeb.clean_registry
         | 
| 92 | 
            -
                      ::FakeWeb.register_uri(:any, /.*/, response_hash(response))
         | 
| 93 | 
            -
             | 
| 94 | 
            -
                      begin
         | 
| 95 | 
            -
                        return yield
         | 
| 96 | 
            -
                      ensure
         | 
| 97 | 
            -
                        ::FakeWeb::Registry.instance.uri_map = original_map
         | 
| 98 | 
            -
                      end
         | 
| 99 | 
            -
                    end
         | 
| 100 | 
            -
             | 
| 101 | 
            -
                    def request_method
         | 
| 102 | 
            -
                      request.method.downcase.to_sym
         | 
| 103 | 
            -
                    end
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                    def vcr_request
         | 
| 106 | 
            -
                      @vcr_request ||= VCR::Request.new \
         | 
| 107 | 
            -
                        request_method,
         | 
| 108 | 
            -
                        uri,
         | 
| 109 | 
            -
                        (request_body || request.body),
         | 
| 110 | 
            -
                        request.to_hash
         | 
| 111 | 
            -
                    end
         | 
| 112 | 
            -
             | 
| 113 | 
            -
                    def vcr_response_from(response)
         | 
| 114 | 
            -
                      VCR::Response.new \
         | 
| 115 | 
            -
                        VCR::ResponseStatus.new(response.code.to_i, response.message),
         | 
| 116 | 
            -
                        response.to_hash,
         | 
| 117 | 
            -
                        response.body,
         | 
| 118 | 
            -
                        response.http_version
         | 
| 119 | 
            -
                    end
         | 
| 120 | 
            -
             | 
| 121 | 
            -
                    def recursive_request_handler
         | 
| 122 | 
            -
                      @recursive_request_handler ||= RecursiveRequestHandler.new(
         | 
| 123 | 
            -
                        @after_hook_typed_request.type, @stubbed_response, @vcr_request,
         | 
| 124 | 
            -
                        @net_http, @request, @request_body, &@response_block
         | 
| 125 | 
            -
                      )
         | 
| 126 | 
            -
                    end
         | 
| 127 | 
            -
                  end
         | 
| 128 | 
            -
             | 
| 129 | 
            -
                  # @private
         | 
| 130 | 
            -
                  class RecursiveRequestHandler < RequestHandler
         | 
| 131 | 
            -
                    attr_reader :stubbed_response
         | 
| 132 | 
            -
             | 
| 133 | 
            -
                    def initialize(request_type, stubbed_response, vcr_request, *args, &response_block)
         | 
| 134 | 
            -
                      @request_type, @stubbed_response, @vcr_request =
         | 
| 135 | 
            -
                       request_type,  stubbed_response,  vcr_request
         | 
| 136 | 
            -
                      super(*args)
         | 
| 137 | 
            -
                    end
         | 
| 138 | 
            -
             | 
| 139 | 
            -
                    def handle
         | 
| 140 | 
            -
                      set_typed_request_for_after_hook(@request_type)
         | 
| 141 | 
            -
                      send "on_#{@request_type}_request"
         | 
| 142 | 
            -
                    ensure
         | 
| 143 | 
            -
                      invoke_after_request_hook(@vcr_response)
         | 
| 144 | 
            -
                    end
         | 
| 145 | 
            -
             | 
| 146 | 
            -
                    def request_type(*args)
         | 
| 147 | 
            -
                      @request_type
         | 
| 148 | 
            -
                    end
         | 
| 149 | 
            -
                  end
         | 
| 150 | 
            -
                end
         | 
| 151 | 
            -
              end
         | 
| 152 | 
            -
            end
         | 
| 153 | 
            -
             | 
| 154 | 
            -
            # @private
         | 
| 155 | 
            -
            module Net
         | 
| 156 | 
            -
              # @private
         | 
| 157 | 
            -
              class HTTP
         | 
| 158 | 
            -
                unless method_defined?(:request_with_vcr)
         | 
| 159 | 
            -
                  def request_with_vcr(request, *args, &block)
         | 
| 160 | 
            -
                    if VCR.turned_on?
         | 
| 161 | 
            -
                      handler = request.instance_eval do
         | 
| 162 | 
            -
                        remove_instance_variable(:@__vcr_request_handler) if defined?(@__vcr_request_handler)
         | 
| 163 | 
            -
                      end || VCR::LibraryHooks::FakeWeb::RequestHandler.new(self, request, *args, &block)
         | 
| 164 | 
            -
             | 
| 165 | 
            -
                      handler.handle
         | 
| 166 | 
            -
                    else
         | 
| 167 | 
            -
                      request_without_vcr(request, *args, &block)
         | 
| 168 | 
            -
                    end
         | 
| 169 | 
            -
                  end
         | 
| 170 | 
            -
             | 
| 171 | 
            -
                  alias request_without_vcr request
         | 
| 172 | 
            -
                  alias request request_with_vcr
         | 
| 173 | 
            -
                end
         | 
| 174 | 
            -
              end
         | 
| 175 | 
            -
            end
         | 
| 176 | 
            -
             | 
| 177 | 
            -
            # @private
         | 
| 178 | 
            -
            module FakeWeb
         | 
| 179 | 
            -
              class << self
         | 
| 180 | 
            -
                # ensure HTTP requests are always allowed; VCR takes care of disallowing
         | 
| 181 | 
            -
                # them at the appropriate times in its hook
         | 
| 182 | 
            -
                def allow_net_connect_with_vcr?(*args)
         | 
| 183 | 
            -
                  VCR.turned_on? ? true : allow_net_connect_without_vcr?(*args)
         | 
| 184 | 
            -
                end
         | 
| 185 | 
            -
             | 
| 186 | 
            -
                alias allow_net_connect_without_vcr? allow_net_connect?
         | 
| 187 | 
            -
                alias allow_net_connect? allow_net_connect_with_vcr?
         | 
| 188 | 
            -
              end unless respond_to?(:allow_net_connect_with_vcr?)
         | 
| 189 | 
            -
            end
         | 
| 190 | 
            -
             | 
| 191 | 
            -
            VCR.configuration.after_library_hooks_loaded do
         | 
| 192 | 
            -
              if defined?(WebMock)
         | 
| 193 | 
            -
                raise ArgumentError.new("You have configured VCR to hook into both :fakeweb and :webmock. You cannot use both.")
         | 
| 194 | 
            -
              end
         | 
| 195 | 
            -
              ::Kernel.warn "WARNING: VCR's FakeWeb integration is deprecated and will be removed in VCR 4.0."
         | 
| 196 | 
            -
            end
         | 
| 197 | 
            -
             | 
| @@ -1,51 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe VCR do
         | 
| 4 | 
            -
              def recorded_content_for(name)
         | 
| 5 | 
            -
                VCR.cassette_persisters[:file_system]["#{name}.yml"].to_s
         | 
| 6 | 
            -
              end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              context 'when used in a multithreaded environment with an around_http_request', :with_monkey_patches => :excon do
         | 
| 9 | 
            -
                def preload_yaml_serializer_to_avoid_circular_require_warning_race_condition
         | 
| 10 | 
            -
                  VCR.cassette_serializers[:yaml]
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                before { preload_yaml_serializer_to_avoid_circular_require_warning_race_condition }
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                it 'can use a cassette in an #around_http_request hook', :if => (RUBY_VERSION.to_f > 1.8) do
         | 
| 16 | 
            -
                  VCR.configure do |vcr|
         | 
| 17 | 
            -
                    vcr.around_http_request do |req|
         | 
| 18 | 
            -
                      VCR.use_cassette(req.parsed_uri.path, &req)
         | 
| 19 | 
            -
                    end
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                  threads = 50.times.map do
         | 
| 23 | 
            -
                    Thread.start do
         | 
| 24 | 
            -
                      Excon.get "http://localhost:#{VCR::SinatraApp.port}/search?q=thread"
         | 
| 25 | 
            -
                    end
         | 
| 26 | 
            -
                  end
         | 
| 27 | 
            -
                  Excon.get "http://localhost:#{VCR::SinatraApp.port}/foo"
         | 
| 28 | 
            -
                  threads.each(&:join)
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                  expect(recorded_content_for("search") +
         | 
| 31 | 
            -
                         recorded_content_for("foo")).to include("query: thread", "FOO!")
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
              end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
              context 'when used in a multithreaded environment with a cassette', :with_monkey_patches => :excon do
         | 
| 36 | 
            -
                it 'properly stubs threaded requests' do
         | 
| 37 | 
            -
                  VCR.use_cassette('/foo') do
         | 
| 38 | 
            -
                    threads = 50.times.map do
         | 
| 39 | 
            -
                      Thread.start do
         | 
| 40 | 
            -
                        Excon.get "http://localhost:#{VCR::SinatraApp.port}/foo"
         | 
| 41 | 
            -
                      end
         | 
| 42 | 
            -
                    end
         | 
| 43 | 
            -
                    threads.each(&:join)
         | 
| 44 | 
            -
                  end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                  expect(
         | 
| 47 | 
            -
                    recorded_content_for("foo")).to include("FOO!")
         | 
| 48 | 
            -
                end
         | 
| 49 | 
            -
              end
         | 
| 50 | 
            -
            end
         | 
| 51 | 
            -
             | 
| @@ -1,34 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe VCR do
         | 
| 4 | 
            -
              context 'when used in a multithreaded environment', :with_monkey_patches => :excon do
         | 
| 5 | 
            -
                def preload_yaml_serializer_to_avoid_circular_require_warning_race_condition
         | 
| 6 | 
            -
                  VCR.cassette_serializers[:yaml]
         | 
| 7 | 
            -
                end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                before { preload_yaml_serializer_to_avoid_circular_require_warning_race_condition }
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                def recorded_content_for(name)
         | 
| 12 | 
            -
                  VCR.cassette_persisters[:file_system]["#{name}.yml"].to_s
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                it 'can use a cassette in an #around_http_request hook', :if => (RUBY_VERSION.to_f > 1.8) do
         | 
| 16 | 
            -
                  VCR.configure do |vcr|
         | 
| 17 | 
            -
                    vcr.around_http_request do |req|
         | 
| 18 | 
            -
                      VCR.use_cassette(req.parsed_uri.path, &req)
         | 
| 19 | 
            -
                    end
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                  thread = Thread.start do
         | 
| 23 | 
            -
                    Excon.get "http://localhost:#{VCR::SinatraApp.port}/search?q=thread"
         | 
| 24 | 
            -
                  end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  Excon.get "http://localhost:#{VCR::SinatraApp.port}/foo",
         | 
| 27 | 
            -
                    :response_block => Proc.new { thread.join }
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                  expect(recorded_content_for("search") +
         | 
| 30 | 
            -
                         recorded_content_for("foo")).to include("query: thread", "FOO!")
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
            end
         | 
| 34 | 
            -
             | 
| @@ -1,110 +0,0 @@ | |
| 1 | 
            -
            --- 
         | 
| 2 | 
            -
            - !ruby/struct:VCR::HTTPInteraction 
         | 
| 3 | 
            -
              request: !ruby/struct:VCR::Request 
         | 
| 4 | 
            -
                method: :get
         | 
| 5 | 
            -
                uri: http://example.com:80/
         | 
| 6 | 
            -
                body: 
         | 
| 7 | 
            -
                headers: 
         | 
| 8 | 
            -
              response: !ruby/struct:VCR::Response 
         | 
| 9 | 
            -
                status: !ruby/struct:VCR::ResponseStatus 
         | 
| 10 | 
            -
                  code: 200
         | 
| 11 | 
            -
                  message: OK
         | 
| 12 | 
            -
                headers: 
         | 
| 13 | 
            -
                  last-modified: 
         | 
| 14 | 
            -
                  - Tue, 15 Nov 2005 13:24:10 GMT
         | 
| 15 | 
            -
                  connection: 
         | 
| 16 | 
            -
                  - Keep-Alive
         | 
| 17 | 
            -
                  date: 
         | 
| 18 | 
            -
                  - Thu, 25 Feb 2010 07:52:38 GMT
         | 
| 19 | 
            -
                  content-type: 
         | 
| 20 | 
            -
                  - text/html; charset=UTF-8
         | 
| 21 | 
            -
                  etag: 
         | 
| 22 | 
            -
                  - "\"24ec5-1b6-4059a80bfd280\""
         | 
| 23 | 
            -
                  server: 
         | 
| 24 | 
            -
                  - Apache/2.2.3 (CentOS)
         | 
| 25 | 
            -
                  content-length: 
         | 
| 26 | 
            -
                  - "438"
         | 
| 27 | 
            -
                  age: 
         | 
| 28 | 
            -
                  - "3009"
         | 
| 29 | 
            -
                  accept-ranges: 
         | 
| 30 | 
            -
                  - bytes
         | 
| 31 | 
            -
                body: |
         | 
| 32 | 
            -
                  <HTML>
         | 
| 33 | 
            -
                  <HEAD>
         | 
| 34 | 
            -
                    <TITLE>Example Web Page</TITLE>
         | 
| 35 | 
            -
                  </HEAD> 
         | 
| 36 | 
            -
                  <body>  
         | 
| 37 | 
            -
                  <p>You have reached this web page by typing "example.com",
         | 
| 38 | 
            -
                  "example.net",
         | 
| 39 | 
            -
                    or "example.org" into your web browser.</p>
         | 
| 40 | 
            -
                  <p>These domain names are reserved for use in documentation and are not available 
         | 
| 41 | 
            -
                    for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC 
         | 
| 42 | 
            -
                    2606</a>, Section 3.</p>
         | 
| 43 | 
            -
                  </BODY>
         | 
| 44 | 
            -
                  </HTML>
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                http_version: "1.1"
         | 
| 47 | 
            -
            - !ruby/struct:VCR::HTTPInteraction 
         | 
| 48 | 
            -
              request: !ruby/struct:VCR::Request 
         | 
| 49 | 
            -
                method: :get
         | 
| 50 | 
            -
                uri: http://example.com:80/foo
         | 
| 51 | 
            -
                body: 
         | 
| 52 | 
            -
                headers: 
         | 
| 53 | 
            -
              response: !ruby/struct:VCR::Response 
         | 
| 54 | 
            -
                status: !ruby/struct:VCR::ResponseStatus 
         | 
| 55 | 
            -
                  code: 404
         | 
| 56 | 
            -
                  message: Not Found
         | 
| 57 | 
            -
                headers: 
         | 
| 58 | 
            -
                  connection: 
         | 
| 59 | 
            -
                  - close
         | 
| 60 | 
            -
                  content-type: 
         | 
| 61 | 
            -
                  - text/html; charset=iso-8859-1
         | 
| 62 | 
            -
                  date: 
         | 
| 63 | 
            -
                  - Thu, 25 Feb 2010 07:52:38 GMT
         | 
| 64 | 
            -
                  server: 
         | 
| 65 | 
            -
                  - Apache/2.2.3 (CentOS)
         | 
| 66 | 
            -
                  content-length: 
         | 
| 67 | 
            -
                  - "277"
         | 
| 68 | 
            -
                body: |
         | 
| 69 | 
            -
                  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
         | 
| 70 | 
            -
                  <html><head>
         | 
| 71 | 
            -
                  <title>404 Not Found</title>
         | 
| 72 | 
            -
                  </head><body>
         | 
| 73 | 
            -
                  <h1>Not Found</h1>
         | 
| 74 | 
            -
                  <p>The requested URL /foo was not found on this server.</p>
         | 
| 75 | 
            -
                  <hr>
         | 
| 76 | 
            -
                  <address>Apache/2.2.3 (CentOS) Server at example.com Port 80</address>
         | 
| 77 | 
            -
                  </body></html>
         | 
| 78 | 
            -
             | 
| 79 | 
            -
                http_version: "1.1"
         | 
| 80 | 
            -
            - !ruby/struct:VCR::HTTPInteraction 
         | 
| 81 | 
            -
              request: !ruby/struct:VCR::Request 
         | 
| 82 | 
            -
                method: :get
         | 
| 83 | 
            -
                uri: http://example.com:80/
         | 
| 84 | 
            -
                body: 
         | 
| 85 | 
            -
                headers: 
         | 
| 86 | 
            -
              response: !ruby/struct:VCR::Response 
         | 
| 87 | 
            -
                status: !ruby/struct:VCR::ResponseStatus 
         | 
| 88 | 
            -
                  code: 200
         | 
| 89 | 
            -
                  message: OK
         | 
| 90 | 
            -
                headers: 
         | 
| 91 | 
            -
                  last-modified: 
         | 
| 92 | 
            -
                  - Tue, 15 Nov 2005 13:24:10 GMT
         | 
| 93 | 
            -
                  connection: 
         | 
| 94 | 
            -
                  - Keep-Alive
         | 
| 95 | 
            -
                  date: 
         | 
| 96 | 
            -
                  - Thu, 25 Feb 2010 07:52:38 GMT
         | 
| 97 | 
            -
                  content-type: 
         | 
| 98 | 
            -
                  - text/html; charset=UTF-8
         | 
| 99 | 
            -
                  etag: 
         | 
| 100 | 
            -
                  - "\"24ec5-1b6-4059a80bfd280\""
         | 
| 101 | 
            -
                  server: 
         | 
| 102 | 
            -
                  - Apache/2.2.3 (CentOS)
         | 
| 103 | 
            -
                  content-length: 
         | 
| 104 | 
            -
                  - "438"
         | 
| 105 | 
            -
                  age: 
         | 
| 106 | 
            -
                  - "3009"
         | 
| 107 | 
            -
                  accept-ranges: 
         | 
| 108 | 
            -
                  - bytes
         | 
| 109 | 
            -
                body: Another example.com response
         | 
| 110 | 
            -
                http_version: "1.1"
         |