File: allow_http_connections_when_no_cassette.feature

package info (click to toggle)
ruby-vcr 6.0.0%2Breally5.0.0-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,320 kB
  • sloc: ruby: 8,456; sh: 177; makefile: 7
file content (55 lines) | stat: -rw-r--r-- 1,880 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Feature: Allow HTTP connections when no cassette

  Usually, HTTP requests made when no cassette is inserted will [result in an
  error](../cassettes/error-for-http-request-made-when-no-cassette-is-in-use).
  You can set the `allow_http_connections_when_no_cassette` configuration option
  to true to allow requests, if you do not want to use VCR for everything.

  Background:
    Given a file named "vcr_setup.rb" with:
      """ruby
      if ARGV.include?('--with-server')
        $server = start_sinatra_app do
          get('/') { "Hello" }
        end
      end

      require 'vcr'

      VCR.configure do |c|
        c.allow_http_connections_when_no_cassette = true
        c.hook_into :webmock
        c.cassette_library_dir = 'cassettes'
        c.default_cassette_options = {
          :match_requests_on => [:method, :host, :path]
        }
      end
      """
    And the directory "vcr/cassettes" does not exist

  Scenario: Allow HTTP connections when no cassette
    Given a file named "no_cassette.rb" with:
      """ruby
      require 'vcr_setup.rb'

      puts "Response: " + Net::HTTP.get_response('localhost', '/', $server ? $server.port : 0).body
      """
    When I run `ruby no_cassette.rb --with-server`
    Then the output should contain "Response: Hello"

  Scenario: Cassettes record and replay as normal
    Given a file named "record_replay_cassette.rb" with:
      """ruby
      require 'vcr_setup.rb'

      VCR.use_cassette('localhost') do
        puts "Response: " + Net::HTTP.get_response('localhost', '/', $server ? $server.port : 0).body
      end
      """
    When I run `ruby record_replay_cassette.rb --with-server`
    Then the output should contain "Response: Hello"
    And the file "cassettes/localhost.yml" should contain "Hello"

    When I run `ruby record_replay_cassette.rb`
    Then the output should contain "Response: Hello"