omniauth-ldap 1.0.5 → 2.0.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 +7 -0
- data/lib/omniauth-ldap/version.rb +1 -1
- data/omniauth-ldap.gemspec +7 -9
- data/spec/omniauth-ldap/adaptor_spec.rb +48 -44
- data/spec/omniauth/strategies/ldap_spec.rb +59 -53
- metadata +35 -81
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4a580a1583118feff557707be44e27399e53b1b4
|
4
|
+
data.tar.gz: 2b1e9f565c330b999f2724f0ea192ab86c47ca33
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 790f8a998f080ccd92746f748fb4d0066a4e2e87d62cd9f0434dc639fc829e7711a52ab640c97541eb8346528c6e4556bd25c6cfc86a69f09639bfbb8ce14d2c
|
7
|
+
data.tar.gz: 5722ea2a9335f2171b70aafdf461790eb22ebbbb7e48fc56a646b776ec96d9915fdcfc4e581c7afe8b53cc5ead645eedfbf89e9aaa4e7e7ed2ea6acbb1584a6c
|
data/omniauth-ldap.gemspec
CHANGED
@@ -2,22 +2,20 @@
|
|
2
2
|
require File.expand_path('../lib/omniauth-ldap/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
-
gem.authors = ["Ping Yu"]
|
6
|
-
gem.email = ["ping@intridea.com"]
|
5
|
+
gem.authors = ["Ping Yu", "Tom Milewski"]
|
6
|
+
gem.email = ["ping@intridea.com", "tmilewski@gmail.com"]
|
7
7
|
gem.description = %q{A LDAP strategy for OmniAuth.}
|
8
8
|
gem.summary = %q{A LDAP strategy for OmniAuth.}
|
9
9
|
gem.homepage = "https://github.com/intridea/omniauth-ldap"
|
10
10
|
gem.license = "MIT"
|
11
11
|
|
12
|
-
gem.add_runtime_dependency 'omniauth', '~> 1.
|
13
|
-
gem.add_runtime_dependency 'net-ldap', '~> 0.
|
14
|
-
gem.add_runtime_dependency 'pyu-ruby-sasl', '~> 0.0.3.
|
15
|
-
gem.add_runtime_dependency 'rubyntlm', '~> 0.
|
16
|
-
gem.add_development_dependency 'rspec', '~>
|
12
|
+
gem.add_runtime_dependency 'omniauth', '~> 1.8.1'
|
13
|
+
gem.add_runtime_dependency 'net-ldap', '~> 0.16'
|
14
|
+
gem.add_runtime_dependency 'pyu-ruby-sasl', '~> 0.0.3.3'
|
15
|
+
gem.add_runtime_dependency 'rubyntlm', '~> 0.6.2'
|
16
|
+
gem.add_development_dependency 'rspec', '~> 3.0'
|
17
17
|
gem.add_development_dependency 'simplecov'
|
18
18
|
gem.add_development_dependency 'rack-test'
|
19
|
-
gem.add_development_dependency 'libnotify'
|
20
|
-
gem.add_development_dependency 'ruby-debug19'
|
21
19
|
|
22
20
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
23
21
|
gem.files = `git ls-files`.split("\n")
|
@@ -4,79 +4,83 @@ describe "OmniAuth::LDAP::Adaptor" do
|
|
4
4
|
describe 'initialize' do
|
5
5
|
it 'should throw exception when must have field is not set' do
|
6
6
|
#[:host, :port, :method, :bind_dn]
|
7
|
-
|
7
|
+
expect {
|
8
|
+
OmniAuth::LDAP::Adaptor.new({ host: "192.168.1.145", method: 'plain' })
|
9
|
+
}.to raise_error(ArgumentError)
|
8
10
|
end
|
9
11
|
|
10
12
|
it 'should throw exception when method is not supported' do
|
11
|
-
|
13
|
+
expect {
|
14
|
+
OmniAuth::LDAP::Adaptor.new({ host: "192.168.1.145", method: 'myplain', uid: 'uid', port: 389, base: 'dc=com' })
|
15
|
+
}.to raise_error(OmniAuth::LDAP::Adaptor::ConfigurationError)
|
12
16
|
end
|
13
17
|
|
14
18
|
it 'should setup ldap connection with anonymous' do
|
15
|
-
adaptor = OmniAuth::LDAP::Adaptor.new({host: "192.168.1.145", method: 'plain', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName'})
|
16
|
-
adaptor.connection.
|
17
|
-
adaptor.connection.host.
|
18
|
-
adaptor.connection.port.
|
19
|
-
adaptor.connection.base.
|
20
|
-
adaptor.connection.instance_variable_get('@auth').
|
19
|
+
adaptor = OmniAuth::LDAP::Adaptor.new({ host: "192.168.1.145", method: 'plain', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName' })
|
20
|
+
expect(adaptor.connection).to_not be_nil
|
21
|
+
expect(adaptor.connection.host).to eq '192.168.1.145'
|
22
|
+
expect(adaptor.connection.port).to eq 389
|
23
|
+
expect(adaptor.connection.base).to eq 'dc=intridea, dc=com'
|
24
|
+
expect(adaptor.connection.instance_variable_get('@auth')).to eq({ method: :anonymous, username: nil, password: nil })
|
21
25
|
end
|
22
26
|
|
23
27
|
it 'should setup ldap connection with simple' do
|
24
|
-
adaptor = OmniAuth::LDAP::Adaptor.new({host: "192.168.1.145", method: 'plain', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName', bind_dn: 'bind_dn', password: 'password'})
|
25
|
-
adaptor.connection.
|
26
|
-
adaptor.connection.host.
|
27
|
-
adaptor.connection.port.
|
28
|
-
adaptor.connection.base.
|
29
|
-
adaptor.connection.instance_variable_get('@auth').
|
28
|
+
adaptor = OmniAuth::LDAP::Adaptor.new({ host: "192.168.1.145", method: 'plain', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName', bind_dn: 'bind_dn', password: 'password' })
|
29
|
+
expect(adaptor.connection).to_not be_nil
|
30
|
+
expect(adaptor.connection.host).to eq '192.168.1.145'
|
31
|
+
expect(adaptor.connection.port).to eq 389
|
32
|
+
expect(adaptor.connection.base).to eq 'dc=intridea, dc=com'
|
33
|
+
expect(adaptor.connection.instance_variable_get('@auth')).to eq({ method: :simple, username: 'bind_dn', password: 'password' })
|
30
34
|
end
|
31
35
|
|
32
36
|
it 'should setup ldap connection with sasl-md5' do
|
33
|
-
adaptor = OmniAuth::LDAP::Adaptor.new({host: "192.168.1.145", method: 'plain', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName', try_sasl: true, sasl_mechanisms: ["DIGEST-MD5"], bind_dn: 'bind_dn', password: 'password'})
|
34
|
-
adaptor.connection.
|
35
|
-
adaptor.connection.host.
|
36
|
-
adaptor.connection.port.
|
37
|
-
adaptor.connection.base.
|
38
|
-
adaptor.connection.instance_variable_get('@auth')[:method].
|
39
|
-
adaptor.connection.instance_variable_get('@auth')[:mechanism].
|
40
|
-
adaptor.connection.instance_variable_get('@auth')[:initial_credential].
|
41
|
-
adaptor.connection.instance_variable_get('@auth')[:challenge_response].
|
37
|
+
adaptor = OmniAuth::LDAP::Adaptor.new({ host: "192.168.1.145", method: 'plain', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName', try_sasl: true, sasl_mechanisms: ["DIGEST-MD5"], bind_dn: 'bind_dn', password: 'password' })
|
38
|
+
expect(adaptor.connection).to_not be_nil
|
39
|
+
expect(adaptor.connection.host).to eq '192.168.1.145'
|
40
|
+
expect(adaptor.connection.port).to eq 389
|
41
|
+
expect(adaptor.connection.base).to eq 'dc=intridea, dc=com'
|
42
|
+
expect(adaptor.connection.instance_variable_get('@auth')[:method]).to eq :sasl
|
43
|
+
expect(adaptor.connection.instance_variable_get('@auth')[:mechanism]).to eq 'DIGEST-MD5'
|
44
|
+
expect(adaptor.connection.instance_variable_get('@auth')[:initial_credential]).to eq ''
|
45
|
+
expect(adaptor.connection.instance_variable_get('@auth')[:challenge_response]).to_not be_nil
|
42
46
|
end
|
43
47
|
|
44
48
|
it 'should setup ldap connection with sasl-gss' do
|
45
49
|
adaptor = OmniAuth::LDAP::Adaptor.new({host: "192.168.1.145", method: 'plain', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName', try_sasl: true, sasl_mechanisms: ["GSS-SPNEGO"], bind_dn: 'bind_dn', password: 'password'})
|
46
|
-
adaptor.connection.
|
47
|
-
adaptor.connection.host.
|
48
|
-
adaptor.connection.port.
|
49
|
-
adaptor.connection.base.
|
50
|
-
adaptor.connection.instance_variable_get('@auth')[:method].
|
51
|
-
adaptor.connection.instance_variable_get('@auth')[:mechanism].
|
52
|
-
adaptor.connection.instance_variable_get('@auth')[:initial_credential].
|
53
|
-
adaptor.connection.instance_variable_get('@auth')[:challenge_response].
|
50
|
+
expect(adaptor.connection).to_not be_nil
|
51
|
+
expect(adaptor.connection.host).to eq '192.168.1.145'
|
52
|
+
expect(adaptor.connection.port).to eq 389
|
53
|
+
expect(adaptor.connection.base).to eq 'dc=intridea, dc=com'
|
54
|
+
expect(adaptor.connection.instance_variable_get('@auth')[:method]).to eq :sasl
|
55
|
+
expect(adaptor.connection.instance_variable_get('@auth')[:mechanism]).to eq 'GSS-SPNEGO'
|
56
|
+
expect(adaptor.connection.instance_variable_get('@auth')[:initial_credential]).to match /^NTLMSSP/
|
57
|
+
expect(adaptor.connection.instance_variable_get('@auth')[:challenge_response]).to_not be_nil
|
54
58
|
end
|
55
59
|
|
56
60
|
it 'should set the encryption method correctly' do
|
57
|
-
adaptor = OmniAuth::LDAP::Adaptor.new({host: "192.168.1.145", method: 'tls', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName'})
|
58
|
-
adaptor.connection.instance_variable_get('@encryption').
|
61
|
+
adaptor = OmniAuth::LDAP::Adaptor.new({ host: "192.168.1.145", method: 'tls', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName' })
|
62
|
+
expect(adaptor.connection.instance_variable_get('@encryption')).to include method: :start_tls
|
59
63
|
end
|
60
64
|
end
|
61
65
|
|
62
66
|
describe 'bind_as' do
|
63
|
-
let(:args) { {:filter => Net::LDAP::Filter.eq('sAMAccountName', 'username'), :password => 'password', :size => 1} }
|
67
|
+
let(:args) { { :filter => Net::LDAP::Filter.eq('sAMAccountName', 'username'), :password => 'password', :size => 1 } }
|
64
68
|
let(:rs) { Struct.new(:dn).new('new dn') }
|
65
69
|
|
66
70
|
it 'should bind simple' do
|
67
|
-
adaptor = OmniAuth::LDAP::Adaptor.new({host: "192.168.1.126", method: 'plain', base: 'dc=score, dc=local', port: 389, uid: 'sAMAccountName', bind_dn: 'bind_dn', password: 'password'})
|
68
|
-
adaptor.connection.
|
69
|
-
adaptor.connection.
|
70
|
-
adaptor.connection.
|
71
|
-
adaptor.bind_as(args).
|
71
|
+
adaptor = OmniAuth::LDAP::Adaptor.new({ host: "192.168.1.126", method: 'plain', base: 'dc=score, dc=local', port: 389, uid: 'sAMAccountName', bind_dn: 'bind_dn', password: 'password' })
|
72
|
+
expect(adaptor.connection).to receive(:open).and_yield(adaptor.connection)
|
73
|
+
expect(adaptor.connection).to receive(:search).with(args).and_return([rs])
|
74
|
+
expect(adaptor.connection).to receive(:bind).with({ :username => 'new dn', :password => args[:password], :method => :simple }).and_return(true)
|
75
|
+
expect(adaptor.bind_as(args)).to eq rs
|
72
76
|
end
|
73
77
|
|
74
78
|
it 'should bind sasl' do
|
75
|
-
adaptor = OmniAuth::LDAP::Adaptor.new({host: "192.168.1.145", method: 'plain', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName', try_sasl: true, sasl_mechanisms: ["GSS-SPNEGO"], bind_dn: 'bind_dn', password: 'password'})
|
76
|
-
adaptor.connection.
|
77
|
-
adaptor.connection.
|
78
|
-
adaptor.connection.
|
79
|
-
adaptor.bind_as(args).
|
79
|
+
adaptor = OmniAuth::LDAP::Adaptor.new({ host: "192.168.1.145", method: 'plain', base: 'dc=intridea, dc=com', port: 389, uid: 'sAMAccountName', try_sasl: true, sasl_mechanisms: ["GSS-SPNEGO"], bind_dn: 'bind_dn', password: 'password' })
|
80
|
+
expect(adaptor.connection).to receive(:open).and_yield(adaptor.connection)
|
81
|
+
expect(adaptor.connection).to receive(:search).with(args).and_return([rs])
|
82
|
+
expect(adaptor.connection).to receive(:bind).and_return(true)
|
83
|
+
expect(adaptor.bind_as(args)).to eq rs
|
80
84
|
end
|
81
85
|
end
|
82
86
|
end
|
@@ -24,75 +24,77 @@ describe "OmniAuth::Strategies::LDAP" do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'should add a camelization for itself' do
|
27
|
-
OmniAuth::Utils.camelize('ldap').
|
27
|
+
expect(OmniAuth::Utils.camelize('ldap')).to eq 'LDAP'
|
28
28
|
end
|
29
29
|
|
30
30
|
describe '/auth/ldap' do
|
31
31
|
before(:each){ get '/auth/ldap' }
|
32
32
|
|
33
33
|
it 'should display a form' do
|
34
|
-
last_response.status.
|
35
|
-
last_response.body.
|
34
|
+
expect(last_response.status).to eq 200
|
35
|
+
expect(last_response.body).to include("<form")
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'should have the callback as the action for the form' do
|
39
|
-
last_response.body.
|
39
|
+
expect(last_response.body).to include("action='/auth/ldap/callback'")
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'should have a text field for each of the fields' do
|
43
|
-
last_response.body.scan('<input').size.
|
43
|
+
expect(last_response.body.scan('<input').size).to eq 2
|
44
44
|
end
|
45
45
|
it 'should have a label of the form title' do
|
46
|
-
last_response.body.scan('MyLdap Form').size.
|
46
|
+
expect(last_response.body.scan('MyLdap Form').size).to be > 1
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
describe 'post /auth/ldap/callback' do
|
51
51
|
before(:each) do
|
52
52
|
@adaptor = double(OmniAuth::LDAP::Adaptor, {:uid => 'ping'})
|
53
|
-
|
54
|
-
|
53
|
+
|
54
|
+
allow(@adaptor).to receive(:filter)
|
55
|
+
allow(OmniAuth::LDAP::Adaptor).to receive(:new) { @adaptor }
|
55
56
|
end
|
56
57
|
|
57
58
|
context 'failure' do
|
58
59
|
before(:each) do
|
59
|
-
@adaptor.
|
60
|
+
allow(@adaptor).to receive(:bind_as) { false }
|
60
61
|
end
|
61
62
|
|
62
63
|
context "when username is not preset" do
|
63
64
|
it 'should redirect to error page' do
|
64
65
|
post('/auth/ldap/callback', {})
|
65
66
|
|
66
|
-
last_response.
|
67
|
-
last_response.
|
67
|
+
# expect(last_response).to be redirect
|
68
|
+
expect(last_response).to be_redirect
|
69
|
+
expect(last_response.headers['Location']).to match %r{missing_credentials}
|
68
70
|
end
|
69
71
|
end
|
70
72
|
|
71
73
|
context "when username is empty" do
|
72
74
|
it 'should redirect to error page' do
|
73
|
-
post('/auth/ldap/callback', {:
|
75
|
+
post('/auth/ldap/callback', { username: "" })
|
74
76
|
|
75
|
-
last_response.
|
76
|
-
last_response.headers['Location'].
|
77
|
+
expect(last_response).to be_redirect
|
78
|
+
expect(last_response.headers['Location']).to match %r{missing_credentials}
|
77
79
|
end
|
78
80
|
end
|
79
81
|
|
80
82
|
context "when username is present" do
|
81
83
|
context "and password is not preset" do
|
82
84
|
it 'should redirect to error page' do
|
83
|
-
post('/auth/ldap/callback', {:
|
85
|
+
post('/auth/ldap/callback', { username: "ping" })
|
84
86
|
|
85
|
-
last_response.
|
86
|
-
last_response.headers['Location'].
|
87
|
+
expect(last_response).to be_redirect
|
88
|
+
expect(last_response.headers['Location']).to match %r{missing_credentials}
|
87
89
|
end
|
88
90
|
end
|
89
91
|
|
90
92
|
context "and password is empty" do
|
91
93
|
it 'should redirect to error page' do
|
92
|
-
post('/auth/ldap/callback', {:
|
94
|
+
post('/auth/ldap/callback', { username: "ping", password: "" })
|
93
95
|
|
94
|
-
last_response.
|
95
|
-
last_response.headers['Location'].
|
96
|
+
expect(last_response).to be_redirect
|
97
|
+
expect(last_response.headers['Location']).to match %r{missing_credentials}
|
96
98
|
end
|
97
99
|
end
|
98
100
|
end
|
@@ -100,19 +102,19 @@ describe "OmniAuth::Strategies::LDAP" do
|
|
100
102
|
context "when username and password are present" do
|
101
103
|
context "and bind on LDAP server failed" do
|
102
104
|
it 'should redirect to error page' do
|
103
|
-
post('/auth/ldap/callback', {:
|
105
|
+
post('/auth/ldap/callback', { username: 'ping', password: 'password' })
|
104
106
|
|
105
|
-
last_response.
|
106
|
-
last_response.headers['Location'].
|
107
|
+
expect(last_response).to be_redirect
|
108
|
+
expect(last_response.headers['Location']).to match %r{invalid_credentials}
|
107
109
|
end
|
108
110
|
context 'and filter is set' do
|
109
111
|
it 'should bind with filter' do
|
110
|
-
@adaptor.
|
111
|
-
Net::LDAP::Filter.
|
112
|
-
post('/auth/ldap/callback', {:
|
112
|
+
allow(@adaptor).to receive(:filter) { 'uid=%{username}' }
|
113
|
+
expect(Net::LDAP::Filter).to receive(:construct).with('uid=ping')
|
114
|
+
post('/auth/ldap/callback', { username: 'ping', password: 'password' })
|
113
115
|
|
114
|
-
last_response.
|
115
|
-
last_response.headers['Location'].
|
116
|
+
expect(last_response).to be_redirect
|
117
|
+
expect(last_response.headers['Location']).to match %r{invalid_credentials}
|
116
118
|
end
|
117
119
|
end
|
118
120
|
|
@@ -120,14 +122,14 @@ describe "OmniAuth::Strategies::LDAP" do
|
|
120
122
|
|
121
123
|
context "and communication with LDAP server caused an exception" do
|
122
124
|
before :each do
|
123
|
-
@adaptor.
|
125
|
+
allow(@adaptor).to receive(:bind_as).and_throw(Exception.new('connection_error'))
|
124
126
|
end
|
125
127
|
|
126
128
|
it 'should redirect to error page' do
|
127
|
-
post('/auth/ldap/callback', {:
|
129
|
+
post('/auth/ldap/callback', { username: "ping", password: "password" })
|
128
130
|
|
129
|
-
last_response.
|
130
|
-
last_response.headers['Location'].
|
131
|
+
expect(last_response).to be_redirect
|
132
|
+
expect(last_response.headers['Location']).to match %r{ldap_error}
|
131
133
|
end
|
132
134
|
end
|
133
135
|
end
|
@@ -137,8 +139,8 @@ describe "OmniAuth::Strategies::LDAP" do
|
|
137
139
|
let(:auth_hash){ last_request.env['omniauth.auth'] }
|
138
140
|
|
139
141
|
before(:each) do
|
140
|
-
@adaptor.
|
141
|
-
@adaptor.
|
142
|
+
allow(@adaptor).to receive(:filter)
|
143
|
+
allow(@adaptor).to receive(:bind_as) { Net::LDAP::Entry.from_single_ldif_string(
|
142
144
|
%Q{dn: cn=ping, dc=intridea, dc=com
|
143
145
|
mail: ping@intridea.com
|
144
146
|
givenname: Ping
|
@@ -156,38 +158,42 @@ wwwhomepage: www.intridea.com
|
|
156
158
|
jpegphoto: http://www.intridea.com/ping.jpg
|
157
159
|
description: omniauth-ldap
|
158
160
|
}
|
159
|
-
)
|
161
|
+
)}
|
160
162
|
end
|
161
163
|
|
162
164
|
it 'should not redirect to error page' do
|
163
165
|
post('/auth/ldap/callback', {:username => 'ping', :password => 'password'})
|
164
|
-
last_response.
|
166
|
+
expect(last_response).to_not be_redirect
|
165
167
|
end
|
166
168
|
|
167
169
|
context 'and filter is set' do
|
168
170
|
it 'should bind with filter' do
|
169
|
-
@adaptor.
|
170
|
-
Net::LDAP::Filter.
|
171
|
-
post('/auth/ldap/callback', {:
|
171
|
+
allow(@adaptor).to receive(:filter) { 'uid=%{username}' }
|
172
|
+
expect(Net::LDAP::Filter).to receive(:construct).with('uid=ping')
|
173
|
+
post('/auth/ldap/callback', { username: 'ping', password: 'password' })
|
172
174
|
|
173
|
-
last_response.
|
175
|
+
expect(last_response).to_not be_redirect
|
174
176
|
end
|
175
177
|
end
|
176
178
|
|
177
179
|
it 'should map user info to Auth Hash' do
|
178
|
-
post('/auth/ldap/callback', {:
|
179
|
-
|
180
|
-
auth_hash.
|
181
|
-
|
182
|
-
auth_hash.info
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
180
|
+
post('/auth/ldap/callback', { username: 'ping', password: 'password' })
|
181
|
+
|
182
|
+
expect(auth_hash.uid).to eq 'cn=ping, dc=intridea, dc=com'
|
183
|
+
|
184
|
+
info = auth_hash.info
|
185
|
+
|
186
|
+
expect(info.email).to eq 'ping@intridea.com'
|
187
|
+
expect(info.first_name).to eq 'Ping'
|
188
|
+
expect(info.last_name).to eq 'Yu'
|
189
|
+
expect(info.phone).to eq '555-555-5555'
|
190
|
+
expect(info.mobile).to eq '444-444-4444'
|
191
|
+
expect(info.nickname).to eq 'ping'
|
192
|
+
expect(info.title).to eq 'dev'
|
193
|
+
expect(info.location).to eq 'k street, Washington, DC, U.S.A 20001'
|
194
|
+
expect(info.url).to eq 'www.intridea.com'
|
195
|
+
expect(info.image).to eq 'http://www.intridea.com/ping.jpg'
|
196
|
+
expect(info.description).to eq 'omniauth-ldap'
|
191
197
|
end
|
192
198
|
end
|
193
199
|
end
|
metadata
CHANGED
@@ -1,169 +1,124 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-ldap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ping Yu
|
8
|
+
- Tom Milewski
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-01-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: omniauth
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
17
|
requirements:
|
19
|
-
- - ~>
|
18
|
+
- - "~>"
|
20
19
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
20
|
+
version: 1.8.1
|
22
21
|
type: :runtime
|
23
22
|
prerelease: false
|
24
23
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
24
|
requirements:
|
27
|
-
- - ~>
|
25
|
+
- - "~>"
|
28
26
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
27
|
+
version: 1.8.1
|
30
28
|
- !ruby/object:Gem::Dependency
|
31
29
|
name: net-ldap
|
32
30
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
31
|
requirements:
|
35
|
-
- - ~>
|
32
|
+
- - "~>"
|
36
33
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0.
|
34
|
+
version: '0.16'
|
38
35
|
type: :runtime
|
39
36
|
prerelease: false
|
40
37
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
38
|
requirements:
|
43
|
-
- - ~>
|
39
|
+
- - "~>"
|
44
40
|
- !ruby/object:Gem::Version
|
45
|
-
version: '0.
|
41
|
+
version: '0.16'
|
46
42
|
- !ruby/object:Gem::Dependency
|
47
43
|
name: pyu-ruby-sasl
|
48
44
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
45
|
requirements:
|
51
|
-
- - ~>
|
46
|
+
- - "~>"
|
52
47
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.0.3.
|
48
|
+
version: 0.0.3.3
|
54
49
|
type: :runtime
|
55
50
|
prerelease: false
|
56
51
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
52
|
requirements:
|
59
|
-
- - ~>
|
53
|
+
- - "~>"
|
60
54
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.0.3.
|
55
|
+
version: 0.0.3.3
|
62
56
|
- !ruby/object:Gem::Dependency
|
63
57
|
name: rubyntlm
|
64
58
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
59
|
requirements:
|
67
|
-
- - ~>
|
60
|
+
- - "~>"
|
68
61
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.
|
62
|
+
version: 0.6.2
|
70
63
|
type: :runtime
|
71
64
|
prerelease: false
|
72
65
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
66
|
requirements:
|
75
|
-
- - ~>
|
67
|
+
- - "~>"
|
76
68
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.
|
69
|
+
version: 0.6.2
|
78
70
|
- !ruby/object:Gem::Dependency
|
79
71
|
name: rspec
|
80
72
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
73
|
requirements:
|
83
|
-
- - ~>
|
74
|
+
- - "~>"
|
84
75
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
76
|
+
version: '3.0'
|
86
77
|
type: :development
|
87
78
|
prerelease: false
|
88
79
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
80
|
requirements:
|
91
|
-
- - ~>
|
81
|
+
- - "~>"
|
92
82
|
- !ruby/object:Gem::Version
|
93
|
-
version: '
|
83
|
+
version: '3.0'
|
94
84
|
- !ruby/object:Gem::Dependency
|
95
85
|
name: simplecov
|
96
86
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
87
|
requirements:
|
99
|
-
- -
|
88
|
+
- - ">="
|
100
89
|
- !ruby/object:Gem::Version
|
101
90
|
version: '0'
|
102
91
|
type: :development
|
103
92
|
prerelease: false
|
104
93
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
94
|
requirements:
|
107
|
-
- -
|
95
|
+
- - ">="
|
108
96
|
- !ruby/object:Gem::Version
|
109
97
|
version: '0'
|
110
98
|
- !ruby/object:Gem::Dependency
|
111
99
|
name: rack-test
|
112
100
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
101
|
requirements:
|
115
|
-
- -
|
102
|
+
- - ">="
|
116
103
|
- !ruby/object:Gem::Version
|
117
104
|
version: '0'
|
118
105
|
type: :development
|
119
106
|
prerelease: false
|
120
107
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
108
|
requirements:
|
123
|
-
- -
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: libnotify
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- - ! '>='
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: '0'
|
134
|
-
type: :development
|
135
|
-
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
142
|
-
- !ruby/object:Gem::Dependency
|
143
|
-
name: ruby-debug19
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
|
-
requirements:
|
147
|
-
- - ! '>='
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: '0'
|
150
|
-
type: :development
|
151
|
-
prerelease: false
|
152
|
-
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - ! '>='
|
109
|
+
- - ">="
|
156
110
|
- !ruby/object:Gem::Version
|
157
111
|
version: '0'
|
158
112
|
description: A LDAP strategy for OmniAuth.
|
159
113
|
email:
|
160
114
|
- ping@intridea.com
|
115
|
+
- tmilewski@gmail.com
|
161
116
|
executables: []
|
162
117
|
extensions: []
|
163
118
|
extra_rdoc_files: []
|
164
119
|
files:
|
165
|
-
- .gitignore
|
166
|
-
- .rspec
|
120
|
+
- ".gitignore"
|
121
|
+
- ".rspec"
|
167
122
|
- Gemfile
|
168
123
|
- Guardfile
|
169
124
|
- README.md
|
@@ -179,27 +134,26 @@ files:
|
|
179
134
|
homepage: https://github.com/intridea/omniauth-ldap
|
180
135
|
licenses:
|
181
136
|
- MIT
|
137
|
+
metadata: {}
|
182
138
|
post_install_message:
|
183
139
|
rdoc_options: []
|
184
140
|
require_paths:
|
185
141
|
- lib
|
186
142
|
required_ruby_version: !ruby/object:Gem::Requirement
|
187
|
-
none: false
|
188
143
|
requirements:
|
189
|
-
- -
|
144
|
+
- - ">="
|
190
145
|
- !ruby/object:Gem::Version
|
191
146
|
version: '0'
|
192
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
148
|
requirements:
|
195
|
-
- -
|
149
|
+
- - ">="
|
196
150
|
- !ruby/object:Gem::Version
|
197
151
|
version: '0'
|
198
152
|
requirements: []
|
199
153
|
rubyforge_project:
|
200
|
-
rubygems_version:
|
154
|
+
rubygems_version: 2.6.11
|
201
155
|
signing_key:
|
202
|
-
specification_version:
|
156
|
+
specification_version: 4
|
203
157
|
summary: A LDAP strategy for OmniAuth.
|
204
158
|
test_files:
|
205
159
|
- spec/omniauth-ldap/adaptor_spec.rb
|