handler *fake_handlers.FakeNewChannelHandler testHandler *handlers.DirectTcpipChannelHandler testDialer *fakes.FakeDialer echoHandler *fake_server.FakeConnectionHandler echoServer *server.Server echoAddress string ) BeforeEach(func() { logger = lagertest.NewTestLogger("test") echoHandler = &fake_server.FakeConnectionHandler{} echoHandler.HandleConnectionStub = func(conn net.Conn) { io.Copy(conn, conn) conn.Close() } echoListener, err := net.Listen("tcp", "127.0.0.1:0") Expect(err).NotTo(HaveOccurred()) echoAddress = echoListener.Addr().String() echoServer = server.NewServer(logger.Session("echo"), "", echoHandler) echoServer.SetListener(echoListener) go echoServer.Serve() serverSSHConfig = &ssh.ServerConfig{ NoClientAuth: true, } serverSSHConfig.AddHostKey(TestHostKey)
Expect(err).NotTo(HaveOccurred()) }) AfterEach(func() { target.Shutdown() }) Context("when the target sends a global request", func() { BeforeEach(func() { connectionHandler.HandleConnectionStub = func(conn net.Conn) { defer GinkgoRecover() serverConn, _, _, err := ssh.NewServerConn(conn, daemonSSHConfig) Expect(err).NotTo(HaveOccurred()) accepted, response, err := serverConn.SendRequest("test", true, []byte("test-data")) Expect(err).NotTo(HaveOccurred()) Expect(accepted).To(BeTrue()) Expect(response).To(Equal([]byte("response-data"))) serverConn.Close() } }) It("gets forwarded to the client", func() { var req *ssh.Request Eventually(clientRequests).Should(Receive(&req)) req.Reply(true, []byte("response-data")) }) })