ldap_fluff 0.4.4 → 0.6.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.
data/test/config_test.rb CHANGED
@@ -4,27 +4,27 @@ class ConfigTest < MiniTest::Test
4
4
  include LdapTestHelper
5
5
 
6
6
  def test_unsupported_type
7
- assert_raises(LdapFluff::Config::ConfigError) { LdapFluff.new(config_hash.update :server_type => 'inactive_directory') }
7
+ assert_raises(LdapFluff::Config::ConfigError) { LdapFluff.new(config_hash.update(:server_type => 'inactive_directory')) }
8
8
  end
9
9
 
10
10
  def test_load_posix
11
- ldap = LdapFluff.new(config_hash.update :server_type => 'posix')
11
+ ldap = LdapFluff.new(config_hash.update(:server_type => 'posix'))
12
12
  assert_instance_of LdapFluff::Posix, ldap.ldap
13
13
  end
14
14
 
15
15
  def test_load_ad
16
- ldap = LdapFluff.new(config_hash.update :server_type => 'active_directory')
16
+ ldap = LdapFluff.new(config_hash.update(:server_type => 'active_directory'))
17
17
  assert_instance_of LdapFluff::ActiveDirectory, ldap.ldap
18
18
  end
19
19
 
20
20
  def test_load_free_ipa
21
- ldap = LdapFluff.new(config_hash.update :server_type => 'free_ipa')
21
+ ldap = LdapFluff.new(config_hash.update(:server_type => 'free_ipa'))
22
22
  assert_instance_of LdapFluff::FreeIPA, ldap.ldap
23
23
  end
24
24
 
25
25
  def test_instrumentation_service
26
26
  is = Object.new
27
- net_ldap = LdapFluff.new(config_hash.update :instrumentation_service => is).ldap.ldap
27
+ net_ldap = LdapFluff.new(config_hash.update(:instrumentation_service => is)).ldap.ldap
28
28
  assert_equal is, net_ldap.send(:instrumentation_service)
29
29
  end
30
30
  end
@@ -19,7 +19,7 @@ class TestIPAMemberService < MiniTest::Test
19
19
  def test_find_user
20
20
  basic_user
21
21
  @ipams.ldap = @ldap
22
- assert_equal(%w(group bros), @ipams.find_user_groups("john"))
22
+ assert_equal(%w[group bros], @ipams.find_user_groups("john"))
23
23
  @ldap.verify
24
24
  end
25
25
 
@@ -35,7 +35,7 @@ class TestIPAMemberService < MiniTest::Test
35
35
  def test_no_groups
36
36
  entry = Net::LDAP::Entry.new
37
37
  entry['memberof'] = []
38
- @ldap.expect(:search, [ Net::LDAP::Entry.new, entry ], [:filter => ipa_name_filter("john")])
38
+ @ldap.expect(:search, [Net::LDAP::Entry.new, entry], [:filter => ipa_name_filter("john")])
39
39
  @ipams.ldap = @ldap
40
40
  assert_equal([], @ipams.find_user_groups('john'))
41
41
  @ldap.verify
@@ -68,5 +68,4 @@ class TestIPAMemberService < MiniTest::Test
68
68
  @ipams.find_group('broze')
69
69
  end
70
70
  end
71
-
72
71
  end
