summaryrefslogtreecommitdiffstats
path: root/ldap_test.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--ldap_test.go125
1 files changed, 125 insertions, 0 deletions
diff --git a/ldap_test.go b/ldap_test.go
new file mode 100644
index 0000000..708dde6
--- /dev/null
+++ b/ldap_test.go
@@ -0,0 +1,125 @@
+package ldap
+
+import (
+ "fmt"
+ "testing"
+)
+
+var ldap_server string = "ldap.itd.umich.edu"
+var ldap_port uint16 = 389
+var base_dn string = "dc=umich,dc=edu"
+var filter []string = []string {
+ "(cn=cis-fac)",
+ "(&(objectclass=rfc822mailgroup)(cn=*Computer*))",
+ "(&(objectclass=rfc822mailgroup)(cn=*Mathematics*))" }
+var attributes []string = []string {
+ "cn",
+ "description" }
+
+func TestConnect( t *testing.T ) {
+ fmt.Printf( "TestConnect: starting...\n" )
+ l, err := Dial( "tcp", fmt.Sprintf( "%s:%d", ldap_server, ldap_port ) )
+ if err != nil {
+ t.Errorf( err.String() )
+ 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", ldap_server, ldap_port ) )
+ if err != nil {
+ t.Errorf( err.String() )
+ return
+ }
+ defer l.Close()
+
+ search_request := NewSearchRequest(
+ base_dn,
+ ScopeWholeSubtree, DerefAlways, 0, 0, false,
+ filter[0],
+ attributes,
+ nil )
+
+ sr, err := l.Search( search_request )
+ if err != nil {
+ t.Errorf( err.String() )
+ return
+ }
+
+ fmt.Printf( "TestSearch: %s -> num of entries = %d\n", search_request.Filter, len( sr.Entries ) )
+}
+
+func TestSearchWithPaging( t *testing.T ) {
+ fmt.Printf( "TestSearchWithPaging: starting...\n" )
+ l, err := Dial( "tcp", fmt.Sprintf( "%s:%d", ldap_server, ldap_port ) )
+ if err != nil {
+ t.Errorf( err.String() )
+ return
+ }
+ defer l.Close()
+
+ err = l.Bind( "", "" )
+ if err != nil {
+ t.Errorf( err.String() )
+ return
+ }
+
+ search_request := NewSearchRequest(
+ base_dn,
+ ScopeWholeSubtree, DerefAlways, 0, 0, false,
+ filter[1],
+ attributes,
+ nil )
+ sr, err := l.SearchWithPaging( search_request, 5 )
+ if err != nil {
+ t.Errorf( err.String() )
+ return
+ }
+
+ fmt.Printf( "TestSearchWithPaging: %s -> num of entries = %d\n", search_request.Filter, len( sr.Entries ) )
+}
+
+func testMultiGoroutineSearch( t *testing.T, l *Conn, results chan *SearchResult, i int ) {
+ search_request := NewSearchRequest(
+ base_dn,
+ ScopeWholeSubtree, DerefAlways, 0, 0, false,
+ filter[i],
+ attributes,
+ nil )
+ sr, err := l.Search( search_request )
+
+ if err != nil {
+ t.Errorf( err.String() )
+ results <- nil
+ return
+ }
+
+ results <- sr
+}
+
+func TestMultiGoroutineSearch( t *testing.T ) {
+ fmt.Printf( "TestMultiGoroutineSearch: starting...\n" )
+ l, err := Dial( "tcp", fmt.Sprintf( "%s:%d", ldap_server, ldap_port ) )
+ if err != nil {
+ t.Errorf( err.String() )
+ 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 ) )
+ }
+ }
+}