cassette 1.0.2 → 1.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +5 -13
  2. data/README.md +125 -106
  3. data/lib/cassette/authentication/authorities.rb +5 -5
  4. data/lib/cassette/authentication/cache.rb +5 -6
  5. data/lib/cassette/authentication/filter.rb +9 -9
  6. data/lib/cassette/authentication/user.rb +4 -4
  7. data/lib/cassette/authentication.rb +9 -9
  8. data/lib/cassette/cache.rb +2 -4
  9. data/lib/cassette/client/cache.rb +12 -12
  10. data/lib/cassette/client.rb +11 -16
  11. data/lib/cassette/errors/not_a_customer.rb +1 -2
  12. data/lib/cassette/errors/not_an_employee.rb +1 -2
  13. data/lib/cassette/errors.rb +8 -8
  14. data/lib/cassette/rubycas/helper.rb +21 -25
  15. data/lib/cassette/rubycas/not_single_sign_out_constraint.rb +1 -2
  16. data/lib/cassette/rubycas/single_sign_out_constraint.rb +6 -7
  17. data/lib/cassette/rubycas.rb +3 -4
  18. data/lib/cassette/version.rb +6 -10
  19. data/lib/cassette.rb +21 -21
  20. data/spec/cas_spec.rb +21 -21
  21. data/spec/cassette/authentication/authorities_spec.rb +82 -0
  22. data/spec/{cas → cassette}/authentication/cache_spec.rb +0 -0
  23. data/spec/{cas → cassette}/authentication/filter_spec.rb +52 -53
  24. data/spec/cassette/authentication/user_spec.rb +70 -0
  25. data/spec/cassette/authentication_spec.rb +84 -0
  26. data/spec/{cas → cassette}/cache_spec.rb +7 -8
  27. data/spec/{cas → cassette}/client/cache_spec.rb +0 -0
  28. data/spec/{cas → cassette}/errors_spec.rb +6 -6
  29. data/spec/config.yml +4 -4
  30. data/spec/integration/cas/client_spec.rb +32 -31
  31. data/spec/spec_helper.rb +7 -7
  32. metadata +57 -57
  33. data/spec/cas/authentication/authorities_spec.rb +0 -82
  34. data/spec/cas/authentication/user_spec.rb +0 -70
  35. data/spec/cas/authentication_spec.rb +0 -84
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require "active_support/concern"
3
+ require 'active_support/concern'
4
4
 
5
5
  module Cassette
6
6
  module Rubycas
@@ -19,18 +19,18 @@ module Cassette
19
19
  end
20
20
 
21
21
  def validate_authentication_ticket
22
- return if ENV["NOAUTH"]
22
+ return if ENV['NOAUTH']
23
23
  ::CASClient::Frameworks::Rails::Filter.filter(self)
24
24
  end
25
25
 
26
26
  def employee_only_filter
27
- return if ENV["NOAUTH"] or current_user.blank?
28
- raise Cassette::Errors::NotAnEmployee unless current_user.employee?
27
+ return if ENV['NOAUTH'] || current_user.blank?
28
+ fail Cassette::Errors::NotAnEmployee unless current_user.employee?
29
29
  end
30
30
 
31
31
  def customer_only_filter
32
- return if ENV["NOAUTH"] or current_user.blank?
33
- raise Cassette::Errors::NotACustomer unless current_user.customer?
32
+ return if ENV['NOAUTH'] || current_user.blank?
33
+ fail Cassette::Errors::NotACustomer unless current_user.customer?
34
34
  end
35
35
 
36
36
  def cas_logout(to = root_url)
@@ -39,38 +39,34 @@ module Cassette
39
39
  end
40
40
 
41
41
  def fake_user
42
- Cassette::Authentication::User.new({
43
- login: "fake.user",
44
- name: "Fake User",
45
- email: "fake.user@locaweb.com.br",
46
- authorities: [],
47
- type: "customer"
48
- })
42
+ Cassette::Authentication::User.new(login: 'fake.user',
43
+ name: 'Fake User',
44
+ email: 'fake.user@locaweb.com.br',
45
+ authorities: [],
46
+ type: 'customer')
49
47
  end