@@ -0,0 +1,67 @@
1
+ require 'lib/ldap_test_helper'
2
+
3
+ class TestIPANetgroupMemberService < MiniTest::Test
4
+ include LdapTestHelper
5
+
6
+ def setup
7
+ netgroups_config
8
+ super
9
+ @ipams = LdapFluff::FreeIPA::NetgroupMemberService.new(@ldap, netgroups_config)
10
+ end
11
+
12
+ def basic_user
13
+ @ldap.expect(:search, ipa_user_payload, [:filter => ipa_name_filter("john")])
14
+ end
15
+
16
+ def basic_group
17
+ @ldap.expect(:search, ipa_netgroup_payload('broze'), [:filter => ipa_group_filter("broze"), :base => @config.group_base])
18
+ end
19
+
20
+ def test_find_user
21
+ basic_user
22
+ @ipams.ldap = @ldap
23
+ assert_equal ipa_user_payload, @ipams.find_user('john')
24
+ @ldap.verify
25
+ end
26
+
27
+ def test_find_missing_user
28
+ @ldap.expect(:search, nil, [:filter => ipa_name_filter("john")])
29
+ @ipams.ldap = @ldap
30
+ assert_raises(LdapFluff::FreeIPA::MemberService::UIDNotFoundException) do
31
+ @ipams.find_user('john')
32
+ end
33
+ end
34
+
35
+ def test_find_user_groups
36
+ response = ipa_netgroup_payload('bros', ['(,john,)', '(,joe,)'])
37
+ @ldap.expect(:search, response, [:filter => Net::LDAP::Filter.eq('objectClass', 'nisNetgroup'),
38
+ :base => @config.group_base])
39
+
40
+ @ipams.ldap = @ldap
41
+ assert_equal(['bros'], @ipams.find_user_groups('john'))
42
+ @ldap.verify
43
+ end
44
+
45
+ def test_find_no_user_groups
46
+ response = ipa_netgroup_payload('bros', ['(,joe,)'])
47
+ @ldap.expect(:search, response, [:filter => Net::LDAP::Filter.eq('objectClass', 'nisNetgroup'),
48
+ :base => @config.group_base])
49
+ @ipams.ldap = @ldap
50
+ assert_equal([], @ipams.find_user_groups('john'))
51
+ @ldap.verify
52
+ end
53
+
54
+ def test_find_group
55
+ basic_group
56
+ @ipams.ldap = @ldap
57
+ assert_equal(ipa_netgroup_payload('broze'), @ipams.find_group('broze'))
58
+ end
59
+
60
+ def test_find_missing_group
61
+ @ldap.expect(:search, nil, [:filter => ipa_group_filter("broze"), :base => @config.group_base])
62
+ @ipams.ldap = @ldap
63
+ assert_raises(LdapFluff::FreeIPA::MemberService::GIDNotFoundException) do
64
+ @ipams.find_group('broze')
65
+ end
66
+ end
67
+ end
data/test/ipa_test.rb CHANGED
@@ -19,7 +19,7 @@ class TestIPA < MiniTest::Test
19
19
  @md = MiniTest::Mock.new
20
20
  user_result = MiniTest::Mock.new
21
21
  user_result.expect(:dn, ipa_user_bind('internet'))
22
- @md.expect(:find_user, [user_result], %w(internet))
22
+ @md.expect(:find_user, [user_result], %w[internet])
23
23
  @ipa.member_service = @md
24
24
  service_bind
25
25
  @ldap.expect(:auth, nil, [ipa_user_bind('internet'), "password"])
@@ -48,14 +48,14 @@ class TestIPA < MiniTest::Test
48
48
  def test_groups
49
49
  service_bind
50
50
  basic_user
51
- assert_equal(@ipa.groups_for_uid('john'), %w(bros))
51
+ assert_equal(@ipa.groups_for_uid('john'), %w[bros])
52
52
  end
53
53
 
54
54
  def test_bad_user
55
55
  service_bind
56
56
  @md = MiniTest::Mock.new
57
- @md.expect(:find_user_groups, nil, %w(john))
58
- def @md.find_user_groups(*args)
57
+ @md.expect(:find_user_groups, nil, %w[john])
58
+ def @md.find_user_groups(*_args)
59
59
  raise LdapFluff::FreeIPA::MemberService::UIDNotFoundException
60
60
  end
61
61
  @ipa.member_service = @md
@@ -74,36 +74,42 @@ class TestIPA < MiniTest::Test
74
74
  def test_is_in_groups
75
75
  service_bind
76
76
  basic_user
77
- assert_equal(@ipa.is_in_groups("john", %w(bros), false), true)
77
+ assert_equal(@ipa.is_in_groups("john", %w[bros], false), true)
78
78
  end
79
79
 
80
80
  def test_is_some_groups
81
81
  service_bind
82
82
  basic_user
83
- assert_equal(@ipa.is_in_groups("john", %w(bros buds), false), true)
83
+ assert_equal(@ipa.is_in_groups("john", %w[bros buds], false), true)
84
+ end
85
+
86
+ def test_is_in_all_groupss
87
+ service_bind
88
+ bigtime_user
89
+ assert_equal(true, @ipa.is_in_groups("john", %w[broskies bros], true))
84
90
  end
85
91
 
86
92
  def test_isnt_in_all_groups
87
93
  service_bind
88
94
  basic_user
89
- assert_equal(@ipa.is_in_groups("john", %w(bros buds), true), false)
95
+ assert_equal(@ipa.is_in_groups("john", %w[bros buds], true), false)
90
96
  end
91
97
 
