Exemplo n.º 1
0
		})

		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() {
				clientConfig = &ssh.ClientConfig{
					User: "******",
					Auth: []ssh.AuthMethod{
						ssh.Password("diego-user:diego-password"),
					},
				}
			})
		newChannelHandlers := map[string]handlers.NewChannelHandler{
			"direct-tcpip": handler,
		}

		serverNetConn, clientNetConn := test_helpers.Pipe()

		sshd = daemon.New(logger, serverSSHConfig, nil, newChannelHandlers)
		go sshd.HandleConnection(serverNetConn)

		client = test_helpers.NewClient(clientNetConn, nil)
	})

	AfterEach(func() {
		client.Close()
		echoServer.Shutdown()
	})

	Context("when a session is opened", func() {
		var conn net.Conn

		JustBeforeEach(func() {
			var dialErr error
			conn, dialErr = client.Dial("tcp", echoAddress)
			Expect(dialErr).NotTo(HaveOccurred())
		})

		AfterEach(func() {
			conn.Close()
		})
Exemplo n.º 3
0
		})
	})

	Describe("Shutdown", func() {
		var fakeListener *fake_net.FakeListener

		BeforeEach(func() {
			fakeListener = &fake_net.FakeListener{}

			srv = server.NewServer(logger, address, handler)
			srv.SetListener(fakeListener)
		})

		Context("when the server is shutdown", func() {
			BeforeEach(func() {
				srv.Shutdown()
			})

			It("closes the listener", func() {
				Expect(fakeListener.CloseCallCount()).To(Equal(1))
			})

			It("marks the server as stopping", func() {
				Expect(srv.IsStopping()).To(BeTrue())
			})

			It("does not log an accept failure", func() {
				Eventually(func() error {
					_, err := net.Dial("tcp", address)
					return err
				}).Should(HaveOccurred())