diff --git a/.autotest b/.autotest new file mode 100644 index 0000000..1236395 --- /dev/null +++ b/.autotest @@ -0,0 +1,3 @@ +require 'rubygems' + +# vim: syntax=ruby diff --git a/.gitignore b/.gitignore index 993ac60..a323762 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -.rspec spec/ldap.yml .rvmrc *.gemspec diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..7438fbe --- /dev/null +++ b/.rspec @@ -0,0 +1,2 @@ +--colour +--format documentation diff --git a/autotest/discover.rb b/autotest/discover.rb new file mode 100644 index 0000000..cd6892c --- /dev/null +++ b/autotest/discover.rb @@ -0,0 +1 @@ +Autotest.add_discovery { "rspec2" } diff --git a/test/test_rename.rb b/test/test_rename.rb index 344bc5b..db82340 100644 --- a/test/test_rename.rb +++ b/test/test_rename.rb @@ -1,76 +1,77 @@ require 'common' +# Commented out since it assumes you have a live LDAP server somewhere. This +# will be migrated to the integration specs, as soon as they are ready. +=begin class TestRename < Test::Unit::TestCase - # Commented out since it assumes you have a live LDAP server somewhere. This - # will be migrated to the integration specs, as soon as they are ready. - - # HOST= '10.10.10.71' - # PORT = 389 - # BASE = "o=test" - # AUTH = { :method => :simple, :username => "cn=testadmin,#{BASE}", :password => 'password' } - # BASIC_USER = "cn=jsmith,ou=sales,#{BASE}" - # RENAMED_USER = "cn=jbrown,ou=sales,#{BASE}" - # MOVED_USER = "cn=jsmith,ou=marketing,#{BASE}" - # RENAMED_MOVED_USER = "cn=jjones,ou=marketing,#{BASE}" - # - # def setup - # # create the entries we're going to manipulate - # Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap| - # if ldap.add(:dn => "ou=sales,#{BASE}", :attributes => { :ou => "sales", :objectclass => "organizationalUnit" }) - # puts "Add failed: #{ldap.get_operation_result.message} - code: #{ldap.get_operation_result.code}" - # end - # ldap.add(:dn => "ou=marketing,#{BASE}", :attributes => { :ou => "marketing", :objectclass => "organizationalUnit" }) - # ldap.add(:dn => BASIC_USER, :attributes => { :cn => "jsmith", :objectclass => "inetOrgPerson", :sn => "Smith" }) - # end - # end - # - # def test_rename_entry - # dn = nil - # Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap| - # ldap.rename(:olddn => BASIC_USER, :newrdn => "cn=jbrown") - # - # ldap.search(:base => RENAMED_USER) do |entry| - # dn = entry.dn - # end - # end - # assert_equal(RENAMED_USER, dn) - # end - # - # def test_move_entry - # dn = nil - # Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap| - # ldap.rename(:olddn => BASIC_USER, :newrdn => "cn=jsmith", :new_superior => "ou=marketing,#{BASE}") - # - # ldap.search(:base => MOVED_USER) do |entry| - # dn = entry.dn - # end - # end - # assert_equal(MOVED_USER, dn) - # end - # - # def test_move_and_rename_entry - # dn = nil - # Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap| - # ldap.rename(:olddn => BASIC_USER, :newrdn => "cn=jjones", :new_superior => "ou=marketing,#{BASE}") - # - # ldap.search(:base => RENAMED_MOVED_USER) do |entry| - # dn = entry.dn - # end - # end - # assert_equal(RENAMED_MOVED_USER, dn) - # end - # - # def teardown - # # delete the entries - # # note: this doesn't always completely clear up on eDirectory as objects get locked while - # # the rename/move is being completed on the server and this prevents the delete from happening - # Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap| - # ldap.delete(:dn => BASIC_USER) - # ldap.delete(:dn => RENAMED_USER) - # ldap.delete(:dn => MOVED_USER) - # ldap.delete(:dn => RENAMED_MOVED_USER) - # ldap.delete(:dn => "ou=sales,#{BASE}") - # ldap.delete(:dn => "ou=marketing,#{BASE}") - # end - # end + HOST= '10.10.10.71' + PORT = 389 + BASE = "o=test" + AUTH = { :method => :simple, :username => "cn=testadmin,#{BASE}", :password => 'password' } + BASIC_USER = "cn=jsmith,ou=sales,#{BASE}" + RENAMED_USER = "cn=jbrown,ou=sales,#{BASE}" + MOVED_USER = "cn=jsmith,ou=marketing,#{BASE}" + RENAMED_MOVED_USER = "cn=jjones,ou=marketing,#{BASE}" + + def setup + # create the entries we're going to manipulate + Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap| + if ldap.add(:dn => "ou=sales,#{BASE}", :attributes => { :ou => "sales", :objectclass => "organizationalUnit" }) + puts "Add failed: #{ldap.get_operation_result.message} - code: #{ldap.get_operation_result.code}" + end + ldap.add(:dn => "ou=marketing,#{BASE}", :attributes => { :ou => "marketing", :objectclass => "organizationalUnit" }) + ldap.add(:dn => BASIC_USER, :attributes => { :cn => "jsmith", :objectclass => "inetOrgPerson", :sn => "Smith" }) + end + end + + def test_rename_entry + dn = nil + Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap| + ldap.rename(:olddn => BASIC_USER, :newrdn => "cn=jbrown") + + ldap.search(:base => RENAMED_USER) do |entry| + dn = entry.dn + end + end + assert_equal(RENAMED_USER, dn) + end + + def test_move_entry + dn = nil + Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap| + ldap.rename(:olddn => BASIC_USER, :newrdn => "cn=jsmith", :new_superior => "ou=marketing,#{BASE}") + + ldap.search(:base => MOVED_USER) do |entry| + dn = entry.dn + end + end + assert_equal(MOVED_USER, dn) + end + + def test_move_and_rename_entry + dn = nil + Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap| + ldap.rename(:olddn => BASIC_USER, :newrdn => "cn=jjones", :new_superior => "ou=marketing,#{BASE}") + + ldap.search(:base => RENAMED_MOVED_USER) do |entry| + dn = entry.dn + end + end + assert_equal(RENAMED_MOVED_USER, dn) + end + + def teardown + # delete the entries + # note: this doesn't always completely clear up on eDirectory as objects get locked while + # the rename/move is being completed on the server and this prevents the delete from happening + Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap| + ldap.delete(:dn => BASIC_USER) + ldap.delete(:dn => RENAMED_USER) + ldap.delete(:dn => MOVED_USER) + ldap.delete(:dn => RENAMED_MOVED_USER) + ldap.delete(:dn => "ou=sales,#{BASE}") + ldap.delete(:dn => "ou=marketing,#{BASE}") + end + end end +=end