From 0b167df1b45768c172a3d53bd61002a0d5e2e90c Mon Sep 17 00:00:00 2001 From: Dave Cheney Date: Wed, 23 Oct 2013 08:45:49 +1100 Subject: [PATCH] go.crypto/ssh: additional coverage of message unmarshaling R=golang-dev, hanwen CC=golang-dev https://golang.org/cl/14767043 --- ssh/messages_test.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ssh/messages_test.go b/ssh/messages_test.go index fd86b62..ec1d7be 100644 --- a/ssh/messages_test.go +++ b/ssh/messages_test.go @@ -78,6 +78,39 @@ func TestMarshalUnmarshal(t *testing.T) { } } +func TestUnmarshalEmptyPacket(t *testing.T) { + var b []byte + var m channelRequestSuccessMsg + err := unmarshal(&m, b, msgChannelRequest) + want := ParseError{msgChannelRequest} + if _, ok := err.(ParseError); !ok { + t.Fatalf("got %T, want %T", err, want) + } + if got := err.(ParseError); want != got { + t.Fatal("got %#v, want %#v", got, want) + } +} + +func TestUnmarshalUnexpectedPacket(t *testing.T) { + type S struct { + I uint32 + S string + B bool + } + + s := S{42, "hello", true} + packet := marshal(42, s) + roundtrip := S{} + err := unmarshal(&roundtrip, packet, 43) + if err == nil { + t.Fatal("expected error, not nil") + } + want := UnexpectedMessageError{43, 42} + if got, ok := err.(UnexpectedMessageError); !ok || want != got { + t.Fatal("expected %q, got %q", want, got) + } +} + func TestBareMarshalUnmarshal(t *testing.T) { type S struct { I uint32