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)
Exemplo n.º 2
0
					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"))
					})
				})