Chris@909: # $Id: testldif.rb 61 2006-04-18 20:55:55Z blackhedd $ Chris@909: # Chris@909: # Chris@909: Chris@909: Chris@909: $:.unshift "lib" Chris@909: Chris@909: require 'test/unit' Chris@909: Chris@909: require 'net/ldap' Chris@909: require 'net/ldif' Chris@909: Chris@909: require 'sha1' Chris@909: require 'base64' Chris@909: Chris@909: class TestLdif < Test::Unit::TestCase Chris@909: Chris@909: TestLdifFilename = "tests/testdata.ldif" Chris@909: Chris@909: def test_empty_ldif Chris@909: ds = Net::LDAP::Dataset::read_ldif( StringIO.new ) Chris@909: assert_equal( true, ds.empty? ) Chris@909: end Chris@909: Chris@909: def test_ldif_with_comments Chris@909: str = ["# Hello from LDIF-land", "# This is an unterminated comment"] Chris@909: io = StringIO.new( str[0] + "\r\n" + str[1] ) Chris@909: ds = Net::LDAP::Dataset::read_ldif( io ) Chris@909: assert_equal( str, ds.comments ) Chris@909: end Chris@909: Chris@909: def test_ldif_with_password Chris@909: psw = "goldbricks" Chris@909: hashed_psw = "{SHA}" + Base64::encode64( SHA1.new(psw).digest ).chomp Chris@909: Chris@909: ldif_encoded = Base64::encode64( hashed_psw ).chomp Chris@909: ds = Net::LDAP::Dataset::read_ldif( StringIO.new( "dn: Goldbrick\r\nuserPassword:: #{ldif_encoded}\r\n\r\n" )) Chris@909: recovered_psw = ds["Goldbrick"][:userpassword].shift Chris@909: assert_equal( hashed_psw, recovered_psw ) Chris@909: end Chris@909: Chris@909: def test_ldif_with_continuation_lines Chris@909: ds = Net::LDAP::Dataset::read_ldif( StringIO.new( "dn: abcdefg\r\n hijklmn\r\n\r\n" )) Chris@909: assert_equal( true, ds.has_key?( "abcdefg hijklmn" )) Chris@909: end Chris@909: Chris@909: # TODO, INADEQUATE. We need some more tests Chris@909: # to verify the content. Chris@909: def test_ldif Chris@909: File.open( TestLdifFilename, "r" ) {|f| Chris@909: ds = Net::LDAP::Dataset::read_ldif( f ) Chris@909: assert_equal( 13, ds.length ) Chris@909: } Chris@909: end Chris@909: Chris@909: # TODO, need some tests. Chris@909: # Must test folded lines and base64-encoded lines as well as normal ones. Chris@909: def test_to_ldif Chris@909: File.open( TestLdifFilename, "r" ) {|f| Chris@909: ds = Net::LDAP::Dataset::read_ldif( f ) Chris@909: ds.to_ldif Chris@909: assert_equal( true, false ) # REMOVE WHEN WE HAVE SOME TESTS HERE. Chris@909: } Chris@909: end Chris@909: Chris@909: Chris@909: end Chris@909: Chris@909: