cassette 1.2.6 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 537dfe98da3fa2ff458b4dcd7c8a4288711e8c44bc7093dd3271a2b10b2c7ceb
4
- data.tar.gz: 0e61274545f74bcc569503231f9f856e2121af0e20b1843f10ac2f60fc6dc708
3
+ metadata.gz: 302159bc190555686c97fdbd0ab7ef6c62b05b86a6a5d46fd78461e907d93a54
4
+ data.tar.gz: 70eba247639f254a5cf546a25cb49254c5bc26972f7f70d11840ff0f1d381c7c
5
5
  SHA512:
6
- metadata.gz: f6befb3beb94dcfdfb5c021dd144e349a3d06fbe18a6013fb90049fecd5aa9c2996c512253dbc2d5f7c08594725ba22cfad296df3491857037f13a94d4f68dc1
7
- data.tar.gz: 461d20aa06ad57a0efad132883cbc005ab68160aa9bda58ec335e274d026abe298b829e179602020b375b03c222e3a743318be69af9ec500a92f32c39d489c85
6
+ metadata.gz: b404463f59f830361883b35297f95ce4caa6272d1257fea406bbea7060630b11e7d010b1e22cd703b6ed3a95f173250e0a14dff968a941db77ae0cbfb4be4ce5
7
+ data.tar.gz: 0b9d537f6e359af0372cc6b2248885b5eac7e6df89a5240da2e67d4a94d8bbac5a2084e0a3a6a1b70cb11e18f67f6da6f8138e8007c37ee2b31b6b2384e94a90
data/README.md CHANGED
@@ -25,10 +25,18 @@ $ bundle
25
25
  Require this library and create an intializer to set its configuration:
26
26
 
27
27
  ```ruby
28
- Cassette.config = config
28
+ Cassete.config = OpenStruct.new(
29
+ username: 'user',
30
+ password: 'secret',
31
+ service: 'test-api.example.org',
32
+ base: 'https://some-cas.example.org',
33
+ base_authority: 'CASTEST',
34
+ verify_ssl: true, # If not defined, the default value will be: false.
35
+ tls_version: 'TLSv1_2' # if not defined, the default value will be: 'TLSv1'.
36
+ )
29
37
  ```
30
38
 
31
- where config is an object that responds to the methods `base` for the base CAS uri, `username` and `password` if you are authenticating on other systems and `service` and `base_authority` if you are using the authentication filter to authenticate your app.
39
+ where config is an OpenStruct that responds to the methods `base` for the base CAS uri, `username` and `password` if you are authenticating on other systems and `service` and `base_authority` if you are using the authentication filter to authenticate your app.
32
40
 
33
41
  You may also set the caching backend using the .backend= module method:
34
42
 
@@ -14,6 +14,7 @@ require 'cassette/authentication/filter'
14
14
  require 'faraday'
15
15
  require 'forwardable'
16
16
  require 'logger'
17
+ require 'ostruct'
17
18
 
18
19
  module Cassette
19
20
  extend Forwardable
@@ -21,7 +22,9 @@ module Cassette
21
22
 
22
23
  attr_writer :config, :logger
23
24
 
24
- DEFAULT_TIMEOUT = 10
25
+ DEFAULT_TIMEOUT = 10
26
+ DEFAULT_TLS_VERSION = 'TLSv1_2'.freeze
27
+ DEFAULT_VERIFY_SSL = false
25
28
 
26
29
  def logger
27
30
  @logger ||= begin
@@ -34,7 +37,13 @@ module Cassette
34
37
  end
35
38
 
36
39
  def config
37
- @config if defined?(@config)
40
+ @config = OpenStruct.new unless defined?(@config)
41
+
42
+ @config.tls_version = DEFAULT_TLS_VERSION if @config.tls_version.nil?
43
+
44
+ @config.verify_ssl = DEFAULT_VERIFY_SSL if @config.verify_ssl.nil?
45
+
46
+ @config
38
47
  end
39
48
 
40
49
  def cache_backend
@@ -33,6 +33,10 @@ module Cassette
33
33
  Cassette.cache_backend
34
34
  end
35
35
 
36
+ def backend=(backend)
37
+ Cassette.cache_backend = backend
38
+ end
39
+
36
40
  def self.backend=(backend)
37
41
  ::Cassette.cache_backend = backend
38
42
  end
@@ -1,5 +1,3 @@
1
- # encoding: UTF-8
2
-
3
1
  module Cassette
4
2
  class Client
5
3
  def self.method_missing(name, *args)
@@ -20,12 +18,16 @@ module Cassette
20
18
 
21
19
  def tgt(usr, pwd, force = false)
22
20
  logger.info 'Requesting TGT'
