diff --git a/conn.go b/conn.go index 3643064f..8b8c41e7 100644 --- a/conn.go +++ b/conn.go @@ -145,7 +145,7 @@ func (dc *DialContext) dial(u *url.URL) (net.Conn, error) { host, port, err := net.SplitHostPort(u.Host) if err != nil { - // we asume that error is due to missing port + // we assume that error is due to missing port host = u.Host port = "" } diff --git a/conn_test.go b/conn_test.go index f815a967..3771a29d 100644 --- a/conn_test.go +++ b/conn_test.go @@ -12,7 +12,7 @@ import ( "testing" "time" - "github.com/go-asn1-ber/asn1-ber" + ber "github.com/go-asn1-ber/asn1-ber" ) func TestUnresponsiveConnection(t *testing.T) { diff --git a/control.go b/control.go index 463fe3a3..0fff409e 100644 --- a/control.go +++ b/control.go @@ -4,7 +4,7 @@ import ( "fmt" "strconv" - "github.com/go-asn1-ber/asn1-ber" + ber "github.com/go-asn1-ber/asn1-ber" ) const ( diff --git a/dn_test.go b/dn_test.go index 511c8343..ee181310 100644 --- a/dn_test.go +++ b/dn_test.go @@ -7,44 +7,44 @@ import ( func TestSuccessfulDNParsing(t *testing.T) { testcases := map[string]DN{ - "": DN{[]*RelativeDN{}}, - "cn=Jim\\2C \\22Hasse Hö\\22 Hansson!,dc=dummy,dc=com": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"cn", "Jim, \"Hasse Hö\" Hansson!"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"dc", "dummy"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"dc", "com"}}}}}, - "UID=jsmith,DC=example,DC=net": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"UID", "jsmith"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"DC", "example"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"DC", "net"}}}}}, - "OU=Sales+CN=J. Smith,DC=example,DC=net": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{ - &AttributeTypeAndValue{"OU", "Sales"}, - &AttributeTypeAndValue{"CN", "J. Smith"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"DC", "example"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"DC", "net"}}}}}, - "1.3.6.1.4.1.1466.0=#04024869": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"1.3.6.1.4.1.1466.0", "Hi"}}}}}, - "1.3.6.1.4.1.1466.0=#04024869,DC=net": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"1.3.6.1.4.1.1466.0", "Hi"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"DC", "net"}}}}}, - "CN=Lu\\C4\\8Di\\C4\\87": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"CN", "Lučić"}}}}}, - " CN = Lu\\C4\\8Di\\C4\\87 ": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"CN", "Lučić"}}}}}, - ` A = 1 , B = 2 `: DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"A", "1"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"B", "2"}}}}}, - ` A = 1 + B = 2 `: DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{ - &AttributeTypeAndValue{"A", "1"}, - &AttributeTypeAndValue{"B", "2"}}}}}, - ` \ \ A\ \ = \ \ 1\ \ , \ \ B\ \ = \ \ 2\ \ `: DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{" A ", " 1 "}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{" B ", " 2 "}}}}}, - ` \ \ A\ \ = \ \ 1\ \ + \ \ B\ \ = \ \ 2\ \ `: DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{ - &AttributeTypeAndValue{" A ", " 1 "}, - &AttributeTypeAndValue{" B ", " 2 "}}}}}, + "": {[]*RelativeDN{}}, + "cn=Jim\\2C \\22Hasse Hö\\22 Hansson!,dc=dummy,dc=com": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"cn", "Jim, \"Hasse Hö\" Hansson!"}}}, + {[]*AttributeTypeAndValue{{"dc", "dummy"}}}, + {[]*AttributeTypeAndValue{{"dc", "com"}}}}}, + "UID=jsmith,DC=example,DC=net": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"UID", "jsmith"}}}, + {[]*AttributeTypeAndValue{{"DC", "example"}}}, + {[]*AttributeTypeAndValue{{"DC", "net"}}}}}, + "OU=Sales+CN=J. Smith,DC=example,DC=net": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{ + {"OU", "Sales"}, + {"CN", "J. Smith"}}}, + {[]*AttributeTypeAndValue{{"DC", "example"}}}, + {[]*AttributeTypeAndValue{{"DC", "net"}}}}}, + "1.3.6.1.4.1.1466.0=#04024869": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"1.3.6.1.4.1.1466.0", "Hi"}}}}}, + "1.3.6.1.4.1.1466.0=#04024869,DC=net": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"1.3.6.1.4.1.1466.0", "Hi"}}}, + {[]*AttributeTypeAndValue{{"DC", "net"}}}}}, + "CN=Lu\\C4\\8Di\\C4\\87": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"CN", "Lučić"}}}}}, + " CN = Lu\\C4\\8Di\\C4\\87 ": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"CN", "Lučić"}}}}}, + ` A = 1 , B = 2 `: {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"A", "1"}}}, + {[]*AttributeTypeAndValue{{"B", "2"}}}}}, + ` A = 1 + B = 2 `: {[]*RelativeDN{ + {[]*AttributeTypeAndValue{ + {"A", "1"}, + {"B", "2"}}}}}, + ` \ \ A\ \ = \ \ 1\ \ , \ \ B\ \ = \ \ 2\ \ `: {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{" A ", " 1 "}}}, + {[]*AttributeTypeAndValue{{" B ", " 2 "}}}}}, + ` \ \ A\ \ = \ \ 1\ \ + \ \ B\ \ = \ \ 2\ \ `: {[]*RelativeDN{ + {[]*AttributeTypeAndValue{ + {" A ", " 1 "}, + {" B ", " 2 "}}}}}, } for test, answer := range testcases { diff --git a/error_test.go b/error_test.go index c547e454..fe7a155d 100644 --- a/error_test.go +++ b/error_test.go @@ -7,7 +7,7 @@ import ( "testing" "time" - "github.com/go-asn1-ber/asn1-ber" + ber "github.com/go-asn1-ber/asn1-ber" ) // TestNilPacket tests that nil packets don't cause a panic. diff --git a/filter_test.go b/filter_test.go index add50792..f67d6c74 100644 --- a/filter_test.go +++ b/filter_test.go @@ -16,168 +16,168 @@ type compileTest struct { } var testFilters = []compileTest{ - compileTest{ + { filterStr: "(&(sn=Miller)(givenName=Bob))", expectedFilter: "(&(sn=Miller)(givenName=Bob))", expectedType: FilterAnd, }, - compileTest{ + { filterStr: "(|(sn=Miller)(givenName=Bob))", expectedFilter: "(|(sn=Miller)(givenName=Bob))", expectedType: FilterOr, }, - compileTest{ + { filterStr: "(!(sn=Miller))", expectedFilter: "(!(sn=Miller))", expectedType: FilterNot, }, - compileTest{ + { filterStr: "(sn=Miller)", expectedFilter: "(sn=Miller)", expectedType: FilterEqualityMatch, }, - compileTest{ + { filterStr: "(sn=Mill*)", expectedFilter: "(sn=Mill*)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=*Mill)", expectedFilter: "(sn=*Mill)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=*Mill*)", expectedFilter: "(sn=*Mill*)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=*i*le*)", expectedFilter: "(sn=*i*le*)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=Mi*l*r)", expectedFilter: "(sn=Mi*l*r)", expectedType: FilterSubstrings, }, // substring filters escape properly - compileTest{ + { filterStr: `(sn=Mi*함*r)`, expectedFilter: `(sn=Mi*\ed\95\a8*r)`, expectedType: FilterSubstrings, }, // already escaped substring filters don't get double-escaped - compileTest{ + { filterStr: `(sn=Mi*\ed\95\a8*r)`, expectedFilter: `(sn=Mi*\ed\95\a8*r)`, expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=Mi*le*)", expectedFilter: "(sn=Mi*le*)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=*i*ler)", expectedFilter: "(sn=*i*ler)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn>=Miller)", expectedFilter: "(sn>=Miller)", expectedType: FilterGreaterOrEqual, }, - compileTest{ + { filterStr: "(sn<=Miller)", expectedFilter: "(sn<=Miller)", expectedType: FilterLessOrEqual, }, - compileTest{ + { filterStr: "(sn=*)", expectedFilter: "(sn=*)", expectedType: FilterPresent, }, - compileTest{ + { filterStr: "(sn~=Miller)", expectedFilter: "(sn~=Miller)", expectedType: FilterApproxMatch, }, - compileTest{ + { filterStr: `(objectGUID='\fc\fe\a3\ab\f9\90N\aaGm\d5I~\d12)`, expectedFilter: `(objectGUID='\fc\fe\a3\ab\f9\90N\aaGm\d5I~\d12)`, expectedType: FilterEqualityMatch, }, - compileTest{ + { filterStr: `(objectGUID=абвгдеёжзийклмнопрстуфхцчшщъыьэюя)`, expectedFilter: `(objectGUID=\d0\b0\d0\b1\d0\b2\d0\b3\d0\b4\d0\b5\d1\91\d0\b6\d0\b7\d0\b8\d0\b9\d0\ba\d0\bb\d0\bc\d0\bd\d0\be\d0\bf\d1\80\d1\81\d1\82\d1\83\d1\84\d1\85\d1\86\d1\87\d1\88\d1\89\d1\8a\d1\8b\d1\8c\d1\8d\d1\8e\d1\8f)`, expectedType: FilterEqualityMatch, }, - compileTest{ + { filterStr: `(objectGUID=함수목록)`, expectedFilter: `(objectGUID=\ed\95\a8\ec\88\98\eb\aa\a9\eb\a1\9d)`, expectedType: FilterEqualityMatch, }, - compileTest{ + { filterStr: `(objectGUID=`, expectedFilter: ``, expectedType: 0, expectedErr: "unexpected end of filter", }, - compileTest{ + { filterStr: `(objectGUID=함수목록`, expectedFilter: ``, expectedType: 0, expectedErr: "unexpected end of filter", }, - compileTest{ + { filterStr: `((cn=)`, expectedFilter: ``, expectedType: 0, expectedErr: "unexpected end of filter", }, - compileTest{ + { filterStr: `(&(objectclass=inetorgperson)(cn=中文))`, expectedFilter: `(&(objectclass=inetorgperson)(cn=\e4\b8\ad\e6\96\87))`, expectedType: 0, }, // attr extension - compileTest{ + { filterStr: `(memberOf:=foo)`, expectedFilter: `(memberOf:=foo)`, expectedType: FilterExtensibleMatch, }, // attr+named matching rule extension - compileTest{ + { filterStr: `(memberOf:test:=foo)`, expectedFilter: `(memberOf:test:=foo)`, expectedType: FilterExtensibleMatch, }, // attr+oid matching rule extension - compileTest{ + { filterStr: `(cn:1.2.3.4.5:=Fred Flintstone)`, expectedFilter: `(cn:1.2.3.4.5:=Fred Flintstone)`, expectedType: FilterExtensibleMatch, }, // attr+dn+oid matching rule extension - compileTest{ + { filterStr: `(sn:dn:2.4.6.8.10:=Barney Rubble)`, expectedFilter: `(sn:dn:2.4.6.8.10:=Barney Rubble)`, expectedType: FilterExtensibleMatch, }, // attr+dn extension - compileTest{ + { filterStr: `(o:dn:=Ace Industry)`, expectedFilter: `(o:dn:=Ace Industry)`, expectedType: FilterExtensibleMatch, }, // dn extension - compileTest{ + { filterStr: `(:dn:2.4.6.8.10:=Dino)`, expectedFilter: `(:dn:2.4.6.8.10:=Dino)`, expectedType: FilterExtensibleMatch, }, - compileTest{ + { filterStr: `(memberOf:1.2.840.113556.1.4.1941:=CN=User1,OU=blah,DC=mydomain,DC=net)`, expectedFilter: `(memberOf:1.2.840.113556.1.4.1941:=CN=User1,OU=blah,DC=mydomain,DC=net)`, expectedType: FilterExtensibleMatch, diff --git a/go.mod b/go.mod index d0dfceb1..76f68c06 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,4 @@ module github.com/go-ldap/ldap go 1.13 -require ( - github.com/go-asn1-ber/asn1-ber v1.3.1 - github.com/go-ldap/ldap v3.0.3+incompatible // indirect -) +require github.com/go-asn1-ber/asn1-ber v1.5.0 diff --git a/go.sum b/go.sum index 943a4af2..89947dab 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,2 @@ -github.com/go-asn1-ber/asn1-ber v1.3.1 h1:gvPdv/Hr++TRFCl0UbPFHC54P9N9jgsRPnmnr419Uck= -github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= -github.com/go-ldap/ldap v3.0.3+incompatible h1:HTeSZO8hWMS1Rgb2Ziku6b8a7qRIZZMHjsvuZyatzwk= -github.com/go-ldap/ldap v3.0.3+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= +github.com/go-asn1-ber/asn1-ber v1.5.0 h1:/S4hO/AO6tLMlPX0oftGSOcdGJJN/MuYzfgWRMn199E= +github.com/go-asn1-ber/asn1-ber v1.5.0/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= diff --git a/v3/conn.go b/v3/conn.go index 3643064f..8b8c41e7 100644 --- a/v3/conn.go +++ b/v3/conn.go @@ -145,7 +145,7 @@ func (dc *DialContext) dial(u *url.URL) (net.Conn, error) { host, port, err := net.SplitHostPort(u.Host) if err != nil { - // we asume that error is due to missing port + // we assume that error is due to missing port host = u.Host port = "" } diff --git a/v3/conn_test.go b/v3/conn_test.go index f815a967..3771a29d 100644 --- a/v3/conn_test.go +++ b/v3/conn_test.go @@ -12,7 +12,7 @@ import ( "testing" "time" - "github.com/go-asn1-ber/asn1-ber" + ber "github.com/go-asn1-ber/asn1-ber" ) func TestUnresponsiveConnection(t *testing.T) { diff --git a/v3/control.go b/v3/control.go index 463fe3a3..0fff409e 100644 --- a/v3/control.go +++ b/v3/control.go @@ -4,7 +4,7 @@ import ( "fmt" "strconv" - "github.com/go-asn1-ber/asn1-ber" + ber "github.com/go-asn1-ber/asn1-ber" ) const ( diff --git a/v3/dn_test.go b/v3/dn_test.go index 511c8343..ee181310 100644 --- a/v3/dn_test.go +++ b/v3/dn_test.go @@ -7,44 +7,44 @@ import ( func TestSuccessfulDNParsing(t *testing.T) { testcases := map[string]DN{ - "": DN{[]*RelativeDN{}}, - "cn=Jim\\2C \\22Hasse Hö\\22 Hansson!,dc=dummy,dc=com": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"cn", "Jim, \"Hasse Hö\" Hansson!"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"dc", "dummy"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"dc", "com"}}}}}, - "UID=jsmith,DC=example,DC=net": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"UID", "jsmith"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"DC", "example"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"DC", "net"}}}}}, - "OU=Sales+CN=J. Smith,DC=example,DC=net": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{ - &AttributeTypeAndValue{"OU", "Sales"}, - &AttributeTypeAndValue{"CN", "J. Smith"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"DC", "example"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"DC", "net"}}}}}, - "1.3.6.1.4.1.1466.0=#04024869": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"1.3.6.1.4.1.1466.0", "Hi"}}}}}, - "1.3.6.1.4.1.1466.0=#04024869,DC=net": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"1.3.6.1.4.1.1466.0", "Hi"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"DC", "net"}}}}}, - "CN=Lu\\C4\\8Di\\C4\\87": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"CN", "Lučić"}}}}}, - " CN = Lu\\C4\\8Di\\C4\\87 ": DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"CN", "Lučić"}}}}}, - ` A = 1 , B = 2 `: DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"A", "1"}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{"B", "2"}}}}}, - ` A = 1 + B = 2 `: DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{ - &AttributeTypeAndValue{"A", "1"}, - &AttributeTypeAndValue{"B", "2"}}}}}, - ` \ \ A\ \ = \ \ 1\ \ , \ \ B\ \ = \ \ 2\ \ `: DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{" A ", " 1 "}}}, - &RelativeDN{[]*AttributeTypeAndValue{&AttributeTypeAndValue{" B ", " 2 "}}}}}, - ` \ \ A\ \ = \ \ 1\ \ + \ \ B\ \ = \ \ 2\ \ `: DN{[]*RelativeDN{ - &RelativeDN{[]*AttributeTypeAndValue{ - &AttributeTypeAndValue{" A ", " 1 "}, - &AttributeTypeAndValue{" B ", " 2 "}}}}}, + "": {[]*RelativeDN{}}, + "cn=Jim\\2C \\22Hasse Hö\\22 Hansson!,dc=dummy,dc=com": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"cn", "Jim, \"Hasse Hö\" Hansson!"}}}, + {[]*AttributeTypeAndValue{{"dc", "dummy"}}}, + {[]*AttributeTypeAndValue{{"dc", "com"}}}}}, + "UID=jsmith,DC=example,DC=net": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"UID", "jsmith"}}}, + {[]*AttributeTypeAndValue{{"DC", "example"}}}, + {[]*AttributeTypeAndValue{{"DC", "net"}}}}}, + "OU=Sales+CN=J. Smith,DC=example,DC=net": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{ + {"OU", "Sales"}, + {"CN", "J. Smith"}}}, + {[]*AttributeTypeAndValue{{"DC", "example"}}}, + {[]*AttributeTypeAndValue{{"DC", "net"}}}}}, + "1.3.6.1.4.1.1466.0=#04024869": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"1.3.6.1.4.1.1466.0", "Hi"}}}}}, + "1.3.6.1.4.1.1466.0=#04024869,DC=net": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"1.3.6.1.4.1.1466.0", "Hi"}}}, + {[]*AttributeTypeAndValue{{"DC", "net"}}}}}, + "CN=Lu\\C4\\8Di\\C4\\87": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"CN", "Lučić"}}}}}, + " CN = Lu\\C4\\8Di\\C4\\87 ": {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"CN", "Lučić"}}}}}, + ` A = 1 , B = 2 `: {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{"A", "1"}}}, + {[]*AttributeTypeAndValue{{"B", "2"}}}}}, + ` A = 1 + B = 2 `: {[]*RelativeDN{ + {[]*AttributeTypeAndValue{ + {"A", "1"}, + {"B", "2"}}}}}, + ` \ \ A\ \ = \ \ 1\ \ , \ \ B\ \ = \ \ 2\ \ `: {[]*RelativeDN{ + {[]*AttributeTypeAndValue{{" A ", " 1 "}}}, + {[]*AttributeTypeAndValue{{" B ", " 2 "}}}}}, + ` \ \ A\ \ = \ \ 1\ \ + \ \ B\ \ = \ \ 2\ \ `: {[]*RelativeDN{ + {[]*AttributeTypeAndValue{ + {" A ", " 1 "}, + {" B ", " 2 "}}}}}, } for test, answer := range testcases { diff --git a/v3/error_test.go b/v3/error_test.go index c547e454..fe7a155d 100644 --- a/v3/error_test.go +++ b/v3/error_test.go @@ -7,7 +7,7 @@ import ( "testing" "time" - "github.com/go-asn1-ber/asn1-ber" + ber "github.com/go-asn1-ber/asn1-ber" ) // TestNilPacket tests that nil packets don't cause a panic. diff --git a/v3/filter_test.go b/v3/filter_test.go index add50792..f67d6c74 100644 --- a/v3/filter_test.go +++ b/v3/filter_test.go @@ -16,168 +16,168 @@ type compileTest struct { } var testFilters = []compileTest{ - compileTest{ + { filterStr: "(&(sn=Miller)(givenName=Bob))", expectedFilter: "(&(sn=Miller)(givenName=Bob))", expectedType: FilterAnd, }, - compileTest{ + { filterStr: "(|(sn=Miller)(givenName=Bob))", expectedFilter: "(|(sn=Miller)(givenName=Bob))", expectedType: FilterOr, }, - compileTest{ + { filterStr: "(!(sn=Miller))", expectedFilter: "(!(sn=Miller))", expectedType: FilterNot, }, - compileTest{ + { filterStr: "(sn=Miller)", expectedFilter: "(sn=Miller)", expectedType: FilterEqualityMatch, }, - compileTest{ + { filterStr: "(sn=Mill*)", expectedFilter: "(sn=Mill*)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=*Mill)", expectedFilter: "(sn=*Mill)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=*Mill*)", expectedFilter: "(sn=*Mill*)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=*i*le*)", expectedFilter: "(sn=*i*le*)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=Mi*l*r)", expectedFilter: "(sn=Mi*l*r)", expectedType: FilterSubstrings, }, // substring filters escape properly - compileTest{ + { filterStr: `(sn=Mi*함*r)`, expectedFilter: `(sn=Mi*\ed\95\a8*r)`, expectedType: FilterSubstrings, }, // already escaped substring filters don't get double-escaped - compileTest{ + { filterStr: `(sn=Mi*\ed\95\a8*r)`, expectedFilter: `(sn=Mi*\ed\95\a8*r)`, expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=Mi*le*)", expectedFilter: "(sn=Mi*le*)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn=*i*ler)", expectedFilter: "(sn=*i*ler)", expectedType: FilterSubstrings, }, - compileTest{ + { filterStr: "(sn>=Miller)", expectedFilter: "(sn>=Miller)", expectedType: FilterGreaterOrEqual, }, - compileTest{ + { filterStr: "(sn<=Miller)", expectedFilter: "(sn<=Miller)", expectedType: FilterLessOrEqual, }, - compileTest{ + { filterStr: "(sn=*)", expectedFilter: "(sn=*)", expectedType: FilterPresent, }, - compileTest{ + { filterStr: "(sn~=Miller)", expectedFilter: "(sn~=Miller)", expectedType: FilterApproxMatch, }, - compileTest{ + { filterStr: `(objectGUID='\fc\fe\a3\ab\f9\90N\aaGm\d5I~\d12)`, expectedFilter: `(objectGUID='\fc\fe\a3\ab\f9\90N\aaGm\d5I~\d12)`, expectedType: FilterEqualityMatch, }, - compileTest{ + { filterStr: `(objectGUID=абвгдеёжзийклмнопрстуфхцчшщъыьэюя)`, expectedFilter: `(objectGUID=\d0\b0\d0\b1\d0\b2\d0\b3\d0\b4\d0\b5\d1\91\d0\b6\d0\b7\d0\b8\d0\b9\d0\ba\d0\bb\d0\bc\d0\bd\d0\be\d0\bf\d1\80\d1\81\d1\82\d1\83\d1\84\d1\85\d1\86\d1\87\d1\88\d1\89\d1\8a\d1\8b\d1\8c\d1\8d\d1\8e\d1\8f)`, expectedType: FilterEqualityMatch, }, - compileTest{ + { filterStr: `(objectGUID=함수목록)`, expectedFilter: `(objectGUID=\ed\95\a8\ec\88\98\eb\aa\a9\eb\a1\9d)`, expectedType: FilterEqualityMatch, }, - compileTest{ + { filterStr: `(objectGUID=`, expectedFilter: ``, expectedType: 0, expectedErr: "unexpected end of filter", }, - compileTest{ + { filterStr: `(objectGUID=함수목록`, expectedFilter: ``, expectedType: 0, expectedErr: "unexpected end of filter", }, - compileTest{ + { filterStr: `((cn=)`, expectedFilter: ``, expectedType: 0, expectedErr: "unexpected end of filter", }, - compileTest{ + { filterStr: `(&(objectclass=inetorgperson)(cn=中文))`, expectedFilter: `(&(objectclass=inetorgperson)(cn=\e4\b8\ad\e6\96\87))`, expectedType: 0, }, // attr extension - compileTest{ + { filterStr: `(memberOf:=foo)`, expectedFilter: `(memberOf:=foo)`, expectedType: FilterExtensibleMatch, }, // attr+named matching rule extension - compileTest{ + { filterStr: `(memberOf:test:=foo)`, expectedFilter: `(memberOf:test:=foo)`, expectedType: FilterExtensibleMatch, }, // attr+oid matching rule extension - compileTest{ + { filterStr: `(cn:1.2.3.4.5:=Fred Flintstone)`, expectedFilter: `(cn:1.2.3.4.5:=Fred Flintstone)`, expectedType: FilterExtensibleMatch, }, // attr+dn+oid matching rule extension - compileTest{ + { filterStr: `(sn:dn:2.4.6.8.10:=Barney Rubble)`, expectedFilter: `(sn:dn:2.4.6.8.10:=Barney Rubble)`, expectedType: FilterExtensibleMatch, }, // attr+dn extension - compileTest{ + { filterStr: `(o:dn:=Ace Industry)`, expectedFilter: `(o:dn:=Ace Industry)`, expectedType: FilterExtensibleMatch, }, // dn extension - compileTest{ + { filterStr: `(:dn:2.4.6.8.10:=Dino)`, expectedFilter: `(:dn:2.4.6.8.10:=Dino)`, expectedType: FilterExtensibleMatch, }, - compileTest{ + { filterStr: `(memberOf:1.2.840.113556.1.4.1941:=CN=User1,OU=blah,DC=mydomain,DC=net)`, expectedFilter: `(memberOf:1.2.840.113556.1.4.1941:=CN=User1,OU=blah,DC=mydomain,DC=net)`, expectedType: FilterExtensibleMatch, diff --git a/v3/go.mod b/v3/go.mod index 9816ce0e..f27d3a2d 100644 --- a/v3/go.mod +++ b/v3/go.mod @@ -2,4 +2,4 @@ module github.com/go-ldap/ldap/v3 go 1.13 -require github.com/go-asn1-ber/asn1-ber v1.3.1 +require github.com/go-asn1-ber/asn1-ber v1.5.0 diff --git a/v3/go.sum b/v3/go.sum index c8b9085b..89947dab 100644 --- a/v3/go.sum +++ b/v3/go.sum @@ -1,2 +1,2 @@ -github.com/go-asn1-ber/asn1-ber v1.3.1 h1:gvPdv/Hr++TRFCl0UbPFHC54P9N9jgsRPnmnr419Uck= -github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= +github.com/go-asn1-ber/asn1-ber v1.5.0 h1:/S4hO/AO6tLMlPX0oftGSOcdGJJN/MuYzfgWRMn199E= +github.com/go-asn1-ber/asn1-ber v1.5.0/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=