var _ = Describe("Bridge", func() { Describe("#Connect", func() { var bridge domain.Bridge var client, backend *fakes.FakeConn var logger lager.Logger BeforeEach(func() { logger = lagertest.NewTestLogger("Bridge test") backend = &fakes.FakeConn{} client = &fakes.FakeConn{} clientAddr := &fakes.FakeAddr{} backendAddr := &fakes.FakeAddr{} client.RemoteAddrReturns(clientAddr) backend.RemoteAddrReturns(backendAddr) bridge = domain.NewBridge(client, backend, logger) }) Context("When operating normally", func() { It("forwards data from the client to backend", func() { expectedText := "hello" var copiedToBackend string clientReadCount := 0 client.ReadStub = func(p []byte) (int, error) { if clientReadCount == 0 { copy(p, expectedText) clientReadCount++
bridge.ConnectStub = func(connectReadyChan, disconnectChan chan interface{}) func() { return func() { close(connectReadyChan) <-disconnectChan } }(connectReadyChan, disconnectChan) bridges.CreateReturns(bridge) clientConn = &fakes.FakeConn{} backendConn = &fakes.FakeConn{} clientAddr := &fakes.FakeAddr{} backendAddr := &fakes.FakeAddr{} clientConn.RemoteAddrReturns(clientAddr) backendConn.RemoteAddrReturns(backendAddr) dialErr = nil dialedAddress = "" domain.Dialer = func(protocol, address string) (net.Conn, error) { dialedProtocol = protocol dialedAddress = address return backendConn, dialErr } }) AfterEach(func() { domain.Dialer = net.Dial })