50
48
 
51
49
  def validate_role!(role)
52
- return if ENV["NOAUTH"]
53
- raise Cassette::Errors::Forbidden unless current_user.has_role?(role)
50
+ return if ENV['NOAUTH']
51
+ fail Cassette::Errors::Forbidden unless current_user.has_role?(role)
54
52
  end
55
53
 
56
54
  def validate_raw_role!(role)
57
- return if ENV["NOAUTH"]
58
- raise Cassette::Errors::Forbidden unless current_user.has_raw_role?(role)
55
+ return if ENV['NOAUTH']
56
+ fail Cassette::Errors::Forbidden unless current_user.has_raw_role?(role)
59
57
  end
60
58
 
61
59
  def current_user
62
- return fake_user if ENV["NOAUTH"]
60
+ return fake_user if ENV['NOAUTH']
63
61
  return nil unless session[:cas_user]
64
62
 
65
63
  @current_user ||= begin
66
64
  attributes = session[:cas_extra_attributes]
67
- Cassette::Authentication::User.new({
68
- login: session[:cas_user],
69
- name: attributes.try(:[], :cn),
70
- email: attributes.try(:[], :email),
71
- authorities: attributes.try(:[], :authorities),
72
- type: attributes.try(:[], :type).try(:downcase)
73
- })
65
+ Cassette::Authentication::User.new(login: session[:cas_user],
66
+ name: attributes.try(:[], :cn),
67
+ email: attributes.try(:[], :email),
68
+ authorities: attributes.try(:[], :authorities),
69
+ type: attributes.try(:[], :type).try(:downcase))
74
70
  end
75
71
  end
76
72
  end
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require "cassette/rubycas/single_sign_out_constraint"
3
+ require 'cassette/rubycas/single_sign_out_constraint'
4
4
 
5
5
  module Cassette
6
6
  module Rubycas
@@ -11,4 +11,3 @@ module Cassette
11
11
  end
12
12
  end
13
13
  end
14
-
@@ -4,16 +4,16 @@ module Cassette
4
4
  module Rubycas
5
5
  class SingleSignOutConstraint
6
6
  def matches?(request)
7
- if (content_type = request.headers["CONTENT_TYPE"]) &&
8
- content_type =~ /^multipart\//
7
+ if (content_type = request.headers['CONTENT_TYPE']) &&
8
+ content_type =~ /^multipart\//
9
9
  return false
10
10
  end
11
11
 
12
12
  if request.post? &&
13
- request.request_parameters['logoutRequest'] &&
14
- [request.request_parameters['logoutRequest'],
15
- URI.unescape(request.request_parameters['logoutRequest'])]
16
- .find { |xml| xml =~ /^<samlp:LogoutRequest.*?<samlp:SessionIndex>(.*)<\/samlp:SessionIndex>/m }
13
+ request.request_parameters['logoutRequest'] &&
14
+ [request.request_parameters['logoutRequest'],
15
+ URI.unescape(request.request_parameters['logoutRequest'])]
16
+ .find { |xml| xml =~ /^<samlp:LogoutRequest.*?<samlp:SessionIndex>(.*)<\/samlp:SessionIndex>/m }
17
17
 
18
18
  Cassette.logger.debug "Intercepted a single sign out request on #{request}"
19
19
  return true
@@ -24,4 +24,3 @@ module Cassette
24
24
  end
25
25
  end
26
26
  end
27
-
@@ -1,11 +1,10 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require "cassette/rubycas/helper"
4
- require "cassette/rubycas/single_sign_out_constraint"
5
- require "cassette/rubycas/not_single_sign_out_constraint"
3
+ require 'cassette/rubycas/helper'
4
+ require 'cassette/rubycas/single_sign_out_constraint'
5
+ require 'cassette/rubycas/not_single_sign_out_constraint'
6
6
 
