| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | package ldapimport (	"fmt"	"testing")var ldapServer = "ldap.itd.umich.edu"var ldapPort = uint16(389)var baseDN = "dc=umich,dc=edu"var filter = []string{	"(cn=cis-fac)",	"(&(objectclass=rfc822mailgroup)(cn=*Computer*))",	"(&(objectclass=rfc822mailgroup)(cn=*Mathematics*))"}var attributes = []string{	"cn",	"description"}func TestConnect(t *testing.T) {	fmt.Printf("TestConnect: starting...\n")	l, err := Dial("tcp", fmt.Sprintf("%s:%d", ldapServer, ldapPort))	if err != nil {		t.Errorf(err.Error())		return	}	defer l.Close()	fmt.Printf("TestConnect: finished...\n")}func TestSearch(t *testing.T) {	fmt.Printf("TestSearch: starting...\n")	l, err := Dial("tcp", fmt.Sprintf("%s:%d", ldapServer, ldapPort))	if err != nil {		t.Errorf(err.Error())		return	}	defer l.Close()	searchRequest := NewSearchRequest(		baseDN,		ScopeWholeSubtree, DerefAlways, 0, 0, false,		filter[0],		attributes,		nil)	sr, err := l.Search(searchRequest)	if err != nil {		t.Errorf(err.Error())		return	}	fmt.Printf("TestSearch: %s -> num of entries = %d\n", searchRequest.Filter, len(sr.Entries))}func TestSearchWithPaging(t *testing.T) {	fmt.Printf("TestSearchWithPaging: starting...\n")	l, err := Dial("tcp", fmt.Sprintf("%s:%d", ldapServer, ldapPort))	if err != nil {		t.Errorf(err.Error())		return	}	defer l.Close()	err = l.Bind("", "")	if err != nil {		t.Errorf(err.Error())		return	}	searchRequest := NewSearchRequest(		baseDN,		ScopeWholeSubtree, DerefAlways, 0, 0, false,		filter[1],		attributes,		nil)	sr, err := l.SearchWithPaging(searchRequest, 5)	if err != nil {		t.Errorf(err.Error())		return	}	fmt.Printf("TestSearchWithPaging: %s -> num of entries = %d\n", searchRequest.Filter, len(sr.Entries))}func testMultiGoroutineSearch(t *testing.T, l *Conn, results chan *SearchResult, i int) {	searchRequest := NewSearchRequest(		baseDN,		ScopeWholeSubtree, DerefAlways, 0, 0, false,		filter[i],		attributes,		nil)	sr, err := l.Search(searchRequest)	if err != nil {		t.Errorf(err.Error())		results <- nil		return	}	results <- sr}func TestMultiGoroutineSearch(t *testing.T) {	fmt.Printf("TestMultiGoroutineSearch: starting...\n")	l, err := Dial("tcp", fmt.Sprintf("%s:%d", ldapServer, ldapPort))	if err != nil {		t.Errorf(err.Error())		return	}	defer l.Close()	results := make([]chan *SearchResult, len(filter))	for i := range filter {		results[i] = make(chan *SearchResult)		go testMultiGoroutineSearch(t, l, results[i], i)	}	for i := range filter {		sr := <-results[i]		if sr == nil {			t.Errorf("Did not receive results from goroutine for %q", filter[i])		} else {			fmt.Printf("TestMultiGoroutineSearch(%d): %s -> num of entries = %d\n", i, filter[i], len(sr.Entries))		}	}}
 |