omniauth-ldap 1.0.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module LDAP
3
- VERSION = "1.0.5"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
@@ -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.0'
13
- gem.add_runtime_dependency 'net-ldap', '~> 0.12'
14
- gem.add_runtime_dependency 'pyu-ruby-sasl', '~> 0.0.3.2'#0.0.3.1 has been yanked
15
- gem.add_runtime_dependency 'rubyntlm', '~> 0.3.4'
16
- gem.add_development_dependency 'rspec', '~> 2.7'
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
- lambda { OmniAuth::LDAP::Adaptor.new({host: "192.168.1.145", method: 'plain'})}.should raise_error(ArgumentError)
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
- lambda { OmniAuth::LDAP::Adaptor.new({host: "192.168.1.145", method: 'myplain', uid: 'uid', port: 389, base: 'dc=com'})}.should raise_error(OmniAuth::LDAP::Adaptor::ConfigurationError)
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.should_not == nil
17
- adaptor.connection.host.should == '192.168.1.145'
18
- adaptor.connection.port.should == 389
19
- adaptor.connection.base.should == 'dc=intridea, dc=com'
20
- adaptor.connection.instance_variable_get('@auth').should == {:method => :anonymous, :username => nil, :password => nil}
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.should_not == nil
26
- adaptor.connection.host.should == '192.168.1.145'
27
- adaptor.connection.port.should == 389
28
- adaptor.connection.base.should == 'dc=intridea, dc=com'
29
- adaptor.connection.instance_variable_get('@auth').should == {:method => :simple, :username => 'bind_dn', :password => 'password'}
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.should_not == nil
35
- adaptor.connection.host.should == '192.168.1.145'
36
- adaptor.connection.port.should == 389
37
- adaptor.connection.base.should == 'dc=intridea, dc=com'
38
- adaptor.connection.instance_variable_get('@auth')[:method].should == :sasl
39
- adaptor.connection.instance_variable_get('@auth')[:mechanism].should == 'DIGEST-MD5'
40
- adaptor.connection.instance_variable_get('@auth')[:initial_credential].should == ''
41
- adaptor.connection.instance_variable_get('@auth')[:challenge_response].should_not be_nil
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.should_not == nil
47
- adaptor.connection.host.should == '192.168.1.145'
48
- adaptor.connection.port.should == 389
49
- adaptor.connection.base.should == 'dc=intridea, dc=com'
50
- adaptor.connection.instance_variable_get('@auth')[:method].should == :sasl
51
- adaptor.connection.instance_variable_get('@auth')[:mechanism].should == 'GSS-SPNEGO'
52
- adaptor.connection.instance_variable_get('@auth')[:initial_credential].should =~ /^NTLMSSP/
53
- adaptor.connection.instance_variable_get('@auth')[:challenge_response].should_not be_nil
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').should include method: :start_tls
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.should_receive(:open).and_yield(adaptor.connection)
69
- adaptor.connection.should_receive(:search).with(args).and_return([rs])
70
- adaptor.connection.should_receive(:bind).with({:username => 'new dn', :password => args[:password], :method => :simple}).and_return(true)
71
- adaptor.bind_as(args).should == rs
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.should_receive(:open).and_yield(adaptor.connection)
77
- adaptor.connection.should_receive(:search).with(args).and_return([rs])
78
- adaptor.connection.should_receive(:bind).and_return(true)
79
- adaptor.bind_as(args).should == rs
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').should == '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.should == 200
35
- last_response.body.should be_include("<form")
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.should be_include("action='/auth/ldap/callback'")
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.should == 2
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.should > 1
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
- @adaptor.stub(:filter)
54
- OmniAuth::LDAP::Adaptor.stub(:new).and_return(@adaptor)
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.stub(:bind_as).and_return(false)
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.should be_redirect
67
- last_response.headers['Location'].should =~ %r{missing_credentials}
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', {:username => ""})
75
+ post('/auth/ldap/callback', { username: "" })
74
76
 
75
- last_response.should be_redirect
76
- last_response.headers['Location'].should =~ %r{missing_credentials}
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', {:username => "ping"})
85
+ post('/auth/ldap/callback', { username: "ping" })
84
86
 
85
- last_response.should be_redirect
86
- last_response.headers['Location'].should =~ %r{missing_credentials}
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', {:username => "ping", :password => ""})
94
+ post('/auth/ldap/callback', { username: "ping", password: "" })
93
95
 
94
- last_response.should be_redirect
95
- last_response.headers['Location'].should =~ %r{missing_credentials}
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', {:username => 'ping', :password => 'password'})
105
+ post('/auth/ldap/callback', { username: 'ping', password: 'password' })
104
106
 
105
- last_response.should be_redirect
106
- last_response.headers['Location'].should =~ %r{invalid_credentials}
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.stub(:filter).and_return('uid=%{username}')
111
- Net::LDAP::Filter.should_receive(:construct).with('uid=ping')
112
- post('/auth/ldap/callback', {:username => 'ping', :password => 'password'})
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.should be_redirect
115
- last_response.headers['Location'].should =~ %r{invalid_credentials}
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.stub(:bind_as).and_throw(Exception.new('connection_error'))
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', {:username => "ping", :password => "password"})
129
+ post('/auth/ldap/callback', { username: "ping", password: "password" })
128
130
 
129
- last_response.should be_redirect
130
- last_response.headers['Location'].should =~ %r{ldap_error}
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.stub(:filter)
141
- @adaptor.stub(:bind_as).and_return(Net::LDAP::Entry.from_single_ldif_string(
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.should_not be_redirect
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.stub(:filter).and_return('uid=%{username}')
170
- Net::LDAP::Filter.should_receive(:construct).with('uid=ping')
171
- post('/auth/ldap/callback', {:username => 'ping', :password => 'password'})
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.should_not be_redirect
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', {:username => 'ping', :password => 'password'})
179
- auth_hash.uid.should == 'cn=ping, dc=intridea, dc=com'
180
- auth_hash.info.email.should == 'ping@intridea.com'
181
- auth_hash.info.first_name.should == 'Ping'
182
- auth_hash.info.last_name.should == 'Yu'
183
- auth_hash.info.phone.should == '555-555-5555'
184
- auth_hash.info.mobile.should == '444-444-4444'
185
- auth_hash.info.nickname.should == 'ping'
186
- auth_hash.info.title.should == 'dev'
187
- auth_hash.info.location.should == 'k street, Washington, DC, U.S.A 20001'
188
- auth_hash.info.url.should == 'www.intridea.com'
189
- auth_hash.info.image.should == 'http://www.intridea.com/ping.jpg'
190
- auth_hash.info.description.should == 'omniauth-ldap'
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: 1.0.5
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: 2016-02-17 00:00:00.000000000 Z
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: '1.0'
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: '1.0'
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.12'
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.12'
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.2
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.2
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.3.4
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.3.4
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: '2.7'
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: '2.7'
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: 1.8.23
154
+ rubygems_version: 2.6.11
201
155
  signing_key:
202
- specification_version: 3
156
+ specification_version: 4
203
157
  summary: A LDAP strategy for OmniAuth.
204
158
  test_files:
205
159
  - spec/omniauth-ldap/adaptor_spec.rb