require_relative 'test_helper' class GitHubLdapGroupTest < GitHub::Ldap::Test def groups_domain @ldap.domain("ou=Groups,dc=github,dc=com") end def setup @ldap = GitHub::Ldap.new(options) @group = @ldap.group("cn=ghe-users,ou=Groups,dc=github,dc=com") end def test_group? assert @group.group?(%w(group)) assert @group.group?(%w(groupOfUniqueNames)) assert @group.group?(%w(posixGroup)) object_classes = %w(groupOfNames) assert @group.group?(object_classes) assert @group.group?(object_classes.map(&:downcase)) end def test_subgroups group = @ldap.group("cn=deeply-nested-group0.0,ou=Groups,dc=github,dc=com") assert_equal 2, group.subgroups.size end def test_members_from_subgroups group = @ldap.group("cn=deeply-nested-group0.0,ou=Groups,dc=github,dc=com") assert_equal 10, group.members.size end def test_all_domain_groups groups = groups_domain.all_groups assert_equal 27, groups.size end def test_filter_domain_groups groups = groups_domain.filter_groups('ghe-users') assert_equal 1, groups.size end def test_filter_domain_groups_limited groups = [] groups_domain.filter_groups('deeply-nested-group', size: 1) do |entry| groups << entry end assert_equal 1, groups.size end def test_filter_domain_groups_unlimited groups = groups_domain.filter_groups('deeply-nested-group') assert_equal 5, groups.size end def test_unknown_group refute @ldap.group("cn=foobar,ou=groups,dc=github,dc=com"), "Expected to not bind any group" end end class GitHubLdapLoopedGroupTest < GitHub::Ldap::Test def setup @group = GitHub::Ldap.new(options).group("cn=recursively-nested-groups,ou=Groups,dc=github,dc=com") end def test_members_from_subgroups assert_equal 10, @group.members.size end end class GitHubLdapMissingEntriesTest < GitHub::Ldap::Test def setup @ldap = GitHub::Ldap.new(options) end def test_load_right_members assert_equal 3, @ldap.domain("cn=missing-users,ou=groups,dc=github,dc=com").bind[:member].size end def test_ignore_missing_member_entries assert_equal 2, @ldap.group("cn=missing-users,ou=groups,dc=github,dc=com").members.size end end