cassette 1.2.6 → 1.6.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 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