github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/cf/net/warnings_collector_test.go (about) 1 package net_test 2 3 import ( 4 "os" 5 6 "code.cloudfoundry.org/cli/cf/net" 7 "code.cloudfoundry.org/cli/cf/net/netfakes" 8 "code.cloudfoundry.org/cli/cf/terminal/terminalfakes" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 ) 12 13 var _ = Describe("WarningsCollector", func() { 14 var ( 15 ui *terminalfakes.FakeUI 16 oldRaiseErrorValue string 17 warningsCollector net.WarningsCollector 18 ) 19 20 BeforeEach(func() { 21 ui = new(terminalfakes.FakeUI) 22 }) 23 24 Describe("PrintWarnings", func() { 25 BeforeEach(func() { 26 oldRaiseErrorValue = os.Getenv("CF_RAISE_ERROR_ON_WARNINGS") 27 }) 28 29 AfterEach(func() { 30 os.Setenv("CF_RAISE_ERROR_ON_WARNINGS", oldRaiseErrorValue) 31 }) 32 33 Context("when the CF_RAISE_ERROR_ON_WARNINGS environment variable is set", func() { 34 BeforeEach(func() { 35 os.Setenv("CF_RAISE_ERROR_ON_WARNINGS", "true") 36 }) 37 38 Context("when there are warnings", func() { 39 BeforeEach(func() { 40 warning_producer_one := new(netfakes.FakeWarningProducer) 41 warning_producer_one.WarningsReturns([]string{"something"}) 42 warningsCollector = net.NewWarningsCollector(ui, warning_producer_one) 43 }) 44 45 It("returns an error", func() { 46 err := warningsCollector.PrintWarnings() 47 Expect(err).To(HaveOccurred()) 48 }) 49 }) 50 51 Context("when there are no warnings", func() { 52 BeforeEach(func() { 53 warningsCollector = net.NewWarningsCollector(ui) 54 }) 55 56 It("does not return an error", func() { 57 err := warningsCollector.PrintWarnings() 58 Expect(err).ToNot(HaveOccurred()) 59 }) 60 }) 61 }) 62 63 Context("when the CF_RAISE_ERROR_ON_WARNINGS environment variable is not set", func() { 64 BeforeEach(func() { 65 os.Setenv("CF_RAISE_ERROR_ON_WARNINGS", "") 66 }) 67 68 It("does not return an error", func() { 69 warning_producer_one := new(netfakes.FakeWarningProducer) 70 warning_producer_one.WarningsReturns([]string{"Hello", "Darling"}) 71 warningsCollector := net.NewWarningsCollector(ui, warning_producer_one) 72 73 err := warningsCollector.PrintWarnings() 74 Expect(err).ToNot(HaveOccurred()) 75 }) 76 77 It("does not print out duplicate warnings", func() { 78 warning_producer_one := new(netfakes.FakeWarningProducer) 79 warning_producer_one.WarningsReturns([]string{"Hello Darling"}) 80 warning_producer_two := new(netfakes.FakeWarningProducer) 81 warning_producer_two.WarningsReturns([]string{"Hello Darling"}) 82 warningsCollector := net.NewWarningsCollector(ui, warning_producer_one, warning_producer_two) 83 84 warningsCollector.PrintWarnings() 85 Expect(ui.WarnCallCount()).To(Equal(1)) 86 Expect(ui.WarnArgsForCall(0)).To(ContainSubstring("Hello Darling")) 87 }) 88 89 It("does not print out Endpoint deprecated warnings", func() { 90 warning_producer_one := new(netfakes.FakeWarningProducer) 91 warning_producer_one.WarningsReturns([]string{"Endpoint deprecated"}) 92 warning_producer_two := new(netfakes.FakeWarningProducer) 93 warning_producer_two.WarningsReturns([]string{"A warning"}) 94 warningsCollector := net.NewWarningsCollector(ui, warning_producer_one, warning_producer_two) 95 96 warningsCollector.PrintWarnings() 97 Expect(ui.WarnCallCount()).To(Equal(1)) 98 Expect(ui.WarnArgsForCall(0)).To(ContainSubstring("A warning")) 99 }) 100 }) 101 }) 102 })