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 newChannelHandlers := map[string]handlers.NewChannelHandler{
fakeListener.AcceptStub = func() (net.Conn, error) { cx := connectionCh select { case conn := <-cx: return conn, nil default: return nil, errors.New("fail") } } }) JustBeforeEach(func() { srv = server.NewServer(logger, address, handler) srv.SetListener(fakeListener) srv.Serve() }) It("accepts inbound connections", func() { Expect(fakeListener.AcceptCallCount()).To(Equal(2)) }) It("passes the connection to the connection handler", func() { Eventually(handler.HandleConnectionCallCount).Should(Equal(1)) Expect(handler.HandleConnectionArgsForCall(0)).To(Equal(fakeConn)) }) Context("when accept returns a permanent error", func() { BeforeEach(func() { fakeListener.AcceptReturns(nil, errors.New("oops")) })