23
- cache.fetch_tgt(force: force) do
24
- response = http.post(tickets_path, username: usr, password: pwd)
25
- tgt = Regexp.last_match(1) if response.headers['Location'] =~ /tickets\/(.*)/
26
- logger.info "TGT is #{tgt}"
27
- tgt
21
+ cached = true
22
+
23
+ tgt = cache.fetch_tgt(force: force) do
24
+ cached = false
25
+ request_new_tgt(usr, pwd)
28
26
  end
27
+
28
+ logger.info("TGT cache hit, value: '#{tgt}'") if cached
29
+
30
+ tgt
29
31
  end
30
32
 
31
33
  def st(tgt_param, service, force = false)
@@ -49,7 +51,7 @@ module Cassette
49
51
  attr_accessor :cache, :logger, :http, :config
50
52
 
51
53
  def st_with_retry(user, pass, service, retrying = false)
52
- st(->{ tgt(user, pass, retrying) }, service)
54
+ st(-> { tgt(user, pass, retrying) }, service)
53
55
  rescue Cassette::Errors::NotFound => e
54
56
  raise e if retrying
55
57
 
@@ -59,7 +61,14 @@ module Cassette
59
61
  end
60
62
 
61
63
  def tickets_path
62
- "/v1/tickets"
64
+ '/v1/tickets'
65
+ end
66
+
67
+ def request_new_tgt(usr, pwd)
68
+ response = http.post(tickets_path, username: usr, password: pwd)
69
+ tgt = Regexp.last_match(1) if response.headers['Location'] =~ %r{tickets/(.*)}
70
+ logger.info "TGT is #{tgt}"
71
+ tgt
63
72
  end
64
73
  end
65
74
  end
@@ -16,7 +16,7 @@ module Cassette
16
16
  def fetch_tgt(options = {}, &_block)
17
17
  options = { expires_in: 4 * 3600, max_uses: 5000, force: false }.merge(options)
18
18
  fetch('Cassette::Client.tgt', options) do
19
- logger.info 'TGT is not cached'
19
+ logger.info('TGT cache miss')
20
20
  yield
21
21
  end
22
22
  end
@@ -36,7 +36,8 @@ module Cassette
36
36
  end
37
37
 
38
38
  def request
39
- @request ||= Faraday.new(url: config.base, ssl: { verify: false, version: 'TLSv1' }) do |conn|
39
+ @request ||= Faraday.new(url: config.base, ssl:
40
+ { verify: config.verify_ssl, version: config.tls_version }) do |conn|
40
41
  conn.adapter Faraday.default_adapter
41
42
  end
42
43
  end
@@ -3,6 +3,7 @@ module Cassette
3
3
  module UserFactory
4
4
  def from_session(session)
5
5
  attributes = session[:cas_extra_attributes]
