You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.6 KiB
60 lines
2.6 KiB
require File.dirname(__FILE__) + '/test_helper'
|
|
require 'ldap/server/trie'
|
|
|
|
class TestTrie < Test::Unit::TestCase
|
|
|
|
def test_trie_base
|
|
trie = LDAP::Server::Trie.new do |trie|
|
|
trie.insert 'ou=Users,dc=mydomain,dc=com,op=bind', 'UsersBindTree'
|
|
trie.insert 'ou=Users,dc=mydomain,dc=com,op=search', 'UsersSearchTree'
|
|
trie.insert 'ou=Groups,dc=mydomain,dc=com,op=search', 'GroupsSearchTree'
|
|
trie.insert 'dc=mydomain,dc=com,op=search', 'RootSearchValue'
|
|
trie.insert 'dc=com,op=search', ''
|
|
end
|
|
|
|
assert_equal trie.lookup('ou=Users,dc=mydomain,dc=com,op=bind'), 'UsersBindTree'
|
|
assert_equal trie.lookup('ou=Users,dc=mydomain,dc=com,op=search'), 'UsersSearchTree'
|
|
assert_equal trie.lookup('ou=Groups,dc=mydomain,dc=com,op=search'), 'GroupsSearchTree'
|
|
assert_equal trie.lookup('dc=mydomain,dc=com,op=search'), 'RootSearchValue'
|
|
assert_equal trie.lookup('dc=com,op=search'), ''
|
|
assert_nil trie.lookup 'dc=mydomain,dc=com,op=bind'
|
|
assert_nil trie.lookup nil
|
|
|
|
assert_raises LDAP::Server::Trie::NodeNotFoundError do
|
|
trie.lookup 'ou=DoesNotExist,dc=mydomain,dc=com,op=search'
|
|
end
|
|
end
|
|
|
|
def test_trie_wildcard
|
|
trie = LDAP::Server::Trie.new do |trie|
|
|
trie.insert 'uid=:uid,ou=Users,dc=mydomain,dc=com', 'SpecificUsers'
|
|
trie.insert 'ou=Users,dc=mydomain,dc=com', 'Users'
|
|
trie.insert 'ou=Users,dc=:domain,dc=:tld', 'Domain'
|
|
end
|
|
|
|
assert_equal trie.lookup('uid=john,ou=Users,dc=mydomain,dc=com'), 'SpecificUsers'
|
|
assert_equal trie.lookup('uid=jane,ou=Users,dc=mydomain,dc=com'), 'SpecificUsers'
|
|
assert_equal trie.lookup('ou=Users,dc=mydomain,dc=com'), 'Users'
|
|
assert_equal trie.lookup('ou=Users,dc=otherdomain,dc=net'), 'Domain'
|
|
end
|
|
|
|
def test_trie_match
|
|
trie = LDAP::Server::Trie.new do |trie|
|
|
trie.insert 'uid=:uid,ou=Users,dc=mydomain,dc=com', 'SpecificUsers'
|
|
trie.insert 'ou=Users,dc=mydomain,dc=com', 'Users'
|
|
trie.insert 'dc=mydomain,dc=com', 'Domains'
|
|
end
|
|
|
|
assert_equal trie.match('uid=john,ou=Users,dc=mydomain,dc=com'),
|
|
['uid=:uid,ou=Users,dc=mydomain,dc=com', 'SpecificUsers']
|
|
assert_equal trie.match('cn=john,ou=Users,dc=mydomain,dc=com'),
|
|
['ou=Users,dc=mydomain,dc=com', 'Users']
|
|
assert_equal trie.match('ou=Users,dc=mydomain,dc=com'),
|
|
['ou=Users,dc=mydomain,dc=com', 'Users']
|
|
assert_equal trie.match('dc=mydomain,dc=com'),
|
|
['dc=mydomain,dc=com', 'Domains']
|
|
assert_equal trie.match('dc=otherdomain,dc=com'),
|
|
[nil, nil]
|
|
end
|
|
|
|
end
|