oa-globocom 0.4.10 → 0.5.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.
@@ -1,8 +1,8 @@
1
1
  module OAGloboCom
2
2
  module VERSION
3
3
  MAJOR = 0
4
- MINOR = 4
5
- PATCH = 10
4
+ MINOR = 5
5
+ PATCH = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH] * '.'
8
8
  end
@@ -11,10 +11,10 @@ module OmniAuth
11
11
  attr_reader :logger
12
12
 
13
13
  def initialize(app, opts = {})
14
- Cadun::Config.load_file(opts[:config])
14
+ Cadun::Config.load_file opts[:config]
15
15
 
16
16
  @logger = opts[:logger]
17
- super(app, :cadun, opts)
17
+ super app, :cadun, opts
18
18
  end
19
19
 
20
20
  def request_phase
@@ -25,21 +25,21 @@ module OmniAuth
25
25
  begin
26
26
  super
27
27
  rescue Exception => e
28
- logger.error(log_exception(e)) if logger
28
+ logger.error log_exception(e) if logger
29
29
 
30
- fail!(e.message, e.message)
30
+ fail! e.message, e.message
31
31
  end
32
32
  end
33
33
 
34
34
  def auth_hash
35
- hash = { :provider => "cadun", :uid => user.id, :user_info => user.to_hash.merge(:birthday => user.birthday.strftime('%d/%m/%Y')) }
36
- hash[:user_info].merge!(:GLBID => request.params['GLBID'], :url => request.params['url']) if request
35
+ hash = { :provider => "cadun", :uid => user.id, :info => user.to_hash.merge(:birthday => user.birthday.strftime('%d/%m/%Y')) }
36
+ hash[:credentials] = { :GLBID => request.params['GLBID'], :url => request.params['url'] } if request
37
37
 
38
38
  hash
39
39
  end
40
40
 
41
41
  def user
42
- @user ||= Cadun::User.new(:glb_id => request.params['GLBID'], :ip => client_ip, :service_id => service_id)
42
+ @user ||= Cadun::User.new :glb_id => request.params['GLBID'], :ip => client_ip, :service_id => service_id
43
43
  end
44
44
 
45
45
  def service_id
@@ -52,15 +52,11 @@ module OmniAuth
52
52
  scheme = request.env['rack.url_scheme']
53
53
 
54
54
  callback_url = "#{scheme}://#{uri}#{port}/auth/#{name}/callback"
