ldap_fluff 0.4.2 → 0.4.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 70fb2df0843767e279fa3f4e21b5d55957eebe3c
4
- data.tar.gz: a726ad37d1dbdf745463a53ea2bf1b72e2b3f292
3
+ metadata.gz: e3d33acdb243099b2ee9f857a8b04fdfa3b5c1aa
4
+ data.tar.gz: 54b60edbfbbdbdd5ec4ee00bd9a3ffc597b5545c
5
5
  SHA512:
6
- metadata.gz: 3cd6ecad871dbaeca2ecb140443a8a6e5e2cca0247c8234d4f3c2b2089cbe907e7cb39d1b1d47280533aa9f7169428406d63790c9624760921a398b9476b1cb0
7
- data.tar.gz: d2aca6c899fd9096c2611bb21e6b361e3d9af7fca4fd78d6627b5870f7035f13d4f22dccbe06b8f6b749c0c3ce6f2d38e981d9b3dc36d7ac39b4280e83fc233c
6
+ metadata.gz: b136a75e77332a2126113ad0a25ff64a78491442a1d8a62a60277d0f87c7a08b8df82a470f98580c6770005f3e6f3aed2948df85f41a9e8eadc43b749fd301c6
7
+ data.tar.gz: e504f2754e5f10b209a2c1df890c9aa2158a681dd5f6cb31556d73047f392ab3cafc372415323fbcb154a341bf330647c37ccb1afb1ea538dc632f657c7059e7
@@ -19,25 +19,28 @@ class LdapFluff::ActiveDirectory::MemberService < LdapFluff::GenericMemberServic
19
19
  def _groups_from_ldap_data(payload)
20
20
  data = []
21
21
  if !payload.nil?
22
- first_level = payload[:memberof]
23
- total_groups = _walk_group_ancestry(first_level)
24
- data = (get_groups(first_level + total_groups)).uniq
22
+ first_level = payload[:memberof]
23
+ total_groups, _ = _walk_group_ancestry(first_level, first_level)
24
+ data = (get_groups(first_level + total_groups)).uniq
25
25
  end
26
26
  data
27
27
  end
28
28
 
29
29
  # recursively loop over the parent list
30
- def _walk_group_ancestry(group_dns = [])
30
+ def _walk_group_ancestry(group_dns = [], known_groups = [])
31
31
  set = []
32
32
  group_dns.each do |group_dn|
33
33
  search = @ldap.search(:base => group_dn, :scope => Net::LDAP::SearchScope_BaseObject, :attributes => ['memberof'])
34
34
  if !search.nil? && !search.first.nil?
35
- group = search.first
36
- set += _walk_group_ancestry(group[:memberof])
37
- set += group[:memberof]
35
+ groups = search.first[:memberof] - known_groups
36
+ known_groups += groups
37
+ next_level, new_known_groups = _walk_group_ancestry(groups, known_groups)
38
+ set += next_level
39
+ set += groups
40
+ known_groups += next_level
38
41
  end
39
42
  end
40
- set
43
+ [set, known_groups]
41
44
  end
42
45
 
43
46
  def class_filter
@@ -47,6 +47,16 @@ class TestADMemberService < MiniTest::Test
47
47
  @ldap.verify
48
48
  end
49
49
 
50
+ def test_nested_groups
51
+ basic_user
52
+ # basic user is memberof 'group'... and 'group' is memberof 'bros1'
53
+ # now make 'bros1' be memberof 'group' again
54
+ @ldap.expect(:search, ad_user_payload, [:base => ad_group_dn('bros1'), :scope => 0, :attributes => ['memberof']])
55
+ @adms.ldap = @ldap
56
+ assert_equal(%w(group bros1), @adms.find_user_groups("john"))
57
+ @ldap.verify
58
+ end
59
+
50
60
  def test_missing_user
51
61
  @ldap.expect(:search, nil, [:filter => ad_name_filter("john")])
52
62
  @adms.ldap = @ldap
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ldap_fluff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan O'Mara
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2016-05-04 00:00:00.000000000 Z
16
+ date: 2016-06-20 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: net-ldap