7
7
  module Cassette
8
8
  module Rubycas
9
9
  end
10
10
  end
11
-
@@ -1,15 +1,11 @@
1
1
  module Cassette
2
2
  class Version
3
- MAJOR = "1"
4
- MINOR = "0"
3
+ MAJOR = '1'
4
+ MINOR = '0'
5
+ PATCH = '17'
5
6
 
6
- def self.build_number
7
- ENV["BUILD_NUMBER"] || 2
8
- end
9
-
10
- def self.version
11
- [MAJOR, MINOR, build_number].join(".")
12
- end
7
+ def self.version
8
+ [MAJOR, MINOR, PATCH].join('.')
9
+ end
13
10
  end
14
11
  end
15
-
data/lib/cassette.rb CHANGED
@@ -1,17 +1,17 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require "cassette/errors"
4
- require "cassette/cache"
5
- require "cassette/client/cache"
6
- require "cassette/client"
7
- require "cassette/authentication"
8
- require "cassette/authentication/authorities"
9
- require "cassette/authentication/user"
10
- require "cassette/authentication/cache"
11
- require "cassette/authentication/filter"
3
+ require 'cassette/errors'
4
+ require 'cassette/cache'
5
+ require 'cassette/client/cache'
6
+ require 'cassette/client'
7
+ require 'cassette/authentication'
8
+ require 'cassette/authentication/authorities'
9
+ require 'cassette/authentication/user'
10
+ require 'cassette/authentication/cache'
11
+ require 'cassette/authentication/filter'
12
12
 
13
- require "faraday"
14
- require "logger"
13
+ require 'faraday'
14
+ require 'logger'
15
15
 
16
16
  module Cassette
17
17
  extend self
@@ -20,12 +20,12 @@ module Cassette
20
20
 
21
21
  def logger
22
22
  @@logger ||= begin
23
- if defined?(Rails) && Rails.logger
24
- Rails.logger
25
- else
26
- Logger.new("/dev/null")
27
- end
28
- end
23
+ if defined?(Rails) && Rails.logger
24
+ Rails.logger
25
+ else
26
+ Logger.new('/dev/null')
27
+ end
28
+ end
29
29
  end
30
30
 
31
31
  def logger=(logger)
@@ -43,8 +43,8 @@ module Cassette
43
43
  end
44
44
 
45
45
  def new_request(uri, timeout)
46
- Faraday.new(url: uri, ssl: { verify: false, version: "TLSv1" }) do |builder|
47
- builder.adapter :httpclient
46
+ Faraday.new(url: uri, ssl: { verify: false, version: 'TLSv1' }) do |builder|
47
+ builder.adapter Faraday.default_adapter
48
48
  builder.options.timeout = timeout
49
49
  end
50
50
  end
@@ -58,14 +58,14 @@ module Cassette
58
58
 
59
59
  def post(uri, payload, timeout = DEFAULT_TIMEOUT)
60
60
  perform(:post, uri, payload, timeout) do |req|
61
- req.body = payload
61
+ req.body = URI.encode_www_form(payload)
62
62
  logger.debug "Request: #{req.inspect}"
63
63
  end
64
64
  end
65
65
 
66
66
  protected
67
67
 
68
- def perform(op, uri, payload, timeout = DEFAULT_TIMEOUT, &block)
68
+ def perform(op, uri, _payload, timeout = DEFAULT_TIMEOUT, &block)
69
69
  request = new_request(uri, timeout)
70
70
  res = request.send(op, &block)
71
71
 
data/spec/cas_spec.rb CHANGED
@@ -1,13 +1,13 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe Cassette do
4
- let(:uri) { "http://example.org/" }
4
+ let(:uri) { 'http://example.org/' }
5
5
  let(:response) do
6
6
  Faraday.new do |builder|
7
7
  builder.adapter :test do |stub|
8
- stub.post(uri, 'data') do |env|
8
+ stub.post(uri, 'ping=pong') do |env|
9
9
  headers = env.request_headers
10
- [200, {}, "{ok: true}"]
10
+ [200, {}, '{ok: true}']
11
11
  end
12
12
  end
13
13
  end
@@ -16,30 +16,30 @@ describe Cassette do
16
16
  let(:failed_response) do
17
17
  Faraday.new do |builder|
18
18
  builder.adapter :test do |stub|
19
- stub.post(uri, 'data') do |env|
19
+ stub.post(uri, 'ping=pong') do |env|
20
20
  headers = env.request_headers
21
- [500, {}, "{ok: false}"]
21
+ [500, {}, '{ok: false}']
22
22
  end
23
23
  end
24
24
  end
25
25
  end
26
26
 
27
- describe ".new_request" do
28
- it "returns an instance" do
27
+ describe '.new_request' do
28
+ it 'returns an instance' do
29
29
  # damn coverage
30
30
  expect(Cassette.new_request(uri, 5)).to be_instance_of(Faraday::Connection)
31
31
  end
32
32
  end
33
33
 
34
- describe ".post" do
35
- it "forwards requests" do
34
+ describe '.post' do
35
+ it 'forwards requests' do
36
36
  allow(Cassette).to receive(:new_request).with(uri, 5).and_return(response)
37
- Cassette.post(uri, "data", 5)
37
+ Cassette.post(uri, { ping: :pong }, 5)
38
38
  end
39
39
 
40
- it "raises an exception when failed" do
40
+ it 'raises an exception when failed' do
41
41
  allow(Cassette).to receive(:new_request).with(uri, 5).and_return(failed_response)
42
- expect { Cassette.post(uri, "data", 5) }.to raise_error(Cassette::Errors::InternalServerError)
42
+ expect { Cassette.post(uri, { ping: :pong }, 5) }.to raise_error(Cassette::Errors::InternalServerError)
43
43
  end
44
44
  end
45
45
 
@@ -49,26 +49,26 @@ describe Cassette do
49
49
  Cassette.logger = original_logger
50
50
  end
51
51
 
52
- describe ".logger" do
53
- it "returns a default instance" do
52
+ describe '.logger' do
53
+ it 'returns a default instance' do
54
54
  expect(Cassette.logger).not_to be_nil
55
- expect(Cassette.logger.kind_of?(Logger)).to eql(true)
55
+ expect(Cassette.logger.is_a?(Logger)).to eql(true)
56
56
  end
57
57
 
58
- it "returns rails logger when Rails is available" do
58
+ it 'returns rails logger when Rails is available' do
59
59
  keeping_logger do
60
60
  Cassette.logger = nil
61
- rails = double("Rails")
61
+ rails = double('Rails')
62
62
  expect(rails).to receive(:logger).and_return(rails).at_least(:once)
63
- stub_const("Rails", rails)
63
+ stub_const('Rails', rails)
64
64
  expect(Cassette.logger).to eql(rails)
65
65
  end
66
66
  end
67
67
  end
68
68
 
69
- describe ".logger=" do
69
+ describe '.logger=' do
70
70
  let(:logger) { Logger.new(STDOUT) }
71
- it "defines the logger instance" do
71
+ it 'defines the logger instance' do
72
72
  keeping_logger do
73
73
  Cassette.logger = logger