92
98
  def test_isnt_in_groups
93
99
  service_bind
94
100
  basic_user
95
- assert_equal(@ipa.is_in_groups("john", %w(broskies), false), false)
101
+ assert_equal(@ipa.is_in_groups("john", %w[broskies], false), false)
96
102
  end
97
103
 
98
104
  def test_group_subset
99
105
  service_bind
100
106
  bigtime_user
101
- assert_equal(@ipa.is_in_groups('john', %w(broskies), true), true)
107
+ assert_equal(@ipa.is_in_groups('john', %w[broskies], true), true)
102
108
  end
103
109
 
104
110
  def test_user_exists
105
111
  @md = MiniTest::Mock.new
106
- @md.expect(:find_user, 'notnilluser', %w(john))
112
+ @md.expect(:find_user, 'notnilluser', %w[john])
107
113
  @ipa.member_service = @md
108
114
  service_bind
109
115
  assert(@ipa.user_exists?('john'))
@@ -111,8 +117,8 @@ class TestIPA < MiniTest::Test
111
117
 
112
118
  def test_missing_user
113
119
  @md = MiniTest::Mock.new
114
- @md.expect(:find_user, nil, %w(john))
115
- def @md.find_user(uid)
120
+ @md.expect(:find_user, nil, %w[john])
121
+ def @md.find_user(_uid)
116
122
  raise LdapFluff::FreeIPA::MemberService::UIDNotFoundException
117
123
  end
118
124
  @ipa.member_service = @md
@@ -122,7 +128,7 @@ class TestIPA < MiniTest::Test
122
128
 
123
129
  def test_group_exists
124
130
  @md = MiniTest::Mock.new
125
- @md.expect(:find_group, 'notnillgroup', %w(broskies))
131
+ @md.expect(:find_group, 'notnillgroup', %w[broskies])
126
132
  @ipa.member_service = @md
127
133
  service_bind
128
134
  assert(@ipa.group_exists?('broskies'))
@@ -130,8 +136,8 @@ class TestIPA < MiniTest::Test
130
136
 
131
137
  def test_missing_group
132
138
  @md = MiniTest::Mock.new
133
- @md.expect(:find_group, nil, %w(broskies))
134
- def @md.find_group(uid)
139
+ @md.expect(:find_group, nil, %w[broskies])
140
+ def @md.find_group(_uid)
135
141
  raise LdapFluff::FreeIPA::MemberService::GIDNotFoundException
136
142
  end
137
143
  @ipa.member_service = @md
@@ -156,6 +162,4 @@ class TestIPA < MiniTest::Test
156
162
  assert_equal @ipa.users_for_gid('foremaners'), ['testuser']
157
163
  md.verify
158
164
  end
159
-
160
165
  end
161
-
data/test/ldap_test.rb CHANGED
@@ -9,42 +9,42 @@ class TestLDAP < MiniTest::Test
9
9
  end
10
10
 
11
11
  def test_bind
12
- @ldap.expect(:bind?, true, %w(john password))
12
+ @ldap.expect(:bind?, true, %w[john password])
13
13
  @fluff.ldap = @ldap
14
14
  assert_equal(@fluff.authenticate?("john", "password"), true)
15
15
  @ldap.verify
16
16
  end
17
17
 
18
18
  def test_groups
19
- @ldap.expect(:groups_for_uid, %w(bros), %w(john))
19
+ @ldap.expect(:groups_for_uid, %w[bros], %w[john])
20
20
  @fluff.ldap = @ldap
21
- assert_equal(@fluff.group_list('john'), %w(bros))
21
+ assert_equal(@fluff.group_list('john'), %w[bros])
22
22
  @ldap.verify
23
23
  end
24
24
 
25
25
  def test_group_membership
26
- @ldap.expect(:is_in_groups, false, ['john', %w(broskies girlfriends), true])
26
+ @ldap.expect(:is_in_groups, false, ['john', %w[broskies girlfriends], true])
27
27
  @fluff.ldap = @ldap
28
- assert_equal(@fluff.is_in_groups?('john', %w(broskies girlfriends)), false)
28
+ assert_equal(@fluff.is_in_groups?('john', %w[broskies girlfriends]), false)
29
29
  @ldap.verify
30
30
  end
31
31
 
32
32
  def test_valid_user
33
- @ldap.expect(:user_exists?, true, %w(john))
33
+ @ldap.expect(:user_exists?, true, %w[john])
34
34
  @fluff.ldap = @ldap
35
35
  assert(@fluff.valid_user?('john'))
36
36
  @ldap.verify
37
37
  end
38
38
 
39
39
  def test_valid_group
40
- @ldap.expect(:group_exists?, true, %w(broskies))
40
+ @ldap.expect(:group_exists?, true, %w[broskies])
41
41
  @fluff.ldap = @ldap
42
42
  assert(@fluff.valid_group?('broskies'))
43
43
  @ldap.verify
44
44
  end
45
45
 
46
46
  def test_invalid_group
47
- @ldap.expect(:group_exists?, false, %w(broskerinos))
47
+ @ldap.expect(:group_exists?, false, %w[broskerinos])
48
48
  @fluff.ldap = @ldap
49
49
  refute(@fluff.valid_group?('broskerinos'))
50
50
  @ldap.verify
@@ -56,7 +56,4 @@ class TestLDAP < MiniTest::Test
56
56
  refute(@fluff.valid_user?('johnny rotten'))
57
57
  @ldap.verify
58
58
  end
59
-
60
59
  end
61
-
62
-
@@ -7,17 +7,16 @@ module LdapTestHelper
7
7
  attr_accessor :group_base, :class_filter, :user
8
8
 
9
9
  def config_hash
10
- { :host => "internet.com",
11
- :port => "387",
12
- :encryption => :start_tls,
13
- :base_dn => "dc=internet,dc=com",
14
- :group_base => "ou=group,dc=internet,dc=com",
15
- :service_user => "service",
16
- :service_pass => "pass",
17
- :server_type => :free_ipa,
18
- :attr_login => nil,
19
- :search_filter => nil
20
- }
10
+ { :host => "internet.com",
11
+ :port => "387",
12
+ :encryption => :start_tls,
13
+ :base_dn => "dc=internet,dc=com",
14
+ :group_base => "ou=group,dc=internet,dc=com",
15
+ :service_user => "service",
16
+ :service_pass => "pass",
17
+ :server_type => :free_ipa,
18
+ :attr_login => nil,
19
+ :search_filter => nil }
21
20
  end
22
21
 
23
22
  def setup
@@ -29,6 +28,10 @@ module LdapTestHelper
29
28
  @config ||= LdapFluff::Config.new config_hash
30
29
  end
31
30
 
31
+ def netgroups_config
32
+ @config ||= LdapFluff::Config.new config_hash.merge(:use_netgroups => true)
33
+ end
34
+
32
35
  def service_bind
33
36
  @ldap.expect(:bind, true)
34
37
  get_test_instance_variable.ldap = @ldap
@@ -36,13 +39,13 @@ module LdapTestHelper
36
39
 
37
40
  def basic_user
38
41
  @md = MiniTest::Mock.new
39
- @md.expect(:find_user_groups, %w(bros), %w(john))
42
+ @md.expect(:find_user_groups, %w[bros], %w[john])
40
43
  get_test_instance_variable.member_service = @md
41
44
  end
42
45
 
43
46
  def bigtime_user
44
47
  @md = MiniTest::Mock.new
45
- @md.expect(:find_user_groups, %w(bros broskies), %w(john))
48
+ @md.expect(:find_user_groups, %w[bros broskies], %w[john])
46
49
  get_test_instance_variable.member_service = @md
47
50
  end
48
51
 
@@ -78,11 +81,15 @@ module LdapTestHelper
78
81
  "CN=#{name},CN=Users,#{@config.base_dn}"
79
82
  end
80
83
 
81
- def ad_group_dn(name='group')
84
+ def ad_group_dn(name = 'group')
82
85
  "cn=#{name},#{@config.group_base}"
83
86
  end
84
87
 
85
- def ad_user_payload
88
+ def ad_user_payload(name = nil)
89
+ unless name.nil?
90
+ return [{ :memberof => [ad_group_dn], :distinguishedname => [ad_user_dn(name)] }]
91
+ end
92
+
86
93
  [{ :memberof => [ad_group_dn] }]
87
94
  end
88
95
 
@@ -99,20 +106,24 @@ module LdapTestHelper
99
106
  end
100
107
 
101
108
  def posix_user_payload
102
- [{ :cn => ["bros"] }]
109
+ [{ :cn => ["john"] }]
103
110
  end
104
111
 
105
112
  def posix_group_payload
106
113
  [{ :cn => ["broze"] }]
107
114
  end
108
115
 
