mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			124 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package ldap
 | 
						|
 | 
						|
import (
 | 
						|
	"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))
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |