localAddress = realLocalListener.Addr().String() fakeListenerFactory.ListenReturns(realLocalListener, nil) echoHandler = &fake_server.FakeConnectionHandler{} echoHandler.HandleConnectionStub = func(conn net.Conn) { io.Copy(conn, conn) conn.Close() } realListener, err := net.Listen("tcp", "127.0.0.1:0") Expect(err).NotTo(HaveOccurred()) echoAddress = realListener.Addr().String() echoListener = &fake_net.FakeListener{} echoListener.AcceptStub = realListener.Accept echoListener.CloseStub = realListener.Close echoListener.AddrStub = realListener.Addr fakeLocalListener = &fake_net.FakeListener{} fakeLocalListener.AcceptReturns(nil, errors.New("Not Accepting Connections")) echoServer = server.NewServer(logger.Session("echo"), "", echoHandler) echoServer.SetListener(echoListener) go echoServer.Serve() opts = &options.SSHOptions{ AppName: "app-1", ForwardSpecs: []options.ForwardSpec{{ ListenAddress: localAddress, ConnectAddress: echoAddress,
Describe("Serve", func() { var fakeListener *fake_net.FakeListener var fakeConn *fake_net.FakeConn BeforeEach(func() { fakeListener = &fake_net.FakeListener{} fakeConn = &fake_net.FakeConn{} connectionCh := make(chan net.Conn, 1) connectionCh <- fakeConn 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)) })