116
+ def posix_netgroup_payload(cn, netgroups = [])
117
+ [{ :cn => [cn], :nisnetgrouptriple => netgroups }]
118
+ end
119
+
109
120
  def ipa_user_payload
110
121
  @ipa_user_payload_cache ||= begin
111
122
  entry_1 = Net::LDAP::Entry.new
112
123
  entry_1['cn'] = 'John'
113
124
  entry_2 = Net::LDAP::Entry.new
114
125
  entry_2['memberof'] = ['cn=group,dc=internet,dc=com', 'cn=bros,dc=internet,dc=com']
115
- [ entry_1, entry_2 ]
126
+ [entry_1, entry_2]
116
127
  end
117
128
  end
118
129
 
@@ -120,6 +131,10 @@ module LdapTestHelper
120
131
  [{ :cn => 'group' }, { :memberof => ['cn=group,dc=internet,dc=com', 'cn=bros,dc=internet,dc=com'] }]
121
132
  end
122
133
 
134
+ def ipa_netgroup_payload(cn, netgroups = [])
135
+ [{ :cn => [cn], :nisnetgrouptriple => netgroups }]
136
+ end
137
+
123
138
  private
124
139
 
125
140
  def get_test_instance_variable
@@ -11,24 +11,33 @@ class TestPosixMemberService < MiniTest::Test
11
11
  def test_find_user
12
12
  user = posix_user_payload
13
13
  @ldap.expect(:search, user, [:filter => @ms.name_filter('john'),
14
- :base => config.base_dn])
14
+ :base => config.base_dn])
15
15
  @ms.ldap = @ldap
16
16
  assert_equal posix_user_payload, @ms.find_user('john')
17
17
  @ldap.verify
18
18
  end
19
19
 
20
20
  def test_find_user_groups
21
- user = posix_user_payload
22
- @ldap.expect(:search, user, [:filter => @ms.name_filter('john')])
21
+ user = posix_group_payload
22
+ @ldap.expect(:search, user, [:filter => @ms.name_filter('john'),
23
+ :base => config.group_base])
24
+ @ms.ldap = @ldap
25
+ assert_equal ['broze'], @ms.find_user_groups('john')
26
+ @ldap.verify
27
+ end
28
+
29
+ def test_find_no_groups
30
+ @ldap.expect(:search, [], [:filter => @ms.name_filter("john"),
31
+ :base => config.group_base])
23
32
  @ms.ldap = @ldap
24
- assert_equal ['bros'], @ms.find_user_groups('john')
33
+ assert_equal [], @ms.find_user_groups('john')
25
34
  @ldap.verify
26
35
  end
27
36
 
28
37
  def test_user_exists
29
38
  user = posix_user_payload
30
39
  @ldap.expect(:search, user, [:filter => @ms.name_filter('john'),
31
- :base => config.base_dn])
40
+ :base => config.base_dn])
32
41
  @ms.ldap = @ldap
33
42
  assert @ms.find_user('john')
34
43
  @ldap.verify
@@ -36,7 +45,7 @@ class TestPosixMemberService < MiniTest::Test
36
45
 
37
46
  def test_user_doesnt_exists
38
47
  @ldap.expect(:search, nil, [:filter => @ms.name_filter('john'),
39
- :base => config.base_dn])
48
+ :base => config.base_dn])
40
49
  @ms.ldap = @ldap
41
50
  assert_raises(LdapFluff::Posix::MemberService::UIDNotFoundException) { @ms.find_user('john') }
42
51
  @ldap.verify
@@ -45,7 +54,7 @@ class TestPosixMemberService < MiniTest::Test
45
54
  def test_group_exists
46
55
  group = posix_group_payload
47
56
  @ldap.expect(:search, group, [:filter => @ms.group_filter('broze'),
48
- :base => config.group_base])
57
+ :base => config.group_base])
49
58
  @ms.ldap = @ldap
50
59
  assert @ms.find_group('broze')
51
60
  @ldap.verify
@@ -53,7 +62,7 @@ class TestPosixMemberService < MiniTest::Test
53
62
 
54
63
  def test_group_doesnt_exists
55
64
  @ldap.expect(:search, nil, [:filter => @ms.group_filter('broze'),
56
- :base => config.group_base])
65
+ :base => config.group_base])
57
66
  @ms.ldap = @ldap
58
67
  assert_raises(LdapFluff::Posix::MemberService::GIDNotFoundException) { @ms.find_group('broze') }
59
68
  @ldap.verify