}) Expect(err).NotTo(HaveOccurred()) permissions := &ssh.Permissions{ CriticalOptions: map[string]string{ "proxy-target-config": string(targetConfigJson), "log-message": string(logMessageJson), }, } proxyAuthenticator.AuthenticateReturns(permissions, nil) }) JustBeforeEach(func() { sshProxy = proxy.New(logger.Session("proxy"), proxySSHConfig) proxyServer = server.NewServer(logger, "127.0.0.1:0", sshProxy) proxyServer.SetListener(proxyListener) go proxyServer.Serve() sshDaemon = daemon.New(logger.Session("sshd"), daemonSSHConfig, daemonGlobalRequestHandlers, daemonNewChannelHandlers) sshdServer = server.NewServer(logger, "127.0.0.1:0", sshDaemon) sshdServer.SetListener(sshdListener) go sshdServer.Serve() }) AfterEach(func() { proxyServer.Shutdown() sshdServer.Shutdown() }) Context("when a new connection arrives", func() { var clientConfig *ssh.ClientConfig
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) testDialer = &fakes.FakeDialer{} testDialer.DialStub = net.Dial testHandler = handlers.NewDirectTcpipChannelHandler(testDialer) handler = &fake_handlers.FakeNewChannelHandler{} handler.HandleNewChannelStub = testHandler.HandleNewChannel
It("accepts the new connection", func() { _, err := net.Dial("tcp", address) Expect(err).NotTo(HaveOccurred()) }) }) }) Describe("SetListener", func() { var fakeListener *fake_net.FakeListener BeforeEach(func() { fakeListener = &fake_net.FakeListener{} srv = server.NewServer(logger, address, handler) srv.SetListener(fakeListener) }) Context("when a listener has already been set", func() { It("returns an error", func() { listener := &fake_net.FakeListener{} err := srv.SetListener(listener) Expect(err).To(MatchError("Listener has already been set")) }) }) }) Describe("Serve", func() { var fakeListener *fake_net.FakeListener var fakeConn *fake_net.FakeConn