55
- URI.escape(callback_url, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
55
+ URI.escape callback_url, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")
56
56
  end
57
57
 
58
58
  def client_ip
59
- if env['HTTP_X_FORWARDED_FOR'] and not env['HTTP_X_FORWARDED_FOR'].empty?
60
- env['HTTP_X_FORWARDED_FOR'].split(',').last.strip
61
- else
62
- env['REMOTE_ADDR']
63
- end
59
+ env['HTTP_X_FORWARDED_FOR'].present? ? env['HTTP_X_FORWARDED_FOR'].split(',').last.strip : env['REMOTE_ADDR']
64
60
  end
65
61
 
66
62
  def log_env
data/oa-globocom.gemspec CHANGED
@@ -15,12 +15,11 @@ Gem::Specification.new do |s|
15
15
  s.test_files = `git ls-files -- {spec}/*`.split("\n")
16
16
  s.require_paths = %w(lib)
17
17
 
18
- s.add_dependency 'oa-core', '~> 0.2.6'
18
+ s.add_dependency 'omniauth', '~> 1.0.0'
19
19
  s.add_dependency 'cadun', '~> 0.6.0'
20
20
  s.add_development_dependency 'rack'
21
21
  s.add_development_dependency 'rake'
22
22
  s.add_development_dependency 'rspec'
23
- s.add_development_dependency 'rr'
24
23
  s.add_development_dependency 'webmock'
25
24
  s.add_development_dependency 'timecop'
26
25
  end
@@ -79,54 +79,59 @@ describe OmniAuth::Strategies::GloboCom do
79
79
  end
80
80
 
81
81
  describe ":user_info" do
82
- subject { strategy.auth_hash[:user_info] }
82
+ subject { strategy.auth_hash[:info] }
83
+
84
+ it { should include :address => "Rua Uruguai, 59" }
85
+ it { should include :birthday => "22/02/1983" }
86
+ it { should include :city => "Rio de Janeiro" }
87
+ it { should include :country => "Brasil" }
88
+ it { should include :cpf => "09532034765" }
89
+ it { should include :email => "fab1@spam.la" }
90
+ it { should include :gender => "MASCULINO" }
91
+ it { should include :cadun_id => "21737810" }
92
+ it { should include :mobile => "21 99999999" }
93
+ it { should include :name => "Fabricio Rodrigo Lopes" }
94
+ it { should include :neighborhood => "Andaraí" }
95
+ it { should include :login => "fabricio_fab1" }
96
+ it { should include :phone => "21 22881060" }
97
+ it { should include :state => "RJ" }
98
+ it { should include :status => "ATIVO" }
99
+ it { should include :user_type => "NAO_ASSINANTE" }
100
+ it { should include :zipcode => "20510060" }
101
+ it { should include :complement => "807" }
102
+ end
103
+
104
+ describe ":credentials" do
105
+ subject { strategy.auth_hash[:credentials] }
83
106
 
84
- it { should include(:address => "Rua Uruguai, 59") }
85
- it { should include(:birthday => "22/02/1983") }
86
- it { should include(:city => "Rio de Janeiro") }
87
- it { should include(:country => "Brasil") }
88
- it { should include(:cpf => "09532034765") }
89
- it { should include(:email => "fab1@spam.la") }
90
- it { should include(:gender => "MASCULINO") }
91
107
  it { should include(:GLBID => "GLBID") }
92
- it { should include(:cadun_id => "21737810") }
93
- it { should include(:mobile => "21 99999999") }
94
- it { should include(:name => "Fabricio Rodrigo Lopes") }
95
- it { should include(:neighborhood => "Andaraí") }
96
- it { should include(:login => "fabricio_fab1") }
97
- it { should include(:phone => "21 22881060") }
98
- it { should include(:state => "RJ") }
99
- it { should include(:status => "ATIVO") }
100
108
  it { should include(:url => "/go_back") }
101
- it { should include(:user_type => "NAO_ASSINANTE") }
102
- it { should include(:zipcode => "20510060") }
103
- it { should include(:complement => "807") }
104
109
  end
105
110
  end
106
111
 
107
112
  describe "#client_ip" do
108
113
  it 'should return ip from REMOTE_ADDR when it comes alone' do
109
- strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, 'REMOTE_ADDR' => '200.201.0.15')
114
+ strategy.call! Rack::MockRequest.env_for "http://test.localhost/auth/cadun", "rack.session" => {}, 'REMOTE_ADDR' => '200.201.0.15'
110
115
  strategy.client_ip.should == '200.201.0.15'
111
116
  end
112
117
 
113
118
  it 'should return ip from REMOTE_ADDR when HTTP_X_FORWARDED_FOR is empty' do
114
- strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, 'REMOTE_ADDR' => '200.201.0.20', 'HTTP_X_FORWARDED_FOR' => '')
119
+ strategy.call! Rack::MockRequest.env_for "http://test.localhost/auth/cadun", "rack.session" => {}, 'REMOTE_ADDR' => '200.201.0.20', 'HTTP_X_FORWARDED_FOR' => ''
115
120
  strategy.client_ip.should == '200.201.0.20'
116
121
  end
117
122
 
118
123
  it 'should return ip from HTTP_X_FORWARDED_FOR when it comes alone' do
119
- strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, 'HTTP_X_FORWARDED_FOR' => '201.10.0.15')
124
+ strategy.call! Rack::MockRequest.env_for "http://test.localhost/auth/cadun", "rack.session" => {}, 'HTTP_X_FORWARDED_FOR' => '201.10.0.15'
120
125
  strategy.client_ip.should == '201.10.0.15'
121
126
  end
122
127
 
123
128
  it 'should return ip from HTTP_X_FORWARDED_FOR even if REMOTE_ADDR is present' do
124
- strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, 'REMOTE_ADDR' => '200.201.0.15', 'HTTP_X_FORWARDED_FOR' => '201.10.0.16')
129
+ strategy.call! Rack::MockRequest.env_for "http://test.localhost/auth/cadun", "rack.session" => {}, 'REMOTE_ADDR' => '200.201.0.15', 'HTTP_X_FORWARDED_FOR' => '201.10.0.16'
125
130
  strategy.client_ip.should == '201.10.0.16'
