casino-ldap_authenticator 2.0.0.pre.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.1
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # casino-ldap_authenticator [![Build Status](https://travis-ci.org/rbCAS/casino-ldap_authenticator.png?branch=master)](https://travis-ci.org/rbCAS/casino-ldap_authenticator)
1
+ # casino-ldap_authenticator [![Build Status](https://travis-ci.org/rbCAS/casino-ldap_authenticator.png?branch=master)](https://travis-ci.org/rbCAS/casino-ldap_authenticator) [![Coverage Status](https://coveralls.io/repos/rbCAS/casino-ldap_authenticator/badge.png)](https://coveralls.io/r/rbCAS/casino-ldap_authenticator)
2
2
 
3
3
  Provides mechanism to use LDAP as an authenticator for [CASino](https://github.com/rbCAS/CASino).
4
4
 
@@ -20,7 +20,8 @@ Gem::Specification.new do |s|
20
20
  s.add_development_dependency 'rake', '~> 10.0'
21
21
  s.add_development_dependency 'rspec', '~> 2.12'
22
22
  s.add_development_dependency 'simplecov', '~> 0.7'
23
+ s.add_development_dependency 'coveralls'
23
24
 
24
25
  s.add_runtime_dependency 'net-ldap', '~> 0.3'
25
- s.add_runtime_dependency 'casino', '~> 3.0.0.pre.1'
26
+ s.add_runtime_dependency 'casino', '~> 3.0.0'
26
27
  end
@@ -42,8 +42,11 @@ class CASino::LDAPAuthenticator
42
42
  @ldap.auth(@options[:admin_user], @options[:admin_password])
43
43
  end
44
44
  @user_plain = @ldap.bind_as(:base => @options[:base], :size => 1, :password => @password, :filter => user_filter)
45
- if @user_plain.is_a?(Array)
46
- @user_plain = @user_plain.first
45
+ if @user_plain != false
46
+ @user_plain = @ldap.search(:base => @options[:base], :filter => user_filter, :attributes => @options[:extra_attributes].values)
47
+ if @user_plain.is_a?(Array)
48
+ @user_plain = @user_plain.first
49
+ end
47
50
  end
48
51
  end
49
52
 
@@ -1,5 +1,5 @@
1
1
  module CASino
2
2
  class LDAPAuthenticator
3
- VERSION = '2.0.0.pre.1'
3
+ VERSION = '2.0.0'
4
4
  end
5
5
  end
@@ -8,7 +8,7 @@ describe CASino::LDAPAuthenticator do
8
8
  :base => 'dc=users,dc=example.com',
9
9
  :encryption => 'simple_tls',
10
10
  :username_attribute => 'uid',
11
- :extra_attributes => { :email => 'mail', :fullname => :displayname }
11
+ :extra_attributes => { :email => 'mail', :fullname => :displayname, :memberof => 'memberof'}
12
12
  } }
13
13
  let(:subject) { described_class.new(options) }
14
14
  let(:connection) { Object.new }
@@ -24,9 +24,11 @@ describe CASino::LDAPAuthenticator do
24
24
  let(:username) { 'test' }
25
25
  let(:password) { 'foo' }
26
26
  let(:user_filter) { Net::LDAP::Filter.eq(options[:username_attribute], username) }
27
+ let(:extra_attributes) { ['mail', :displayname, 'memberof'] }
27
28
 
28
29
  before(:each) do
29
30
  connection.stub(:bind_as)
31
+ connection.stub(:search)
30
32
  end
31
33
 
32
34
  it 'does the connection setup' do
@@ -41,7 +43,12 @@ describe CASino::LDAPAuthenticator do
41
43
  subject.validate(username, password)
42
44
  end
43
45
 
44
- context 'when validation succeeds' do
46
+ it 'calls the #search method on the LDAP connection' do
47
+ connection.should_receive(:search).with(:base => options[:base], :filter => user_filter, :attributes => extra_attributes)
48
+ subject.validate(username, password)
49
+ end
50
+
51
+ context 'when validation succeeds for user with missing data' do
45
52
  let(:fullname) { 'Example User' }
