github-ldap 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3542310f0a25d44a8fde3c868d6f7df9849797ba
4
- data.tar.gz: 98e8bebff1f17dd194d7d959343e6f6e553ba370
3
+ metadata.gz: f417737b5a49cba30ca466e8ef2a361894d4069a
4
+ data.tar.gz: fad20f08e322deb3b0a3303f4a5b9b2c0fce1469
5
5
  SHA512:
6
- metadata.gz: cc19ef4ef3c90ec0e2d7c380d9897c09037f141965627871ea726245a4dbdeaaeba2aa9b7ac562567917e47155d99590d062aeb9f889efba267bf89a468e7eec
7
- data.tar.gz: 568dffb94c106bbf4ea15ebd11cc02f4188f3236b320af1dec3ca9364442b02515fb1bc2aeff4c618bfb94b3903eb4ea71381784940de9e612af85cf53e8f8c3
6
+ metadata.gz: 7fed87fe08383e0a6a264e99396aa8a7e9ed22d85dd5bdba0f100f9b558c5ac548718d1e7825cc01022329a877f0471138bab7eca2679d5f6c602ba9fb7bba1b
7
+ data.tar.gz: ee4bf4726436769b4109d052b2d5071e1f1ef26029ee3ab5b29ee020d60dcfdfff867ef11a8b4f624ec271ac60f46f153007f6dbe8220825e1aff8f380327a42
data/github-ldap.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "github-ldap"
5
- spec.version = "1.3.2"
5
+ spec.version = "1.3.3"
6
6
  spec.authors = ["David Calavera"]
7
7
  spec.email = ["david.calavera@gmail.com"]
8
8
  spec.description = %q{Ldap authentication for humans}
data/lib/github/ldap.rb CHANGED
@@ -112,7 +112,7 @@ module GitHub
112
112
  def load_group(group_entry)
113
113
  if @virtual_attributes.enabled?
114
114
  VirtualGroup.new(self, group_entry)
115
- elsif PosixGroup.valid?(group_entry)
115
+ elsif posix_support_enabled? && PosixGroup.valid?(group_entry)
116
116
  PosixGroup.new(self, group_entry)
117
117
  else
118
118
  Group.new(self, group_entry)
@@ -72,9 +72,12 @@ module GitHub
72
72
  # Internal - Check if an object class includes the member names
73
73
  # Use `&` rathen than `include?` because both are arrays.
74
74
  #
75
+ # NOTE: object classes are downcased by default in Net::LDAP, so this
76
+ # will fail to match correctly unless we also downcase our group classes.
77
+ #
75
78
  # Returns true if the object class includes one of the group class names.
76
79
  def group?(object_class)
77
- !(GROUP_CLASS_NAMES & object_class).empty?
80
+ !(GROUP_CLASS_NAMES.map(&:downcase) & object_class.map(&:downcase)).empty?
78
81
  end
79
82
 
80
83
  # Internal - Generate a hash with all the group DNs for caching purposes.
data/test/domain_test.rb CHANGED
@@ -158,6 +158,13 @@ class GitHubLdapDomainNestedGroupsTest < GitHub::Ldap::Test
158
158
  assert @domain.is_member?(user, %w(enterprise-ops)),
159
159
  "Expected `enterprise-ops` to include the member `#{user.dn}`"
160
160
  end
161
+
162
+ def test_membership_in_deeply_nested_subgroups
163
+ assert user = @ldap.domain('uid=user1.1.1.1,ou=users,dc=github,dc=com').bind
164
+
165
+ assert @domain.is_member?(user, %w(group1)),
166
+ "Expected `group1` to include the member `#{user.dn}` via deep recursion"
167
+ end
161
168
  end
162
169
 
163
170
  class GitHubLdapPosixGroupsWithRecursionFallbackTest < GitHub::Ldap::Test
@@ -43,6 +43,29 @@ objectClass: groupOfNames
43
43
  member: uid=calavera,ou=users,dc=github,dc=com
