| // Copyright 2014 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package ssh |
| |
| import ( |
| "context" |
| "net" |
| "testing" |
| "time" |
| ) |
| |
| func TestAutoPortListenBroken(t *testing.T) { |
| broken := "SSH-2.0-OpenSSH_5.9hh11" |
| works := "SSH-2.0-OpenSSH_6.1" |
| if !isBrokenOpenSSHVersion(broken) { |
| t.Errorf("version %q not marked as broken", broken) |
| } |
| if isBrokenOpenSSHVersion(works) { |
| t.Errorf("version %q marked as broken", works) |
| } |
| } |
| |
| func TestClientImplementsDialContext(t *testing.T) { |
| type ContextDialer interface { |
| DialContext(context.Context, string, string) (net.Conn, error) |
| } |
| // Belt and suspenders assertion, since package net does not |
| // declare a ContextDialer type. |
| var _ ContextDialer = &net.Dialer{} |
| var _ ContextDialer = &Client{} |
| } |
| |
| func TestClientDialContextWithCancel(t *testing.T) { |
| c := &Client{} |
| ctx, cancel := context.WithCancel(context.Background()) |
| cancel() |
| _, err := c.DialContext(ctx, "tcp", "localhost:1000") |
| if err != context.Canceled { |
| t.Errorf("DialContext: got nil error, expected %v", context.Canceled) |
| } |
| } |
| |
| func TestClientDialContextWithDeadline(t *testing.T) { |
| c := &Client{} |
| ctx, cancel := context.WithDeadline(context.Background(), time.Now()) |
| defer cancel() |
| _, err := c.DialContext(ctx, "tcp", "localhost:1000") |
| if err != context.DeadlineExceeded { |
| t.Errorf("DialContext: got nil error, expected %v", context.DeadlineExceeded) |
| } |
| } |