parent
2a844bd559
commit
a08be6b395
@ -0,0 +1,54 @@ |
||||
package message |
||||
|
||||
import ( |
||||
"testing" |
||||
"bytes" |
||||
) |
||||
|
||||
func TestSizeInt64(t *testing.T) { |
||||
s := sizeInt64(0) |
||||
if s != 1 { |
||||
t.Errorf("computed size is %d, expected 1", s) |
||||
} |
||||
|
||||
s = sizeInt64(127) |
||||
if s != 1 { |
||||
t.Errorf("computed size is %d, expected 1", s) |
||||
} |
||||
|
||||
s = sizeInt64(128) |
||||
if s != 2 { |
||||
t.Errorf("computed size is %d, expected 2", s) |
||||
} |
||||
|
||||
s = sizeInt64(50000) |
||||
if s != 3 { |
||||
t.Errorf("computed size is %d, expected 3", s) |
||||
} |
||||
|
||||
s = sizeInt64(-12345) |
||||
if s != 2 { |
||||
t.Errorf("computed size is %d, expected 2", s) |
||||
} |
||||
} |
||||
|
||||
func TestWriteInt64(t *testing.T) { |
||||
vtests := []int64{0, 127, 128, 50000, -12345} |
||||
expsize := []int{1, 1, 2, 3, 2} |
||||
expresult := [][]byte{{0x00}, {0x7F}, {0x00, 0x80}, {0x00, 0xc3, 0x50}, {0xcf, 0xc7}} |
||||
|
||||
for idx, v := range vtests { |
||||
fs := sizeInt64(v) |
||||
b := NewBytes(fs, make([]byte, fs)) |
||||
t.Log("computing", v) |
||||
s := writeInt64(b, v) |
||||
if s != expsize[idx] { |
||||
t.Errorf("computed size is %d, expected %d", s, expsize[idx]) |
||||
} |
||||
if !bytes.Equal(b.Bytes(), expresult[idx]) { |
||||
t.Errorf("wrong computed bytes, got %v, expected %v", b.Bytes(), expresult[idx]) |
||||
} |
||||
a, e := parseInt64(b.Bytes()) |
||||
t.Log("parse", a, e) |
||||
} |
||||
} |
@ -0,0 +1,76 @@ |
||||
package message |
||||
|
||||
import ( |
||||
"testing" |
||||
"fmt" |
||||
) |
||||
|
||||
func toHex(b []byte) (r string) { |
||||
r = "[ " |
||||
for _, e := range b { |
||||
r += fmt.Sprintf("0x%x ", e) |
||||
} |
||||
return r + "]" |
||||
} |
||||
|
||||
func TestMessageID(t *testing.T) { |
||||
m := NewLDAPMessageWithProtocolOp(UnbindRequest{}) |
||||
m.SetMessageID(128) |
||||
buf, err := m.Write() |
||||
if err != nil { |
||||
t.Errorf("marshalling failed with %v", err) |
||||
} |
||||
t.Logf("%v", toHex(buf.Bytes())) |
||||
|
||||
ret, err := ReadLDAPMessage(NewBytes(0, buf.Bytes())) |
||||
if err != nil { |
||||
t.Errorf("unmarshalling failed with %v", err) |
||||
} |
||||
if _, ok := ret.ProtocolOp().(UnbindRequest); !ok { |
||||
t.Errorf("should be an unbind request") |
||||
} |
||||
if ret.MessageID() != 128 { |
||||
t.Errorf("Expect message id 128, got %d", ret.MessageID()) |
||||
} |
||||
t.Log("Done, marshal/unmarshall worked") |
||||
} |
||||
|
||||
func TestSearchEntry(t *testing.T) { |
||||
m := NewLDAPMessageWithProtocolOp(SearchResultEntry{ |
||||
objectName:"cn=êige€nbgtz,ou=users,dc=deuxfleurs,dc=fr",
|
||||
attributes: PartialAttributeList{ |
||||
PartialAttribute{ |
||||
type_:"displayname", |
||||
vals:[]AttributeValue{"êiGe€NBgTZ"}, |
||||
}, |
||||
PartialAttribute{ |
||||
type_:"objectclass", |
||||
vals:[]AttributeValue{"inetOrgPerson"}, |
||||
}, |
||||
PartialAttribute{ |
||||
type_:"objectclass",
|
||||
vals:[]AttributeValue{"organizationalPerson"}, |
||||
}, |
||||
PartialAttribute{ |
||||
type_:"objectclass",
|
||||
vals:[]AttributeValue{"person"}, |
||||
}, |
||||
PartialAttribute{ |
||||
type_:"objectclass", |
||||
vals:[]AttributeValue{"top"}, |
||||
}, |
||||
PartialAttribute{ |
||||
type_:"structuralobjectclass", |
||||
vals:[]AttributeValue{"inetOrgPerson"}, |
||||
}, |
||||
}, |
||||
}) |
||||
m.SetMessageID(24) |
||||
buf, err := m.Write() |
||||
if err != nil { |
||||
t.Errorf("marshalling failed with %v", err) |
||||
} |
||||
if buf.Bytes()[0] != 0x30 { |
||||
t.Logf("Malformed message: %v", toHex(buf.Bytes())) |
||||
} |
||||
} |
Loading…
Reference in new issue