44
44
  member: uid=rubiojr,ou=users,dc=github,dc=com
45
45
 
46
+ dn: cn=group1,ou=groups,dc=github,dc=com
47
+ cn: group1
48
+ objectClass: groupOfNames
49
+ member: uid=user1,ou=users,dc=github,dc=com
50
+ member: cn=group1.1,ou=groups,dc=github,dc=com
51
+
52
+ dn: cn=group1.1,ou=groups,dc=github,dc=com
53
+ cn: group1
54
+ objectClass: groupOfNames
55
+ member: uid=user1.1,ou=users,dc=github,dc=com
56
+ member: cn=group1.1.1,ou=groups,dc=github,dc=com
57
+
58
+ dn: cn=group1.1.1,ou=groups,dc=github,dc=com
59
+ cn: group1
60
+ objectClass: groupOfNames
61
+ member: uid=user1.1.1,ou=users,dc=github,dc=com
62
+ member: cn=group1.1.1.1,ou=groups,dc=github,dc=com
63
+
64
+ dn: cn=group1.1.1.1,ou=groups,dc=github,dc=com
65
+ cn: group1
66
+ objectClass: groupOfNames
67
+ member: uid=user1.1.1.1,ou=users,dc=github,dc=com
68
+
46
69
  # Users
47
70
 
48
71
  dn: ou=users,dc=github,dc=com
@@ -89,3 +112,35 @@ uid: mtodd
89
112
  userPassword: passworD1
90
113
  mail: mtodd@github.com
91
114
  objectClass: inetOrgPerson
115
+
116
+ dn: uid=user1,ou=users,dc=github,dc=com
117
+ uid: user1
118
+ sn: user1
119
+ cn: user1
120
+ userPassword: passworD1
121
+ mail: user1@github.com
122
+ objectClass: inetOrgPerson
123
+
124
+ dn: uid=user1.1,ou=users,dc=github,dc=com
125
+ uid: user1.1
126
+ sn: user1.1
127
+ cn: user1.1
128
+ userPassword: passworD1
129
+ mail: user1.1@github.com
130
+ objectClass: inetOrgPerson
131
+
132
+ dn: uid=user1.1.1,ou=users,dc=github,dc=com
133
+ uid: user1.1.1
134
+ sn: user1.1.1
135
+ cn: user1.1.1
136
+ userPassword: passworD1
137
+ mail: user1.1.1@github.com
138
+ objectClass: inetOrgPerson
139
+
140
+ dn: uid=user1.1.1.1,ou=users,dc=github,dc=com
141
+ uid: user1.1.1.1
142
+ sn: user1.1.1.1
143
+ cn: user1.1.1.1
144
+ userPassword: passworD1
145
+ mail: user1.1.1.1@github.com
146
+ objectClass: inetOrgPerson
data/test/group_test.rb CHANGED
@@ -14,6 +14,12 @@ class GitHubLdapGroupTest < GitHub::Ldap::Test
14
14
  @group = @ldap.group("cn=enterprise,ou=groups,dc=github,dc=com")
15
15
  end
16
16
 
17
+ def test_group?
18
+ object_classes = %w(groupOfNames)
19
+ assert @group.group?(object_classes)
20
+ assert @group.group?(object_classes.map(&:downcase))
21
+ end
22
+
17
23
  def test_subgroups
18
24
  assert_equal 3, @group.subgroups.size
19
25
  end
@@ -24,7 +30,7 @@ class GitHubLdapGroupTest < GitHub::Ldap::Test
24
30
 
25
31
  def test_all_domain_groups
26
32
  groups = groups_domain.all_groups
27
- assert_equal 4, groups.size
33
+ assert_equal 8, groups.size
28
34
  end
29
35
 
30
36
  def test_filter_domain_groups
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-ldap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Calavera
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-20 00:00:00.000000000 Z
11
+ date: 2014-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ldap