func (p MbusHandlerProvider) Get( platform boshplatform.Platform, dirProvider boshdir.DirectoriesProvider, ) (handler boshhandler.Handler, err error) { if p.handler != nil { handler = p.handler return } mbusURL, err := url.Parse(p.settings.GetMbusURL()) if err != nil { err = bosherr.WrapError(err, "Parsing handler URL") return } switch mbusURL.Scheme { case "nats": handler = NewNatsHandler(p.settings, p.logger, yagnats.NewClient()) case "https": handler = micro.NewHTTPSHandler(mbusURL, p.logger, platform.GetFs(), dirProvider) default: err = bosherr.New("Message Bus Handler with scheme %s could not be found", mbusURL.Scheme) } p.handler = handler return }
}) Describe("Get", func() { It("returns nats handler", func() { settingsService.Settings.Mbus = "nats://lol" handler, err := provider.Get(platform, dirProvider) Expect(err).ToNot(HaveOccurred()) // yagnats.NewClient returns new object every time expectedHandler := NewNatsHandler(settingsService, yagnats.NewClient(), logger) Expect(reflect.TypeOf(handler)).To(Equal(reflect.TypeOf(expectedHandler))) }) It("returns https handler", func() { url, err := gourl.Parse("https://lol") Expect(err).ToNot(HaveOccurred()) settingsService.Settings.Mbus = "https://lol" handler, err := provider.Get(platform, dirProvider) Expect(err).ToNot(HaveOccurred()) Expect(handler).To(Equal(micro.NewHTTPSHandler(url, logger, platform.GetFs(), dirProvider))) }) It("returns an error if not supported", func() { settingsService.Settings.Mbus = "unknown-scheme://lol" _, err := provider.Get(platform, dirProvider) Expect(err).To(HaveOccurred()) }) }) })