func (c *NozzlerCmd) Run(cliConnection plugin.CliConnection, args []string) { var debug bool if args[0] != "nozzle" { return } c.ui = terminal.NewUI(os.Stdin, terminal.NewTeePrinter()) fc := flags.NewFlagContext(setupFlags()) err := fc.Parse(args[1:]...) if err != nil { c.ui.Failed(err.Error()) } if fc.IsSet("debug") { debug = fc.Bool("debug") } dopplerEndpoint, err := cliConnection.DopplerEndpoint() if err != nil { c.ui.Failed(err.Error()) } authToken, err := cliConnection.AccessToken() if err != nil { c.ui.Failed(err.Error()) } client := firehose.NewClient(authToken, dopplerEndpoint, debug, c.ui) client.Start() }
BeforeEach(func() { printer = new(fakes.FakePrinter) stdout = "" printer.PrintfStub = func(format string, a ...interface{}) (n int, err error) { stdout += fmt.Sprintf(format, a...) return len(stdout), nil } stdin = &fakeStdin{[]byte{'\n'}, false} ui = terminal.NewUI(stdin, printer) }) Context("Start", func() { Context("when the connection to doppler cannot be established", func() { It("shows a meaningful error", func() { client := firehose.NewClient("invalidToken", "badEndpoint", false, ui) client.Start() Expect(stdout).To(ContainSubstring("Error dialing traffic controller server")) }) }) Context("when the connection to doppler works", func() { var fakeFirehose *testhelpers.FakeFirehose BeforeEach(func() { fakeFirehose = testhelpers.NewFakeFirehose("ACCESS_TOKEN") fakeFirehose.SendLog("This is a very special test message") fakeFirehose.Start() }) It("prints out debug information if demanded", func() { client := firehose.NewClient("ACCESS_TOKEN", fakeFirehose.URL(), true, ui) client.Start()