126
131
  end
127
132
 
128
133
  it 'should always return the last ip from HTTP_X_FORWARDED_FOR' do
129
- strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, 'HTTP_X_FORWARDED_FOR' => '201.10.0.15, 201.10.0.16, 201.10.0.17')
134
+ strategy.call! Rack::MockRequest.env_for "http://test.localhost/auth/cadun", "rack.session" => {}, 'HTTP_X_FORWARDED_FOR' => '201.10.0.15, 201.10.0.16, 201.10.0.17'
130
135
  strategy.client_ip.should == '201.10.0.17'
131
136
  end
132
137
  end
@@ -145,41 +150,38 @@ describe OmniAuth::Strategies::GloboCom do
145
150
  it "should render the log" do
146
151
  stub_fail_requests
147
152
 
148
- Timecop.travel(Time.now) do
153
+ Timecop.travel(Time.local(2011, 11, 24, 1, 2, 0)) do
149
154
  strategy.call! Rack::MockRequest.env_for("http://localhost/auth/cadun/callback?GLBID=GLBID", "rack.session" => {}, "REMOTE_ADDR" => "127.0.0.1")
150
155
 
151
- exception = Exception.new('NAO_AUTORIZADO')
152
- strategy.log_exception(exception).should == "#{Time.now.strftime("%d/%m/%Y %H:%M")} - SERVER_NAME: localhost | PATH_INFO: /auth/cadun/callback | QUERY_STRING: GLBID=GLBID | EXCEPTION: NAO_AUTORIZADO"
156
+ exception = Exception.new 'NAO_AUTORIZADO'
157
+ strategy.log_exception(exception).should == "24/11/2011 01:02 - SERVER_NAME: localhost | PATH_INFO: /auth/cadun/callback | QUERY_STRING: GLBID=GLBID | EXCEPTION: NAO_AUTORIZADO"
153
158
  end
154
159
  end
155
160
  end
156
161
 
157
- describe "logging failures" do
158
- before do
159
- pending("RR doesn't implement superclass stubs. I don't know how to figure it out yet.")
160
- end
161
-
162
+ describe "logging failures" do
162
163
  it "should log the failure" do
163
- strategy = OmniAuth::Strategies::GloboCom.new app, :service_id => 1, :config => "#{File.dirname(__FILE__)}/../../support/fixtures/config.yml", :logger => Logger.new($stdout)
164
+ logger = double('logger')
165
+
166
+ strategy = OmniAuth::Strategies::GloboCom.new app, :service_id => 1, :config => "#{File.dirname(__FILE__)}/../../support/fixtures/config.yml", :logger => logger
164
167
  stub_fail_requests
165
168
 
166
- logger = mock('logger')
167
- mock(logger).error('SERVER_NAME: localhost | PATH_INFO: /auth/cadun/callback | QUERY_STRING: GLBID=GLBID | EXCEPTION: Exception')
168
- stub(strategy).call_app! { raise Exception }
169
- stub(strategy).logger { logger }
169
+ Timecop.travel(Time.local(2011, 11, 24, 1, 2, 0)) do
170
+ logger.should_receive(:error).with("24/11/2011 01:02 - SERVER_NAME: localhost | PATH_INFO: /auth/cadun/callback | QUERY_STRING: GLBID=GLBID | EXCEPTION: NAO_AUTORIZADO")
171
+ strategy.stub!(:call_app!).and_raise Exception
172
+ strategy.stub!(:logger).and_return logger
170
173
 
171
- strategy.call! Rack::MockRequest.env_for("http://localhost/auth/cadun/callback?GLBID=GLBID", "rack.session" => {}, "REMOTE_ADDR" => "127.0.0.1")
174
+ strategy.call! Rack::MockRequest.env_for "http://localhost/auth/cadun/callback?GLBID=GLBID", "rack.session" => {}, "REMOTE_ADDR" => "127.0.0.1"
175
+ end
172
176
  end
173
177
 
174
178
  it "should not log the failure" do
175
179
  stub_fail_requests
176
180
 
