github.com/deis/deis@v1.13.5-0.20170519182049-1d9e59fbdbfc/Godeps/_workspace/src/golang.org/x/crypto/ssh/test/agent_unix_test.go (about) 1 // Copyright 2014 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 5 // +build darwin dragonfly freebsd linux netbsd openbsd 6 7 package test 8 9 import ( 10 "bytes" 11 "testing" 12 13 "golang.org/x/crypto/ssh" 14 "golang.org/x/crypto/ssh/agent" 15 ) 16 17 func TestAgentForward(t *testing.T) { 18 server := newServer(t) 19 defer server.Shutdown() 20 conn := server.Dial(clientConfig()) 21 defer conn.Close() 22 23 keyring := agent.NewKeyring() 24 keyring.Add(testPrivateKeys["dsa"], nil, "") 25 pub := testPublicKeys["dsa"] 26 27 sess, err := conn.NewSession() 28 if err != nil { 29 t.Fatalf("NewSession: %v", err) 30 } 31 if err := agent.RequestAgentForwarding(sess); err != nil { 32 t.Fatalf("RequestAgentForwarding: %v", err) 33 } 34 35 if err := agent.ForwardToAgent(conn, keyring); err != nil { 36 t.Fatalf("SetupForwardKeyring: %v", err) 37 } 38 out, err := sess.CombinedOutput("ssh-add -L") 39 if err != nil { 40 t.Fatalf("running ssh-add: %v, out %s", err, out) 41 } 42 key, _, _, _, err := ssh.ParseAuthorizedKey(out) 43 if err != nil { 44 t.Fatalf("ParseAuthorizedKey(%q): %v", out, err) 45 } 46 47 if !bytes.Equal(key.Marshal(), pub.Marshal()) { 48 t.Fatalf("got key %s, want %s", ssh.MarshalAuthorizedKey(key), ssh.MarshalAuthorizedKey(pub)) 49 } 50 }