74
74
  expect(Cassette.logger).to eq(logger)
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe Cassette::Authentication::Authorities do
4
+ subject do
5
+ Cassette::Authentication::Authorities
6
+ end
7
+
8
+ describe '#has_role?' do
9
+ let(:input) { "[#{Cassette.config.base_authority}, SAPI, #{Cassette.config.base_authority}_CREATE-USER]" }
10
+ let(:authorities) { subject.parse(input) }
11
+
12
+ it 'adds the application prefix to roles' do
13
+ expect(authorities.has_role?('CREATE-USER')).to eql(true)
14
+ end
15
+
16
+ it 'ignores role case' do
17
+ expect(authorities.has_role?('create-user')).to eql(true)
18
+ end
19
+
20
+ it 'replaces underscores with dashes' do
21
+ expect(authorities.has_role?('create_user')).to eql(true)
22
+ end
23
+ end
24
+
25
+ context 'with a defined base authority' do
26
+ let(:base_authority) { 'SOMEAPI' }
27
+
28
+ it 'stores the base authority' do
29
+ input = 'CUSTOMERAPI'
30
+ expect(subject.parse(input, base_authority).base).to eql(base_authority)
31
+ end
32
+
33
+ describe '#has_role?' do
34
+ let(:input) { "[#{Cassette.config.base_authority}_TEST2, SOMEAPI_TEST]" }
35
+
36
+ it 'returns true for a role that is using the base authority' do
37
+ expect(subject.parse(input, base_authority)).to have_role(:test)
38
+ end
39
+
40
+ it 'returns false for a role that is not using the base authority' do
41
+ expect(subject.parse(input, base_authority)).not_to have_role(:test2)
42
+ end
43
+ end
44
+ end
45
+
46
+ context 'CAS authorities parsing' do
47
+ it 'handles single authority' do
48
+ input = 'CUSTOMERAPI'
49
+ expect(subject.parse(input).authorities).to eq(%w(CUSTOMERAPI))
50
+ end
51
+
52
+ it 'handles multiple authorities with surrounding []' do
53
+ input = '[CUSTOMERAPI, SAPI]'
54
+ expect(subject.parse(input).authorities).to eq(%w(CUSTOMERAPI SAPI))
55
+ end
56
+
57
+ it 'ignores whitespace in multiple authorities' do
58
+ input = '[CUSTOMERAPI,SAPI]'
59
+ expect(subject.parse(input).authorities).to eq(%w(CUSTOMERAPI SAPI))
60
+ end
61
+
62
+ it 'returns an empty array when input is nil' do
63
+ expect(subject.parse(nil).authorities).to eq([])
64
+ end
65
+ end
66
+
67
+ context 'with authentication disabled' do
68
+ before { ENV['NOAUTH'] = 'true' }
69
+ after { ENV.delete('NOAUTH') }
70
+ subject { Cassette::Authentication::Authorities.new('[]') }
71
+
72
+ it '#has_role? returns true for every role' do
73
+ expect(subject.authorities).to be_empty
74
+ expect(subject.has_role?(:can_manage)).to eql(true)
75
+ end
76
+
77
+ it '#has_raw_role? returns true for every role' do
78
+ expect(subject.authorities).to be_empty
79
+ expect(subject.has_raw_role?('SAPI_CUSTOMER-CREATOR')).to eql(true)
80
+ end
81
+ end
82
+ end
File without changes
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
- require "spec_helper"
4
- require "active_support/core_ext/hash/indifferent_access"
3
+ require 'spec_helper'
4
+ require 'active_support/core_ext/hash/indifferent_access'
5
5
 
6
6
  describe Cassette::Authentication::Filter do
7
7
  before do
@@ -19,17 +19,17 @@ describe Cassette::Authentication::Filter do
19
19
  end
20
20
  end
21
21
 
22
- shared_context "with NOAUTH" do
22
+ shared_context 'with NOAUTH' do
23
23
  before do
24
- ENV["NOAUTH"] = "yes"
24
+ ENV['NOAUTH'] = 'yes'
25
25
  end
26
26
 
27
27
  after do
28
- ENV.delete("NOAUTH")
28
+ ENV.delete('NOAUTH')
29
29
  end
30
30
  end
31
31
 
32
- describe "#validate_raw_role!" do
32
+ describe '#validate_raw_role!' do
33
33
  let(:controller) { ControllerMock.new }
34
34
  let(:current_user) { instance_double(Cassette::Authentication::User) }
35
35
 