46
53
  let(:email) { "#{username}@example.org" }
47
54
  let(:ldap_entry) {
@@ -55,6 +62,41 @@ describe CASino::LDAPAuthenticator do
55
62
  connection.stub(:bind_as) do
56
63
  ldap_entry
57
64
  end
65
+ connection.stub(:search) do
66
+ ldap_entry
67
+ end
68
+ end
69
+
70
+ it 'returns the user data with blank value for missing data' do
71
+ subject.validate(username, password).should == {
72
+ username: username,
73
+ extra_attributes: {
74
+ :email => email,
75
+ :fullname => fullname,
76
+ :memberof => ''
77
+ }
78
+ }
79
+ end
80
+ end
81
+
82
+ context 'when validation succeeds for user with complete data' do
83
+ let(:fullname) { 'Example User' }
84
+ let(:email) { "#{username}@example.org" }
85
+ let(:membership) { "cn=group1" }
86
+ let(:ldap_entry) {
87
+ entry = Net::LDAP::Entry.new
88
+ {:uid => username, :displayname => fullname, :mail => email, :memberof => membership}.each do |key, value|
89
+ entry[key] = [value]
90
+ end
91
+ entry
92
+ }
93
+ before(:each) do
94
+ connection.stub(:bind_as) do
95
+ ldap_entry
96
+ end
97
+ connection.stub(:search) do
98
+ ldap_entry
99
+ end
58
100
  end
59
101
 
60
102
  it 'returns the user data' do
@@ -62,7 +104,8 @@ describe CASino::LDAPAuthenticator do
62
104
  username: username,
63
105
  extra_attributes: {
64
106
  :email => email,
65
- :fullname => fullname
107
+ :fullname => fullname,
108
+ :memberof => membership
66
109
  }
67
110
  }
68
111
  end
data/spec/spec_helper.rb CHANGED
@@ -2,6 +2,8 @@ require 'rubygems'
2
2
  require 'bundler/setup'
3
3
 
4
4
  require 'simplecov'
5
+ require 'coveralls'
6
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
5
7
  SimpleCov.start do
6
8
  add_filter '/spec'
7
9
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: casino-ldap_authenticator
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre.1
5
- prerelease: 6
4
+ version: 2.0.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Nils Caspar
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-30 00:00:00.000000000 Z
12
+ date: 2014-07-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0.7'
62
+ - !ruby/object:Gem::Dependency
63
+ name: coveralls
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
62
78
  - !ruby/object:Gem::Dependency
63
79
  name: net-ldap
64
80
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +98,7 @@ dependencies:
82
98
  requirements:
83
99
  - - ~>
84
100
  - !ruby/object:Gem::Version
85
- version: 3.0.0.pre.1
101
+ version: 3.0.0
86
102
  type: :runtime
87
103
  prerelease: false
88
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +106,7 @@ dependencies:
90
106
  requirements:
91
107
  - - ~>
92
108
  - !ruby/object:Gem::Version
93
- version: 3.0.0.pre.1
109
+ version: 3.0.0
94
110
  description: This gem can be used to allow the CASino backend to authenticate against
95
111
  an LDAP server.
96
112
  email:
@@ -104,6 +120,7 @@ files:
104
120
  - .rspec
105
121
  - .ruby-gemset
106
122
  - .ruby-version
123
+ - .travis.yml
107
124
  - Gemfile
108
125
  - LICENSE.txt
109
126
  - README.md
@@ -130,9 +147,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
147
  required_rubygems_version: !ruby/object:Gem::Requirement
131
148
  none: false
132
149
  requirements:
133
- - - ! '>'
150
+ - - ! '>='
134
151
  - !ruby/object:Gem::Version
135
- version: 1.3.1
152
+ version: '0'
136
153
  requirements: []
137
154
  rubyforge_project:
138
155
  rubygems_version: 1.8.23