oa-globocom 0.2.0 → 0.4.5
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.
- data/lib/oa-globocom/version.rb +2 -2
- data/lib/oa-globocom.rb +1 -5
- data/lib/omni_auth/strategies/globocom.rb +10 -9
- data/oa-globocom.gemspec +3 -2
- data/spec/omni_auth/strategies/globocom_spec.rb +14 -14
- data/spec/spec_helper.rb +8 -18
- data/spec/support/fixtures/config.yml +1 -2
- metadata +80 -76
data/lib/oa-globocom/version.rb
CHANGED
data/lib/oa-globocom.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require '
|
1
|
+
require 'rubygems'
|
2
|
+
require 'oa-core'
|
3
|
+
require 'cadun'
|
4
|
+
require 'cadun/config'
|
4
5
|
|
5
6
|
module OmniAuth
|
6
7
|
module Strategies
|
@@ -8,20 +9,20 @@ module OmniAuth
|
|
8
9
|
include OmniAuth::Strategy
|
9
10
|
|
10
11
|
def initialize(app, options = {})
|
11
|
-
|
12
|
+
Cadun::Config.load_file(options[:config])
|
12
13
|
|
13
|
-
super(app, :
|
14
|
+
super(app, :cadun, options)
|
14
15
|
end
|
15
16
|
|
16
17
|
def request_phase
|
17
|
-
redirect "#{
|
18
|
+
redirect "#{Cadun::Config.login_url}/#{service_id}?url=#{callback_url}"
|
18
19
|
end
|
19
20
|
|
20
21
|
def callback_phase
|
21
22
|
begin
|
22
23
|
super
|
23
24
|
rescue => e
|
24
|
-
fail!(
|
25
|
+
fail!(e.message, e.message)
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
@@ -30,7 +31,7 @@ module OmniAuth
|
|
30
31
|
end
|
31
32
|
|
32
33
|
def user
|
33
|
-
@user ||=
|
34
|
+
@user ||= Cadun::User.new(:glb_id => request.params['GLBID'], :ip => client_ip, :service_id => service_id)
|
34
35
|
end
|
35
36
|
|
36
37
|
def service_id
|
@@ -55,7 +56,7 @@ module OmniAuth
|
|
55
56
|
end
|
56
57
|
|
57
58
|
def self.build_auth_hash(user, request = nil)
|
58
|
-
hash = { :provider => "
|
59
|
+
hash = { :provider => "cadun", :uid => user.id, :user_info => user.to_hash.merge(:birthday => user.birthday.strftime('%d/%m/%Y')) }
|
59
60
|
hash[:user_info].merge!(:GLBID => request.params['GLBID'], :url => request.params['url']) if request
|
60
61
|
|
61
62
|
hash
|
data/oa-globocom.gemspec
CHANGED
@@ -15,9 +15,10 @@ 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'
|
19
|
-
s.add_dependency '
|
18
|
+
s.add_dependency 'oa-core', '~> 0.2.6'
|
19
|
+
s.add_dependency 'cadun', '~> 0.5.3'
|
20
20
|
s.add_development_dependency 'rack'
|
21
|
+
s.add_development_dependency 'rake'
|
21
22
|
s.add_development_dependency 'rspec'
|
22
23
|
s.add_development_dependency 'rr'
|
23
24
|
s.add_development_dependency 'fakeweb'
|
@@ -9,7 +9,7 @@ describe OmniAuth::Strategies::GloboCom do
|
|
9
9
|
describe "#request_phase" do
|
10
10
|
context "when it has a referer" do
|
11
11
|
before do
|
12
|
-
strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/
|
12
|
+
strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, "HTTP_HOST" => "test.localhost")
|
13
13
|
|
14
14
|
@status, @headers, @body = strategy.request_phase
|
15
15
|
end
|
@@ -19,13 +19,13 @@ describe OmniAuth::Strategies::GloboCom do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
describe "headers" do
|
22
|
-
it { @headers.should include("Location" => "https://login.dev.globoi.com/login/1?url=http%3A%2F%2Ftest.localhost%2Fauth%
|
22
|
+
it { @headers.should include("Location" => "https://login.dev.globoi.com/login/1?url=http%3A%2F%2Ftest.localhost%2Fauth%2Fcadun%2Fcallback") }
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
context "when it has a referer and a different port" do
|
27
27
|
before do
|
28
|
-
strategy.call!(Rack::MockRequest.env_for("http://test.localhost:8080/auth/
|
28
|
+
strategy.call!(Rack::MockRequest.env_for("http://test.localhost:8080/auth/cadun", "rack.session" => {}, "HTTP_HOST" => "test.localhost", "SERVER_PORT" => "8080"))
|
29
29
|
|
30
30
|
@status, @headers, @body = strategy.request_phase
|
31
31
|
end
|
@@ -35,7 +35,7 @@ describe OmniAuth::Strategies::GloboCom do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
describe "headers" do
|
38
|
-
it { @headers.should include("Location" => "https://login.dev.globoi.com/login/1?url=http%3A%2F%2Ftest.localhost%3A8080%2Fauth%
|
38
|
+
it { @headers.should include("Location" => "https://login.dev.globoi.com/login/1?url=http%3A%2F%2Ftest.localhost%3A8080%2Fauth%2Fcadun%2Fcallback") }
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -44,18 +44,18 @@ describe OmniAuth::Strategies::GloboCom do
|
|
44
44
|
context "when the authorization fails" do
|
45
45
|
before do
|
46
46
|
stub_fail_requests
|
47
|
-
strategy.call! Rack::MockRequest.env_for("http://localhost/auth/
|
47
|
+
strategy.call! Rack::MockRequest.env_for("http://localhost/auth/cadun/callback?GLBID=GLBID", "rack.session" => {}, "REMOTE_ADDR" => "127.0.0.1")
|
48
48
|
end
|
49
49
|
|
50
50
|
it { strategy.env['omniauth.auth'].should be_nil }
|
51
|
-
it { strategy.env['omniauth.error'].
|
52
|
-
it { strategy.env['omniauth.error.type'].should == :
|
51
|
+
it { strategy.env['omniauth.error'].should == "not authorized" }
|
52
|
+
it { strategy.env['omniauth.error.type'].should == :"not authorized" }
|
53
53
|
end
|
54
54
|
|
55
55
|
context "when the authorization succeeds" do
|
56
56
|
before do
|
57
57
|
stub_requests
|
58
|
-
strategy.call! Rack::MockRequest.env_for("http://localhost/auth/
|
58
|
+
strategy.call! Rack::MockRequest.env_for("http://localhost/auth/cadun/callback?GLBID=GLBID", "rack.session" => {}, "REMOTE_ADDR" => "127.0.0.1")
|
59
59
|
end
|
60
60
|
|
61
61
|
it { strategy.env['omniauth.auth'].should_not be_nil }
|
@@ -75,7 +75,7 @@ describe OmniAuth::Strategies::GloboCom do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
describe ":provider" do
|
78
|
-
it { strategy.auth_hash[:provider].should == "
|
78
|
+
it { strategy.auth_hash[:provider].should == "cadun" }
|
79
79
|
end
|
80
80
|
|
81
81
|
describe ":user_info" do
|
@@ -106,27 +106,27 @@ describe OmniAuth::Strategies::GloboCom do
|
|
106
106
|
|
107
107
|
describe "#client_ip" do
|
108
108
|
it 'should return ip from REMOTE_ADDR when it comes alone' do
|
109
|
-
strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/
|
109
|
+
strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, 'REMOTE_ADDR' => '200.201.0.15')
|
110
110
|
strategy.client_ip.should == '200.201.0.15'
|
111
111
|
end
|
112
112
|
|
113
113
|
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/
|
114
|
+
strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, 'REMOTE_ADDR' => '200.201.0.20', 'HTTP_X_FORWARDED_FOR' => '')
|
115
115
|
strategy.client_ip.should == '200.201.0.20'
|
116
116
|
end
|
117
117
|
|
118
118
|
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/
|
119
|
+
strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/cadun", "rack.session" => {}, 'HTTP_X_FORWARDED_FOR' => '201.10.0.15')
|
120
120
|
strategy.client_ip.should == '201.10.0.15'
|
121
121
|
end
|
122
122
|
|
123
123
|
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/
|
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')
|
125
125
|
strategy.client_ip.should == '201.10.0.16'
|
126
126
|
end
|
127
127
|
|
128
128
|
it 'should always return the last ip from HTTP_X_FORWARDED_FOR' do
|
129
|
-
strategy.call! Rack::MockRequest.env_for("http://test.localhost/auth/
|
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')
|
130
130
|
strategy.client_ip.should == '201.10.0.17'
|
131
131
|
end
|
132
132
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,31 +5,21 @@ require 'rack/mock'
|
|
5
5
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
6
6
|
|
7
7
|
RSpec.configure do |config|
|
8
|
-
config.before :suite do
|
9
|
-
FakeWeb.allow_net_connect = false
|
10
|
-
end
|
11
|
-
|
12
|
-
config.before :each do
|
13
|
-
FakeWeb.clean_registry
|
14
|
-
end
|
15
|
-
|
16
8
|
config.mock_with :rr
|
17
9
|
config.filter_run :focus => true
|
18
10
|
config.run_all_when_everything_filtered = true
|
11
|
+
|
12
|
+
config.before(:suite) do
|
13
|
+
FakeWeb.allow_net_connect = false
|
14
|
+
end
|
19
15
|
end
|
20
16
|
|
21
17
|
def stub_requests
|
22
|
-
FakeWeb.register_uri
|
23
|
-
|
24
|
-
|
25
|
-
FakeWeb.register_uri :get, "http://isp-authenticator.dev.globoi.com:8280/cadunii/ws/resources/pessoa/21737810",
|
26
|
-
:body => File.join(File.dirname(__FILE__), "support", "fixtures", "pessoa.xml")
|
18
|
+
FakeWeb.register_uri(:put, "http://isp-authenticator.dev.globoi.com:8280/ws/rest/autorizacao", :body => "#{File.dirname(__FILE__)}/support/fixtures/autorizacao.xml")
|
19
|
+
FakeWeb.register_uri(:get, "http://isp-authenticator.dev.globoi.com:8280/cadunii/ws/resources/pessoa/21737810", :body => "#{File.dirname(__FILE__)}/support/fixtures/pessoa.xml")
|
27
20
|
end
|
28
21
|
|
29
22
|
def stub_fail_requests
|
30
|
-
FakeWeb.register_uri
|
31
|
-
|
32
|
-
|
33
|
-
FakeWeb.register_uri :get, "http://isp-authenticator.dev.globoi.com:8280/cadunii/ws/resources/pessoa/21737810",
|
34
|
-
:body => File.join(File.dirname(__FILE__), "support", "fixtures", "pessoa.xml")
|
23
|
+
FakeWeb.register_uri(:put, "http://isp-authenticator.dev.globoi.com:8280/ws/rest/autorizacao", :body => "#{File.dirname(__FILE__)}/support/fixtures/autorizacao_fail.xml")
|
24
|
+
FakeWeb.register_uri(:get, "http://isp-authenticator.dev.globoi.com:8280/cadunii/ws/resources/pessoa/21737810", :body => "#{File.dirname(__FILE__)}/support/fixtures/pessoa.xml")
|
35
25
|
end
|
metadata
CHANGED
@@ -1,95 +1,103 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: oa-globocom
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.5
|
4
5
|
prerelease:
|
5
|
-
version: 0.2.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Bruno
|
9
9
|
- Azisaka
|
10
10
|
- Maciel
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
date: 2011-07-27 00:00:00.000000000Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
18
17
|
name: oa-core
|
19
|
-
|
20
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirement: &2161634800 !ruby/object:Gem::Requirement
|
21
19
|
none: false
|
22
|
-
requirements:
|
23
|
-
- -
|
24
|
-
- !ruby/object:Gem::Version
|
25
|
-
version:
|
20
|
+
requirements:
|
21
|
+
- - ~>
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.2.6
|
26
24
|
type: :runtime
|
27
|
-
version_requirements: *id001
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: globocom-auth
|
30
25
|
prerelease: false
|
31
|
-
|
26
|
+
version_requirements: *2161634800
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: cadun
|
29
|
+
requirement: &2161634300 !ruby/object:Gem::Requirement
|
32
30
|
none: false
|
33
|
-
requirements:
|
34
|
-
- -
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 0.
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 0.5.3
|
37
35
|
type: :runtime
|
38
|
-
|
39
|
-
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *2161634300
|
38
|
+
- !ruby/object:Gem::Dependency
|
40
39
|
name: rack
|
40
|
+
requirement: &2161633920 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
type: :development
|
41
47
|
prerelease: false
|
42
|
-
|
48
|
+
version_requirements: *2161633920
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rake
|
51
|
+
requirement: &2161633460 !ruby/object:Gem::Requirement
|
43
52
|
none: false
|
44
|
-
requirements:
|
45
|
-
- -
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version:
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
48
57
|
type: :development
|
49
|
-
version_requirements: *id003
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: rspec
|
52
58
|
prerelease: false
|
53
|
-
|
59
|
+
version_requirements: *2161633460
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: rspec
|
62
|
+
requirement: &2161633040 !ruby/object:Gem::Requirement
|
54
63
|
none: false
|
55
|
-
requirements:
|
56
|
-
- -
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
version:
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
59
68
|
type: :development
|
60
|
-
version_requirements: *id004
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: rr
|
63
69
|
prerelease: false
|
64
|
-
|
70
|
+
version_requirements: *2161633040
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rr
|
73
|
+
requirement: &2161632620 !ruby/object:Gem::Requirement
|
65
74
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version:
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
70
79
|
type: :development
|
71
|
-
version_requirements: *id005
|
72
|
-
- !ruby/object:Gem::Dependency
|
73
|
-
name: fakeweb
|
74
80
|
prerelease: false
|
75
|
-
|
81
|
+
version_requirements: *2161632620
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: fakeweb
|
84
|
+
requirement: &2161632200 !ruby/object:Gem::Requirement
|
76
85
|
none: false
|
77
|
-
requirements:
|
78
|
-
- -
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version:
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
81
90
|
type: :development
|
82
|
-
|
83
|
-
|
84
|
-
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: *2161632200
|
93
|
+
description: The goal of this gem is to allow the developer to use ContaGlobo.com
|
94
|
+
(a login webservice made by Globo.com) in any web app using OmniAuth
|
95
|
+
email:
|
85
96
|
- bruno@azisaka.com.br
|
86
97
|
executables: []
|
87
|
-
|
88
98
|
extensions: []
|
89
|
-
|
90
99
|
extra_rdoc_files: []
|
91
|
-
|
92
|
-
files:
|
100
|
+
files:
|
93
101
|
- .gitignore
|
94
102
|
- .rspec
|
95
103
|
- .rvmrc
|
@@ -109,30 +117,26 @@ files:
|
|
109
117
|
- spec/support/fixtures/pessoa.xml
|
110
118
|
homepage: https://github.com/azisaka/oa-globocom
|
111
119
|
licenses: []
|
112
|
-
|
113
120
|
post_install_message:
|
114
121
|
rdoc_options: []
|
115
|
-
|
116
|
-
require_paths:
|
122
|
+
require_paths:
|
117
123
|
- lib
|
118
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
125
|
none: false
|
120
|
-
requirements:
|
121
|
-
- -
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version:
|
124
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ! '>='
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
131
|
none: false
|
126
|
-
requirements:
|
127
|
-
- -
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version:
|
132
|
+
requirements:
|
133
|
+
- - ! '>='
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
130
136
|
requirements: []
|
131
|
-
|
132
137
|
rubyforge_project:
|
133
|
-
rubygems_version: 1.8.
|
138
|
+
rubygems_version: 1.8.6
|
134
139
|
signing_key:
|
135
140
|
specification_version: 3
|
136
141
|
summary: OmniAuth strategy for Globo.com authentication system
|
137
142
|
test_files: []
|
138
|
-
|