6
+ attributes = attributes.with_indifferent_access if attributes.respond_to?(:with_indifferent_access)
6
7
  Cassette::Authentication::User.new(login: session[:cas_user],
7
8
  name: attributes.try(:[], :cn),
8
9
  email: attributes.try(:[], :email),
@@ -1,8 +1,8 @@
1
1
  module Cassette
2
2
  class Version
3
- MAJOR = '1'
4
- MINOR = '2'
5
- PATCH = '6'
3
+ MAJOR = '1'.freeze
4
+ MINOR = '6'.freeze
5
+ PATCH = '0'.freeze
6
6
 
7
7
  def self.version
8
8
  [MAJOR, MINOR, PATCH].join('.')
@@ -65,8 +65,9 @@ describe Cassette::Authentication::Authorities do
65
65
  end
66
66
 
67
67
  context 'with authentication disabled' do
68
- before { ENV['NOAUTH'] = 'true' }
69
- after { ENV.delete('NOAUTH') }
68
+ before do
69
+ stub_const('ENV', ENV.to_hash.merge('NOAUTH' => 'true'))
70
+ end
70
71
  subject { Cassette::Authentication::Authorities.new('[]') }
71
72
 
72
73
  it '#has_role? returns true for every role' do
@@ -7,11 +7,7 @@ describe Cassette::Authentication::Filter do
7
7
 
8
8
  shared_context 'with NOAUTH' do
9
9
  before do
10
- ENV['NOAUTH'] = 'yes'
11
- end
12
-
13
- after do
14
- ENV.delete('NOAUTH')
10
+ stub_const('ENV', ENV.to_hash.merge('NOAUTH' => 'true'))
15
11
  end
16
12
  end
17
13
 
@@ -38,5 +38,27 @@ RSpec.describe Cassette::Rubycas::UserFactory do
38
38
  it { is_expected.to be_customer }
39
39
  it { is_expected.not_to be_employee }
40
40
  end
41
+
42
+ context 'when key cas_extra_attributes is string' do
43
+ let(:session) do
44
+ name = Faker.name
45
+
46
+ {
47
+ cas_user: Faker::Internet.user_name(name),
48
+ cas_extra_attributes: {
49
+ 'email' => Faker::Internet.email(name),
50
+ 'type' => 'Customer',
51
+ 'authorities' => '[CASTEST_ADMIN]'
52
+ }
53
+ }
54
+ end
55
+
56
+ its(:login) { is_expected.to eq(session[:cas_user]) }
57
+ its(:name) { is_expected.to eq(attributes['name']) }
58
+ its(:email) { is_expected.to eq(attributes['email']) }
59
+ its(:type) { is_expected.to eq(attributes['type'].downcase) }
60
+ it { is_expected.to be_customer }
61
+ it { is_expected.not_to be_employee }
62
+ end
41
63
  end
42
64
  end
@@ -4,18 +4,36 @@
4
4
 
5
5
  describe Cassette::Client::Cache do
6
6
  it 'uses the cache store set in configuration' do
7
+ # setup
8
+ global_cache = double('cache_store')
9
+ Cassette.cache_backend = global_cache
10
+
11
+ logger = Logger.new('/dev/null')
12
+
13
+ # exercise
14
+ client_cache = described_class.new(logger)
15
+
16
+ expect(client_cache.backend).to eq(global_cache)
17
+
18
+ # tear down
19
+ Cassette.cache_backend = nil
20
+ end
21
+
22
+ describe '.backend=' do
23
+ it 'sets the cache' do
7
24
  # setup
8
25
  global_cache = double('cache_store')
9
- Cassette.cache_backend = global_cache
10
-
11
26
  logger = Logger.new('/dev/null')
12
27
 
13
28
  # exercise
14
- client_cache = described_class.new(logger)
29
+ Cassette::Client.cache.backend = global_cache
15
30
 
16
- expect(client_cache.backend).to eq(global_cache)
31
+ # verify
32
+ client_cache = described_class.new(logger)
33
+ expect(client_cache.backend).to eql(global_cache)
17
34
 
18
35
  # tear down
19
36
  Cassette.cache_backend = nil
20
37
  end
38
+ end
21
39
  end
@@ -63,50 +63,87 @@ describe Cassette::Client do
63
63
  end
64
64
 
65
65
  context 'when tgt is not cached' do
66
- let(:tgt) { 'TGT-Something-example' }
67
- let(:force) { false }
66
+ after do
67
+ Cassette.logger = Logger.new('/dev/null')
68
+ end
68
69
 
69
- before do
70
- allow(cache).to receive(:fetch_tgt) do |opts, &_block|
71
- expect(opts[:force]).to eq false
72
- tgt
73
- end
70
+ it 'returns the tgt and logs correctly' do
71
+ Cassette::Client.cache.backend.clear
74
72
 
75
- allow(http).to receive(:post)
76
- end
73
+ tgt = 'TGT-Something-example'
74
+ response = double('response', headers: {'Location' => "tickets/#{tgt}"})
75
+ allow(http).to receive(:post).and_return(response)
76
+
77
+ logger = spy(:logger)
78
+ Cassette.logger = logger
77
79
 
78
- it { is_expected.to eq tgt }
80
+ client = Cassette::Client.new(http_client: http)
81
+
82
+ # exercise
83
+ result = client.tgt('user', 'pass')
84
+
85
+ # verify
86
+ expect(result).to eq(tgt)
87
+ expect(logger).to have_received(:info).with("TGT cache miss").ordered
88
+ expect(logger).to have_received(:info).with("TGT is #{tgt}").ordered
89
+ end
79
90
  end
80
91
 
81
92
  context 'with a cached tgt' do
82
- let(:tgt) { 'TGT-Something-example' }
93
+ after do
94
+ Cassette.logger = Logger.new('/dev/null')
95
+ end
83
96
 
84
- before do
85
- allow(cache).to receive(:fetch_tgt).with(hash_including(force: force))
86
- .and_return(tgt)
97
+ it 'returns the tgt from the cache and logs correctly' do
98
+ Cassette::Client.cache.backend.clear
87
99
 
88
- allow(http).to receive(:post)
89
- end
100
+ tgt = 'TGT-Something-example'
101
+ response = double('response', headers: {'Location' => "tickets/#{tgt}"})
102
+ allow(http).to receive(:post).and_return(response)
90
103
 
91
- shared_context 'force control' do
92
- it { is_expected.to eq tgt }
104
+ # this first call is to set the cache
105
+ client = Cassette::Client.new(http_client: http)
106
+ result = client.tgt('user', 'pass')
93
107
 
94
- it 'forwards force to the cache' do
95
- subject
96
- expect(cache).to have_received(:fetch_tgt).with(hash_including(force: force))
97
- end
98
- end
108
+ logger = spy(:logger)
109
+ Cassette.logger = logger
110
+ client = Cassette::Client.new(http_client: http)
99
111
 
100
- context 'and no force' do
101
- let(:force) { false }
112
+ # exercise
113
+ result = client.tgt('user', 'pass')
102
114
 
103
- include_context 'force control'
115
+ # verify
116
+ expect(result).to eq(tgt)
117
+ expect(logger).to have_received(:info).with("TGT cache hit, value: '#{tgt}'")
104
118
  end
105
119
 
106
- context 'and using the force' do
107
- let(:force) { true }
120
+ it 'generates another tgt when the param force is true' do
121
+ Cassette::Client.cache.backend.clear
122
+
123
+ tgt = 'TGT-Something-example'
124
+ response = double('response', headers: {'Location' => "tickets/#{tgt}"})
125
+ allow(http).to receive(:post).and_return(response)
126
+
127
+ # this first call is to set the cache
128
+ client = Cassette::Client.new(http_client: http)
129
+ result = client.tgt('user', 'pass')
130
+
131
+ tgt2 = 'TGT2-Something-example'
132
+ response = double('response', headers: {'Location' => "tickets/#{tgt2}"})
133
+ allow(http).to receive(:post).and_return(response)
134
+
135
+ logger = spy(:logger)
136
+ Cassette.logger = logger
137
+ client = Cassette::Client.new(http_client: http)
138
+
139
+ # exercise
140
+ force = true
141
+ result = client.tgt('user', 'pass', force)
108
142
 
109
- include_context 'force control'
143
+ # verify
144
+ expect(result).to eq(tgt2)
145
+ expect(logger).to have_received(:info).with("TGT cache miss").ordered
146
+ expect(logger).to have_received(:info).with("TGT is #{tgt2}").ordered
110
147
  end
111
148
  end
112
149
  end
@@ -7,6 +7,78 @@ describe Cassette do
7
7
  Cassette.logger = original_logger
8
8
  end
9
9
 
10
+ describe '.config' do
11
+ it 'defines Cassette initial configuration based on a OpenStruct' do
12
+
13
+ config = OpenStruct.new(
14
+ YAML.load_file('spec/config.yml')
15
+ )
16
+
17
+ Cassette.config = config
18
+
19
+ expect(Cassette.config)
20
+ .to eq(config)
21
+ end
22
+
23
+ context 'when tls_version was not specified' do
24
+ it 'uses default TLS version: TLSv1_2' do
25
+ config = OpenStruct.new(
26
+ YAML.load_file('spec/config.yml')
27
+ )
28
+
29
+ # Removing tls_version field
30
+ config.delete_field(:tls_version)
31
+
32
+ Cassette.config = config
33
+
34
+ expect(Cassette.config.tls_version)
35
+ .to eq('TLSv1_2')
36
+ end
37
+ end
38
+
39
+ context 'when tls_version is specified' do
40
+ it 'uses this version' do
41
+ config = OpenStruct.new(
42
+ YAML.load_file('spec/config.yml')
43
+ )
44
+
45
+ Cassette.config = config
46
+
47
+ expect(Cassette.config.tls_version)
48
+ .to eq('TLSv1_2')
49
+ end
50
+ end
51
+
52
+ context 'when verify_ssl was not specified' do
53
+ it 'uses default verify_ssl value: false' do
54
+ config = OpenStruct.new(
55
+ YAML.load_file('spec/config.yml')
56
+ )
57
+
58
+ # Removing verify_ssl field
59
+ config.delete_field(:verify_ssl)
60
+
61
+ Cassette.config = config
62
+
63
+ expect(Cassette.config.verify_ssl)
64
+ .to be false
65
+ end
66
+ end
67
+
68
+ context 'when verify_ssl is specified' do
69
+ it 'uses this value' do
70
+ config = OpenStruct.new(
71
+ YAML.load_file('spec/config.yml')
72
+ )
73
+
74
+ Cassette.config = config
75
+
76
+ expect(Cassette.config.verify_ssl)
77
+ .to be true
78
+ end
79
+ end
80
+ end
81
+
10
82
  describe '.logger' do
11
83
  it 'returns a default instance' do
12
84
  expect(Cassette.logger).not_to be_nil
@@ -50,6 +122,7 @@ describe Cassette do
50
122
 
51
123
  context 'when the cache_backend is not set' do
52
124
  it 'returns Rails.cache if set' do
125
+ described_class.cache_backend = nil
53
126
  rails_cache = double('cache')
54
127
  rails = double('Rails')
55
128
  allow(rails).to receive(:cache).and_return(rails_cache)
@@ -63,6 +136,8 @@ describe Cassette do
63
136
  end
64
137
 
65
138
  it 'returns MemoryStore if Rails.cache not set' do
139
+ described_class.cache_backend = nil
140
+
66
141
  # exercise and verify
67
142
  expect(described_class.cache_backend).to be_a(ActiveSupport::Cache::MemoryStore)
68
143
 
@@ -71,6 +146,7 @@ describe Cassette do
71
146
  end
72
147
 
73
148
  it 'returns NullStore if Rails.cache and MemoryStore are not set' do
149
+ described_class.cache_backend = nil
74
150
  hide_const('ActiveSupport::Cache::MemoryStore')
75
151
  require 'cassette/cache/null_store'
76
152
 
@@ -1,5 +1,7 @@
1
- username: "user"
2
- password: "secret"
3
- service: "test-api.example.org"
4
- base: "https://some-cas.example.org"
5
- base_authority: "CASTEST"
1
+ username: 'user'
2
+ password: 'secret'
3
+ service: 'test-api.example.org'
4
+ base: 'https://some-cas.example.org'
5
+ base_authority: 'CASTEST'
6
+ verify_ssl: true
7
+ tls_version: 'TLSv1_2'
@@ -5,7 +5,7 @@ require 'yaml'
5
5
  require 'webmock/rspec'
6
6
  require 'rspec/its'
7
7
  require 'faker'
8
- if RUBY_VERSION >= '2.3.0'
8
+ if RUBY_VERSION >= '2.4.0'
9
9
  require 'pry-byebug'
10
10
  end
11
11
 
@@ -0,0 +1,163 @@
1
+ example_id | status | run_time |
2
+ -------------------------------------------------------------- | ------ | --------------- |
3
+ ./spec/cassette/authentication/authorities_spec.rb[1:1:1] | passed | 0.0005 seconds |
4
+ ./spec/cassette/authentication/authorities_spec.rb[1:1:2] | passed | 0.00121 seconds |
5
+ ./spec/cassette/authentication/authorities_spec.rb[1:1:3] | passed | 0.00056 seconds |
6
+ ./spec/cassette/authentication/authorities_spec.rb[1:2:1] | passed | 0.00137 seconds |
7
+ ./spec/cassette/authentication/authorities_spec.rb[1:2:2:1] | passed | 0.02571 seconds |
8
+ ./spec/cassette/authentication/authorities_spec.rb[1:2:2:2] | passed | 0.00056 seconds |
9
+ ./spec/cassette/authentication/authorities_spec.rb[1:3:1] | passed | 0.00075 seconds |
10
+ ./spec/cassette/authentication/authorities_spec.rb[1:3:2] | passed | 0.00122 seconds |
11
+ ./spec/cassette/authentication/authorities_spec.rb[1:3:3] | passed | 0.00063 seconds |
12
+ ./spec/cassette/authentication/authorities_spec.rb[1:3:4] | passed | 0.001 seconds |
13
+ ./spec/cassette/authentication/authorities_spec.rb[1:4:1] | passed | 0.00085 seconds |
14
+ ./spec/cassette/authentication/authorities_spec.rb[1:4:2] | passed | 0.00197 seconds |
15
+ ./spec/cassette/authentication/cache_spec.rb[1:1:1] | passed | 0.00249 seconds |
16
+ ./spec/cassette/authentication/cache_spec.rb[1:1:2:1] | passed | 0.0019 seconds |
17
+ ./spec/cassette/authentication/cache_spec.rb[1:1:2:2] | passed | 0.00239 seconds |
18
+ ./spec/cassette/authentication/cache_spec.rb[1:1:2:3:1] | passed | 0.00423 seconds |
19
+ ./spec/cassette/authentication/cache_spec.rb[1:1:3] | passed | 0.0023 seconds |
20
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:1:1:1] | passed | 0.00293 seconds |
21
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:1:1:2] | passed | 0.00231 seconds |
22
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:1:2] | passed | 0.00215 seconds |
23
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:1:3] | passed | 0.0026 seconds |
24
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:2:1:1] | passed | 0.00163 seconds |
25
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:2:1:2] | passed | 0.00214 seconds |
26
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:2:2] | passed | 0.0017 seconds |
27
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:2:3] | passed | 0.00176 seconds |
28
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:1:1:1:1] | passed | 0.01019 seconds |
29
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:1:1:1:2] | passed | 0.0017 seconds |
30
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:1:2:1:1] | passed | 0.00173 seconds |
31
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:1:2:1:2] | passed | 0.00211 seconds |
32
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:1:3:1:1] | passed | 0.00136 seconds |
33
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:1:3:1:2] | passed | 0.00193 seconds |
34
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:2:1] | passed | 0.00202 seconds |
35
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:3:1:1] | passed | 0.00203 seconds |
36
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:3:2:1] | passed | 0.00217 seconds |
37
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:3:3:1] | passed | 0.00182 seconds |
38
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:3:3:4:1] | passed | 0.00229 seconds |
39
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:4:1:1:1] | passed | 0.01027 seconds |
40
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:4:1:2:1] | passed | 0.00906 seconds |
41
+ ./spec/cassette/authentication/filter_spec.rb[1:1:1:4:1:3:1] | passed | 0.00818 seconds |
42
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:1:1:1] | passed | 0.00174 seconds |
43
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:1:1:2] | passed | 0.00193 seconds |
44
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:1:2] | passed | 0.00168 seconds |
45
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:1:3] | passed | 0.0024 seconds |
46
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:2:1:1] | passed | 0.0033 seconds |
47
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:2:1:2] | passed | 0.00171 seconds |
48
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:2:2] | passed | 0.00223 seconds |
49
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:2:3] | passed | 0.00197 seconds |
50
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:1:1:1:1] | passed | 0.00097 seconds |
51
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:1:1:1:2] | passed | 0.00109 seconds |
52
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:1:2:1:1] | passed | 0.00108 seconds |
53
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:1:2:1:2] | passed | 0.00229 seconds |
54
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:1:3:1:1] | passed | 0.00131 seconds |
55
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:1:3:1:2] | passed | 0.00261 seconds |
56
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:2:1] | passed | 0.00157 seconds |
57
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:3:1:1] | passed | 0.0019 seconds |
58
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:3:2:1] | passed | 0.00206 seconds |
59
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:3:3:1] | passed | 0.00185 seconds |
60
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:3:3:4:1] | passed | 0.00227 seconds |
61
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:4:1:1:1] | passed | 0.00892 seconds |
62
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:4:1:2:1] | passed | 0.00932 seconds |
63
+ ./spec/cassette/authentication/filter_spec.rb[1:2:1:4:1:3:1] | passed | 0.00759 seconds |
64
+ ./spec/cassette/authentication/user_factory_spec.rb[1:1:1:1:1] | passed | 0.00683 seconds |
65
+ ./spec/cassette/authentication/user_factory_spec.rb[1:1:1:2:1] | passed | 0.00842 seconds |
66
+ ./spec/cassette/authentication/user_factory_spec.rb[1:1:1:3:1] | passed | 0.00684 seconds |
67
+ ./spec/cassette/authentication/user_factory_spec.rb[1:1:1:4:1] | passed | 0.00625 seconds |
68
+ ./spec/cassette/authentication/user_factory_spec.rb[1:1:1:5] | passed | 0.00715 seconds |
69
+ ./spec/cassette/authentication/user_factory_spec.rb[1:1:1:6] | passed | 1.96 seconds |
70
+ ./spec/cassette/authentication/user_spec.rb[1:1:1:1] | passed | 0.00035 seconds |
71
+ ./spec/cassette/authentication/user_spec.rb[1:1:2:1] | passed | 0.01246 seconds |
72
+ ./spec/cassette/authentication/user_spec.rb[1:2:1] | passed | 0.0007 seconds |
73
+ ./spec/cassette/authentication/user_spec.rb[1:2:2] | passed | 0.00059 seconds |
74
+ ./spec/cassette/authentication/user_spec.rb[1:2:3] | passed | 0.00246 seconds |
75
+ ./spec/cassette/authentication/user_spec.rb[1:3:1:1] | passed | 0.00096 seconds |
76
+ ./spec/cassette/authentication/user_spec.rb[1:3:2:1] | passed | 0.00718 seconds |
77
+ ./spec/cassette/authentication_spec.rb[1:1:1:1] | passed | 0.00114 seconds |
78
+ ./spec/cassette/authentication_spec.rb[1:1:1:2] | passed | 0.00203 seconds |
79
+ ./spec/cassette/authentication_spec.rb[1:1:1:3] | passed | 0.00139 seconds |
80
+ ./spec/cassette/authentication_spec.rb[1:1:2:1] | passed | 0.00226 seconds |
81
+ ./spec/cassette/authentication_spec.rb[1:1:2:2:1] | passed | 0.02205 seconds |
82
+ ./spec/cassette/authentication_spec.rb[1:1:2:3:1] | passed | 0.02106 seconds |
83
+ ./spec/cassette/authentication_spec.rb[1:2:1] | passed | 0.00062 seconds |
84
+ ./spec/cassette/authentication_spec.rb[1:2:2] | passed | 0.00086 seconds |
85
+ ./spec/cassette/authentication_spec.rb[1:2:3] | passed | 0.00179 seconds |
86
+ ./spec/cassette/authentication_spec.rb[1:2:4] | passed | 0.00147 seconds |
87
+ ./spec/cassette/cache/null_store_spec.rb[1:1:1] | passed | 0.001 seconds |
88
+ ./spec/cassette/cache/null_store_spec.rb[1:1:2] | passed | 0.00067 seconds |
89
+ ./spec/cassette/cache/null_store_spec.rb[1:2:1] | passed | 0.00062 seconds |
90
+ ./spec/cassette/cache/null_store_spec.rb[1:3:1] | passed | 0.00054 seconds |
91
+ ./spec/cassette/cache/null_store_spec.rb[1:3:2] | passed | 0.00069 seconds |
92
+ ./spec/cassette/cache/null_store_spec.rb[1:3:3] | passed | 0.00055 seconds |
93
+ ./spec/cassette/cache/null_store_spec.rb[1:4:1] | passed | 0.00108 seconds |
94
+ ./spec/cassette/cache/null_store_spec.rb[1:4:2] | passed | 0.00056 seconds |
95
+ ./spec/cassette/cache/null_store_spec.rb[1:4:3] | passed | 0.00049 seconds |
96
+ ./spec/cassette/cache/null_store_spec.rb[1:4:4] | passed | 0.00088 seconds |
97
+ ./spec/cassette/cache/null_store_spec.rb[1:5:1] | passed | 0.00067 seconds |
98
+ ./spec/cassette/cache/null_store_spec.rb[1:5:2] | passed | 0.00083 seconds |
99
+ ./spec/cassette/cache_spec.rb[1:1:1] | passed | 0.00083 seconds |
100
+ ./spec/cassette/cache_spec.rb[1:2:1] | passed | 0.00057 seconds |
101
+ ./spec/cassette/cache_spec.rb[1:3] | passed | 0.00431 seconds |
102
+ ./spec/cassette/client/cache_spec.rb[1:1] | passed | 0.00113 seconds |
103
+ ./spec/cassette/client/cache_spec.rb[1:2:1] | passed | 0.0006 seconds |
104
+ ./spec/cassette/client_spec.rb[1:1:1] | passed | 0.00547 seconds |
105
+ ./spec/cassette/client_spec.rb[1:1:2] | passed | 0.00279 seconds |
106
+ ./spec/cassette/client_spec.rb[1:2:1:1] | passed | 0.00261 seconds |
107
+ ./spec/cassette/client_spec.rb[1:2:1:2] | passed | 0.00297 seconds |
108
+ ./spec/cassette/client_spec.rb[1:2:1:3] | passed | 0.00232 seconds |
109
+ ./spec/cassette/client_spec.rb[1:2:2:1] | passed | 0.00342 seconds |
110
+ ./spec/cassette/client_spec.rb[1:2:3:1] | passed | 0.00306 seconds |
111
+ ./spec/cassette/client_spec.rb[1:2:3:2] | passed | 0.00532 seconds |
112
+ ./spec/cassette/client_spec.rb[1:3:1:1:1] | passed | 0.00234 seconds |
113
+ ./spec/cassette/client_spec.rb[1:3:1:1:2] | passed | 0.00261 seconds |
114
+ ./spec/cassette/client_spec.rb[1:3:1:1:3] | passed | 0.00731 seconds |
115
+ ./spec/cassette/client_spec.rb[1:3:2:1:1] | passed | 0.00262 seconds |
116
+ ./spec/cassette/client_spec.rb[1:3:2:1:2] | passed | 0.00287 seconds |
117
+ ./spec/cassette/client_spec.rb[1:3:2:1:3] | passed | 0.00177 seconds |
118
+ ./spec/cassette/client_spec.rb[1:3:3:1:1] | passed | 0.00216 seconds |
119
+ ./spec/cassette/client_spec.rb[1:3:3:1:2] | passed | 0.00164 seconds |
120
+ ./spec/cassette/client_spec.rb[1:3:3:2:1] | passed | 0.00289 seconds |
121
+ ./spec/cassette/client_spec.rb[1:3:3:2:2] | passed | 0.00335 seconds |
122
+ ./spec/cassette/client_spec.rb[1:4:1:1] | passed | 0.00312 seconds |
123
+ ./spec/cassette/client_spec.rb[1:4:1:2] | passed | 0.00303 seconds |
124
+ ./spec/cassette/client_spec.rb[1:4:1:3] | passed | 0.00477 seconds |
125
+ ./spec/cassette/client_spec.rb[1:4:2:1] | passed | 0.0028 seconds |
126
+ ./spec/cassette/client_spec.rb[1:4:2:2] | passed | 0.0085 seconds |
127
+ ./spec/cassette/client_spec.rb[1:4:3:1] | passed | 0.00275 seconds |
128
+ ./spec/cassette/client_spec.rb[1:4:4:1] | passed | 0.00421 seconds |
129
+ ./spec/cassette/client_spec.rb[1:4:4:2] | passed | 0.00362 seconds |
130
+ ./spec/cassette/client_spec.rb[1:4:4:3] | passed | 0.00372 seconds |
131
+ ./spec/cassette/client_spec.rb[1:4:4:4] | passed | 0.00503 seconds |
132
+ ./spec/cassette/client_spec.rb[1:4:4:5] | passed | 0.00409 seconds |
133
+ ./spec/cassette/client_spec.rb[1:4:4:6] | passed | 0.00483 seconds |
134
+ ./spec/cassette/errors_spec.rb[1:1:1:1] | passed | 0.00023 seconds |
135
+ ./spec/cassette/errors_spec.rb[1:2:1] | passed | 0.00086 seconds |
136
+ ./spec/cassette/errors_spec.rb[1:2:2] | passed | 0.00133 seconds |
137
+ ./spec/cassette/http/request_spec.rb[1:1:1] | passed | 0.00805 seconds |
138
+ ./spec/cassette/http/request_spec.rb[1:1:2] | passed | 0.0289 seconds |
139
+ ./spec/cassette/http/request_spec.rb[1:1:3:1] | passed | 0.00554 seconds |
140
+ ./spec/cassette/http/ticket_response_spec.rb[1:1:1] | passed | 0.01718 seconds |
141
+ ./spec/cassette/http/ticket_response_spec.rb[1:1:2:1] | passed | 0.01448 seconds |
142
+ ./spec/cassette/http/ticket_response_spec.rb[1:2:1] | passed | 0.01558 seconds |
143
+ ./spec/cassette/http/ticket_response_spec.rb[1:2:2:1] | passed | 0.01559 seconds |
144
+ ./spec/cassette/http/ticket_response_spec.rb[1:3:1] | passed | 0.01666 seconds |
145
+ ./spec/cassette/http/ticket_response_spec.rb[1:3:2:1] | passed | 0.01347 seconds |
146
+ ./spec/cassette/rubycas/routing_constraint_spec.rb[1:1:1:1] | passed | 0.00262 seconds |
147
+ ./spec/cassette/rubycas/routing_constraint_spec.rb[1:1:1:2:1] | passed | 0.00229 seconds |
148
+ ./spec/cassette/rubycas/routing_constraint_spec.rb[1:1:1:3:1] | passed | 0.00295 seconds |
149
+ ./spec/cassette/rubycas/routing_constraint_spec.rb[1:1:2:1] | passed | 0.00267 seconds |
150
+ ./spec/cassette/rubycas/routing_constraint_spec.rb[1:1:2:2:1] | passed | 0.00308 seconds |
151
+ ./spec/cassette/rubycas/routing_constraint_spec.rb[1:1:2:3:1] | passed | 0.00257 seconds |
152
+ ./spec/cassette_spec.rb[1:1:1] | passed | 0.01135 seconds |
153
+ ./spec/cassette_spec.rb[1:1:2:1] | passed | 0.00988 seconds |
154
+ ./spec/cassette_spec.rb[1:1:3:1] | passed | 0.0101 seconds |
155
+ ./spec/cassette_spec.rb[1:1:4:1] | passed | 0.01171 seconds |
156
+ ./spec/cassette_spec.rb[1:1:5:1] | passed | 0.00886 seconds |
157
+ ./spec/cassette_spec.rb[1:2:1] | passed | 0.00045 seconds |
158
+ ./spec/cassette_spec.rb[1:2:2] | passed | 0.00175 seconds |
159
+ ./spec/cassette_spec.rb[1:3:1] | passed | 0.0057 seconds |
160
+ ./spec/cassette_spec.rb[1:4:1:1] | passed | 0.00063 seconds |
161
+ ./spec/cassette_spec.rb[1:4:2:1] | passed | 0.00081 seconds |
162
+ ./spec/cassette_spec.rb[1:4:2:2] | passed | 0.00037 seconds |
163
+ ./spec/cassette_spec.rb[1:4:2:3] | passed | 0.0078 seconds |
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cassette
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.6
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Hermida Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-27 00:00:00.000000000 Z
11
+ date: 2020-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -272,6 +272,7 @@ files:
272
272
  - spec/integration/cas/client_spec.rb
273
273
  - spec/spec_helper.rb
274
274
  - spec/support/controllers/controller_mock.rb
275
+ - spec/support/last_execution_examples_result.txt
275
276
  homepage: http://github.com/locaweb/cassette
276
277
  licenses: []
277
278
  metadata: {}
@@ -290,7 +291,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
290
291
  - !ruby/object:Gem::Version
291
292
  version: '0'
292
293
  requirements: []
293
- rubygems_version: 3.0.3
294
+ rubygems_version: 3.1.2
294
295
  signing_key:
295
296
  specification_version: 4
296
297
  summary: Generates, validates and caches TGTs and STs
@@ -316,3 +317,4 @@ test_files:
316
317
  - spec/integration/cas/client_spec.rb
317
318
  - spec/spec_helper.rb
318
319
  - spec/support/controllers/controller_mock.rb
320
+ - spec/support/last_execution_examples_result.txt