test/domain_test.rb in github-ldap-1.0.16 vs test/domain_test.rb in github-ldap-1.1.0

- old
+ new

@@ -1,10 +1,11 @@ require 'test_helper' module GitHubLdapDomainTestCases def setup - @domain = GitHub::Ldap.new(options).domain("dc=github,dc=com") + @ldap = GitHub::Ldap.new(options) + @domain = @ldap.domain("dc=github,dc=com") end def test_user_valid_login user = @domain.valid_login?('calavera', 'passworD1') assert_equal 'uid=calavera,dc=github,dc=com', user.dn @@ -25,26 +26,26 @@ end def test_user_in_group user = @domain.valid_login?('calavera', 'passworD1') - assert @domain.is_member?(user.dn, %w(Enterprise People)), + assert @domain.is_member?(user, %w(Enterprise People)), "Expected `Enterprise` or `Poeple` to include the member `#{user.dn}`" end def test_user_not_in_different_group user = @domain.valid_login?('calavera', 'passworD1') - assert !@domain.is_member?(user.dn, %w(People)), + assert !@domain.is_member?(user, %w(People)), "Expected `Poeple` not to include the member `#{user.dn}`" end def test_user_without_group user = @domain.valid_login?('ldaptest', 'secret') - assert !@domain.is_member?(user.dn, %w(People)), - "Expected `Poeple` not to include the member `#{user.dn}`" + assert !@domain.is_member?(user, %w(People)), + "Expected `People` not to include the member `#{user.dn}`" end def test_authenticate_doesnt_return_invalid_users user = @domain.authenticate!('calavera', 'passworD1') assert_equal 'uid=calavera,dc=github,dc=com', user.dn @@ -65,21 +66,35 @@ assert !@domain.authenticate!('calavera', 'passworD1', %w(People)), "Expected `authenticate!` to not return an user" end def test_membership_empty_for_non_members - assert @domain.membership('uid=calavera,dc=github,dc=com', %w(People)).empty?, + user = @ldap.domain('uid=calavera,dc=github,dc=com').bind + + assert @domain.membership(user, %w(People)).empty?, "Expected `calavera` not to be a member of `People`." end def test_membership_groups_for_members - groups = @domain.membership('uid=calavera,dc=github,dc=com', %w(Enterprise People)) + user = @ldap.domain('uid=calavera,dc=github,dc=com').bind + groups = @domain.membership(user, %w(Enterprise People)) assert_equal 1, groups.size assert_equal 'cn=Enterprise,ou=Group,dc=github,dc=com', groups.first.dn end + def test_membership_with_virtual_attributes + ldap = GitHub::Ldap.new(options.merge(virtual_attributes: true)) + user = @ldap.domain('uid=calavera,dc=github,dc=com').bind + user[:memberof] = 'cn=Enterprise,ou=Group,dc=github,dc=com' + + groups = @domain.membership(user, %w(Enterprise People)) + + assert_equal 1, groups.size + assert_equal 'cn=Enterprise,ou=Group,dc=github,dc=com', groups.first.dn + end + def test_search assert 1, @domain.search( attributes: %w(uid), filter: Net::LDAP::Filter.eq('uid', 'calavera')).size end @@ -122,6 +137,24 @@ include GitHubLdapDomainTestCases end class GitHubLdapDomainUnauthenticatedTest < GitHub::Ldap::UnauthenticatedTest include GitHubLdapDomainTestCases +end + +class GitHubLdapDomainNestedGroupsTest < GitHub::Ldap::Test + def self.test_server_options + {user_fixtures: FIXTURES.join('github-with-subgroups.ldif').to_s} + end + + def setup + @ldap = GitHub::Ldap.new(options) + @domain = @ldap.domain("dc=github,dc=com") + end + + def test_membership_in_subgroups + user = @ldap.domain('uid=rubiojr,ou=users,dc=github,dc=com').bind + + assert @domain.is_member?(user, %w(enterprise-ops)), + "Expected `enterprise-ops` to include the member `#{user.dn}`" + end end