oa-globocom 0.4.10 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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