@@ -37,25 +37,25 @@ describe Cassette::Authentication::Filter do
37
37
  allow(controller).to receive(:current_user).and_return(current_user)
38
38
  end
39
39
 
40
- it_behaves_like "with NOAUTH" do
41
- it "never checks the role" do
40
+ it_behaves_like 'with NOAUTH' do
41
+ it 'never checks the role' do
42
42
  expect(current_user).not_to receive(:has_raw_role?)
43
43
  controller.validate_raw_role!(:something)
44
44
  end
45
45
 
46
- it "does not raise error" do
46
+ it 'does not raise error' do
47
47
  expect { controller.validate_raw_role!(:something) }.not_to raise_error
48
48
  end
49
49
  end
50
50
 
51
- it "forwards to current_user" do
51
+ it 'forwards to current_user' do
52
52
  role = instance_double(String)
53
53
 
54
54
  expect(current_user).to receive(:has_raw_role?).with(role).and_return(true)
55
55
  controller.validate_raw_role!(role)
56
56
  end
57
57
 
58
- it "raises a Cassette::Errors::Forbidden when current_user does not have the role" do
58
+ it 'raises a Cassette::Errors::Forbidden when current_user does not have the role' do
59
59
  role = instance_double(String)
60
60
 
61
61
  expect(current_user).to receive(:has_raw_role?).with(role).and_return(false)
@@ -63,7 +63,7 @@ describe Cassette::Authentication::Filter do
63
63
  end
64
64
  end
65
65
 
66
- describe "#validate_role!" do
66
+ describe '#validate_role!' do
67
67
  let(:controller) { ControllerMock.new }
68
68
  let(:current_user) { instance_double(Cassette::Authentication::User) }
69
69
 
@@ -71,25 +71,25 @@ describe Cassette::Authentication::Filter do
71
71
  allow(controller).to receive(:current_user).and_return(current_user)
72
72
  end
73
73
 
74
- it_behaves_like "with NOAUTH" do
75
- it "never checks the role" do
74
+ it_behaves_like 'with NOAUTH' do
75
+ it 'never checks the role' do
76
76
  expect(current_user).not_to receive(:has_role?)
77
77
  controller.validate_role!(:something)
78
78
  end
79
79
 
80
- it "does not raise error" do
80
+ it 'does not raise error' do
81
81
  expect { controller.validate_role!(:something) }.not_to raise_error
82
82
  end
83
83
  end
84
84
 
85
- it "forwards to current_user" do
85
+ it 'forwards to current_user' do
86
86
  role = instance_double(String)
87
87
 
88
88
  expect(current_user).to receive(:has_role?).with(role).and_return(true)
89
89
  controller.validate_role!(role)
90
90
  end
91
91
 
92
- it "raises a Cassette::Errors::Forbidden when current_user does not have the role" do
92
+ it 'raises a Cassette::Errors::Forbidden when current_user does not have the role' do
93
93
  role = instance_double(String)
94
94
 
95
95
  expect(current_user).to receive(:has_role?).with(role).and_return(false)
@@ -97,75 +97,74 @@ describe Cassette::Authentication::Filter do
97
97
  end
98
98
  end
99
99
 
100
- describe "#validate_authentication_ticket" do
101
- it_behaves_like "with NOAUTH" do
102
- context "and no ticket" do
103
- let(:controller) { ControllerMock.new }
104
100
 
105
- it "should not validate tickets" do
106
- controller.validate_authentication_ticket
107
- expect(Cassette::Authentication).not_to have_received(:validate_ticket)
108
- end
101
+ describe '#validate_authentication_ticket' do
102
+ shared_examples_for 'controller without authentication' do
103
+ it 'does not validate tickets' do
104
+ controller.validate_authentication_ticket
105
+ expect(Cassette::Authentication).not_to have_received(:validate_ticket)
106
+ end
109
107
 
