transport_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. "bytes"
  7. "strings"
  8. "testing"
  9. )
  10. func TestReadVersion(t *testing.T) {
  11. longversion := strings.Repeat("SSH-2.0-bla", 50)[:253]
  12. cases := map[string]string{
  13. "SSH-2.0-bla\r\n": "SSH-2.0-bla",
  14. "SSH-2.0-bla\n": "SSH-2.0-bla",
  15. longversion + "\r\n": longversion,
  16. }
  17. for in, want := range cases {
  18. result, err := readVersion(bytes.NewBufferString(in))
  19. if err != nil {
  20. t.Errorf("readVersion(%q): %s", in, err)
  21. }
  22. got := string(result)
  23. if got != want {
  24. t.Errorf("got %q, want %q", got, want)
  25. }
  26. }
  27. }
  28. func TestReadVersionError(t *testing.T) {
  29. longversion := strings.Repeat("SSH-2.0-bla", 50)[:253]
  30. cases := []string{
  31. longversion + "too-long\r\n",
  32. }
  33. for _, in := range cases {
  34. if _, err := readVersion(bytes.NewBufferString(in)); err == nil {
  35. t.Errorf("readVersion(%q) should have failed", in)
  36. }
  37. }
  38. }
  39. func TestExchangeVersionsBasic(t *testing.T) {
  40. v := "SSH-2.0-bla"
  41. buf := bytes.NewBufferString(v + "\r\n")
  42. them, err := exchangeVersions(buf, []byte("xyz"))
  43. if err != nil {
  44. t.Errorf("exchangeVersions: %v", err)
  45. }
  46. if want := "SSH-2.0-bla"; string(them) != want {
  47. t.Errorf("got %q want %q for our version", them, want)
  48. }
  49. }
  50. func TestExchangeVersions(t *testing.T) {
  51. cases := []string{
  52. "not\x000allowed",
  53. "not allowed\n",
  54. }
  55. for _, c := range cases {
  56. buf := bytes.NewBufferString("SSH-2.0-bla\r\n")
  57. if _, err := exchangeVersions(buf, []byte(c)); err == nil {
  58. t.Errorf("exchangeVersions(%q): should have failed", c)
  59. }
  60. }
  61. }