transport_test.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2011 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package ssh
  5. import (
  6. "bufio"
  7. "bytes"
  8. "testing"
  9. )
  10. func TestReadVersion(t *testing.T) {
  11. buf := serverVersion
  12. result, err := readVersion(bufio.NewReader(bytes.NewBuffer(buf)))
  13. if err != nil {
  14. t.Errorf("readVersion didn't read version correctly: %s", err)
  15. }
  16. if !bytes.Equal(buf[:len(buf)-2], result) {
  17. t.Error("version read did not match expected")
  18. }
  19. }
  20. func TestReadVersionWithJustLF(t *testing.T) {
  21. var buf []byte
  22. buf = append(buf, serverVersion...)
  23. buf = buf[:len(buf)-1]
  24. buf[len(buf)-1] = '\n'
  25. result, err := readVersion(bufio.NewReader(bytes.NewBuffer(buf)))
  26. if err != nil {
  27. t.Error("readVersion failed to handle just a \n")
  28. }
  29. if !bytes.Equal(buf[:len(buf)-1], result) {
  30. t.Errorf("version read did not match expected: got %x, want %x", result, buf[:len(buf)-1])
  31. }
  32. }
  33. func TestReadVersionTooLong(t *testing.T) {
  34. buf := make([]byte, maxVersionStringBytes+1)
  35. if _, err := readVersion(bufio.NewReader(bytes.NewBuffer(buf))); err == nil {
  36. t.Errorf("readVersion consumed %d bytes without error", len(buf))
  37. }
  38. }
  39. func TestReadVersionWithoutCRLF(t *testing.T) {
  40. buf := serverVersion
  41. buf = buf[:len(buf)-1]
  42. if _, err := readVersion(bufio.NewReader(bytes.NewBuffer(buf))); err == nil {
  43. t.Error("readVersion did not notice \\n was missing")
  44. }
  45. }