110
- it "should set current_user" do
111
- controller.validate_authentication_ticket
112
- expect(controller.current_user).to be_present
113
- end
108
+ it 'sets current_user' do
109
+ controller.validate_authentication_ticket
110
+ expect(controller.current_user).to be_present
114
111
  end
112
+ end
115
113
 
116
- context "and a ticket header" do
114
+ it_behaves_like 'with NOAUTH' do
115
+ context 'and no ticket' do
116
+ let(:controller) { ControllerMock.new }
117
+
118
+ it_behaves_like 'controller without authentication'
119
+ end
120
+
121
+ context 'and a ticket header' do
117
122
  let(:controller) do
118
- ControllerMock.new({}, "Service-Ticket" => "le ticket")
123
+ ControllerMock.new({}, 'Service-Ticket' => 'le ticket')
119
124
  end
120
125
 
121
- it "should validate tickets" do
122
- controller.validate_authentication_ticket
123
- expect(Cassette::Authentication).to have_received(:validate_ticket).with("le ticket", Cassette.config.service)
124
- end
126
+ it_behaves_like 'controller without authentication'
125
127
  end
126
128
 
127
- context "and a ticket param" do
129
+ context 'and a ticket param' do
128
130
  let(:controller) do
129
- ControllerMock.new(ticket: "le ticket")
131
+ ControllerMock.new(ticket: 'le ticket')
130
132
  end
131
133
 
132
- it "should validate tickets" do
133
- controller.validate_authentication_ticket
134
- expect(Cassette::Authentication).to have_received(:validate_ticket).with("le ticket", Cassette.config.service)
135
- end
134
+ it_behaves_like 'controller without authentication'
136
135
  end
137
136
  end
138
137
 
139
- context "with a ticket in the query string *AND* headers" do
138
+ context 'with a ticket in the query string *AND* headers' do
140
139
  let(:controller) do
141
- ControllerMock.new({"ticket" => "le other ticket"}, "Service-Ticket" => "le ticket")
140
+ ControllerMock.new({ 'ticket' => 'le other ticket' }, 'Service-Ticket' => 'le ticket')
142
141
  end
143
142
 
144
- it "should send only the header ticket to validation" do
143
+ it 'should send only the header ticket to validation' do
145
144
  controller.validate_authentication_ticket
146
- expect(Cassette::Authentication).to have_received(:validate_ticket).with("le ticket", Cassette.config.service)
145
+ expect(Cassette::Authentication).to have_received(:validate_ticket).with('le ticket', Cassette.config.service)
147
146
  end
148
147
  end
149
148
 
150
- context "with a ticket in the query string" do
149
+ context 'with a ticket in the query string' do
151
150
  let(:controller) do
152
- ControllerMock.new("ticket" => "le ticket")
151
+ ControllerMock.new('ticket' => 'le ticket')
153
152
  end
154
153
 
155
- it "should send the ticket to validation" do
154
+ it 'should send the ticket to validation' do
156
155
  controller.validate_authentication_ticket
157
- expect(Cassette::Authentication).to have_received(:validate_ticket).with("le ticket", Cassette.config.service)
156
+ expect(Cassette::Authentication).to have_received(:validate_ticket).with('le ticket', Cassette.config.service)
158
157
  end
159
158
  end
160
159
 
161
- context "with a ticket in the Service-Ticket header" do
160
+ context 'with a ticket in the Service-Ticket header' do
162
161
  let(:controller) do
163
- ControllerMock.new({}, "Service-Ticket" => "le ticket")
162
+ ControllerMock.new({}, 'Service-Ticket' => 'le ticket')
164
163
  end
165
164
 
166
- it "should send the ticket to validation" do
165
+ it 'should send the ticket to validation' do
167
166
  controller.validate_authentication_ticket
168
- expect(Cassette::Authentication).to have_received(:validate_ticket).with("le ticket", Cassette.config.service)
167
+ expect(Cassette::Authentication).to have_received(:validate_ticket).with('le ticket', Cassette.config.service)
169
168
  end
170
169
  end
171
170
  end