177
- logger = mock('logger')
178
- dont_allow(logger).error
179
- stub(strategy).call_app! { raise Exception }
180
- stub(strategy).logger { nil }
181
+ strategy.stub!(:call_app!).and_raise Exception
182
+ strategy.should_not_receive :log_exception
181
183
 
182
- strategy.call! Rack::MockRequest.env_for("http://localhost/auth/cadun/callback?GLBID=GLBID", "rack.session" => {}, "REMOTE_ADDR" => "127.0.0.1")
184
+ strategy.call! Rack::MockRequest.env_for "http://localhost/auth/cadun/callback?GLBID=GLBID", "rack.session" => {}, "REMOTE_ADDR" => "127.0.0.1"
183
185
  end
184
186
  end
185
187
  end
data/spec/spec_helper.rb CHANGED
@@ -6,8 +6,8 @@ require 'timecop'
6
6
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
7
7
 
8
8
  RSpec.configure do |config|
9
- config.mock_with :rr
10
- config.filter_run :focus => true
9
+ config.mock_with :rspec
10
+ config.filter_run :wip => true
11
11
  config.run_all_when_everything_filtered = true
12
12
 
13
13
  config.before(:suite) do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oa-globocom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.10
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,22 +11,22 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-09-05 00:00:00.000000000Z
14
+ date: 2011-11-24 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: oa-core
18
- requirement: &2153613060 !ruby/object:Gem::Requirement
17
+ name: omniauth
18
+ requirement: &70284217905800 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
22
22
  - !ruby/object:Gem::Version
23
- version: 0.2.6
23
+ version: 1.0.0
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *2153613060
26
+ version_requirements: *70284217905800
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cadun
29
- requirement: &2153612560 !ruby/object:Gem::Requirement
29
+ requirement: &70284217905180 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ~>
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: 0.6.0
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *2153612560
37
+ version_requirements: *70284217905180
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rack
40
- requirement: &2153612180 !ruby/object:Gem::Requirement
40
+ requirement: &70284217904680 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *2153612180
48
+ version_requirements: *70284217904680
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: rake
51
- requirement: &2153611720 !ruby/object:Gem::Requirement
51
+ requirement: &70284217904020 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '0'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *2153611720
59
+ version_requirements: *70284217904020
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: rspec
62
- requirement: &2153611300 !ruby/object:Gem::Requirement
62
+ requirement: &70284217892560 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,21 +67,10 @@ dependencies:
67
67
  version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *2153611300
71
- - !ruby/object:Gem::Dependency
72
- name: rr
73
- requirement: &2156103020 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ! '>='
77
- - !ruby/object:Gem::Version
78
- version: '0'
79
- type: :development
80
- prerelease: false
81
- version_requirements: *2156103020
70
+ version_requirements: *70284217892560
82
71
  - !ruby/object:Gem::Dependency
83
72
  name: webmock
84
- requirement: &2156102600 !ruby/object:Gem::Requirement
73
+ requirement: &70284217892140 !ruby/object:Gem::Requirement
85
74
  none: false
86
75
  requirements:
87
76
  - - ! '>='
@@ -89,10 +78,10 @@ dependencies:
89
78
  version: '0'
90
79
  type: :development
91
80
  prerelease: false
92
- version_requirements: *2156102600
81
+ version_requirements: *70284217892140
93
82
  - !ruby/object:Gem::Dependency
94
83
  name: timecop
95
- requirement: &2156102180 !ruby/object:Gem::Requirement
84
+ requirement: &70284217891720 !ruby/object:Gem::Requirement
96
85
  none: false
97
86
  requirements:
98
87
  - - ! '>='
@@ -100,7 +89,7 @@ dependencies:
100
89
  version: '0'
101
90
  type: :development
102
91
  prerelease: false
103
- version_requirements: *2156102180
92
+ version_requirements: *70284217891720
104
93
  description: The goal of this gem is to allow the developer to use ContaGlobo.com
105
94
  (a login webservice made by Globo.com) in any web app using OmniAuth
106
95
  email:
@@ -146,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
135
  version: '0'
147
136
  requirements: []
148
137
  rubyforge_project:
149
- rubygems_version: 1.8.6
138
+ rubygems_version: 1.8.10
150
139
  signing_key:
151
140
  specification_version: 3
152
141
  summary: OmniAuth strategy for Globo.com authentication system