github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/actor/v2action/service_test.go (about) 1 package v2action_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/actionerror" 7 . "code.cloudfoundry.org/cli/actor/v2action" 8 "code.cloudfoundry.org/cli/actor/v2action/v2actionfakes" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 10 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2/constant" 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 ) 14 15 var _ = Describe("Service Actions", func() { 16 var ( 17 actor *Actor 18 fakeCloudControllerClient *v2actionfakes.FakeCloudControllerClient 19 ) 20 21 BeforeEach(func() { 22 fakeCloudControllerClient = new(v2actionfakes.FakeCloudControllerClient) 23 actor = NewActor(fakeCloudControllerClient, nil, nil) 24 }) 25 26 Describe("GetService", func() { 27 var ( 28 service Service 29 serviceWarnings Warnings 30 serviceErr error 31 ) 32 33 JustBeforeEach(func() { 34 service, serviceWarnings, serviceErr = actor.GetService("some-service-guid") 35 }) 36 37 When("no errors are encountered getting the service", func() { 38 var returnedService ccv2.Service 39 40 BeforeEach(func() { 41 returnedService = ccv2.Service{ 42 GUID: "some-service-guid", 43 Label: "some-service", 44 Description: "some-description", 45 DocumentationURL: "some-url", 46 } 47 fakeCloudControllerClient.GetServiceReturns( 48 returnedService, 49 ccv2.Warnings{"get-service-warning"}, 50 nil) 51 }) 52 53 It("returns the service and all warnings", func() { 54 Expect(serviceErr).ToNot(HaveOccurred()) 55 Expect(service).To(Equal(Service(returnedService))) 56 Expect(serviceWarnings).To(ConsistOf("get-service-warning")) 57 58 Expect(fakeCloudControllerClient.GetServiceCallCount()).To(Equal(1)) 59 Expect(fakeCloudControllerClient.GetServiceArgsForCall(0)).To(Equal("some-service-guid")) 60 }) 61 }) 62 63 When("an error is encountered getting the service", func() { 64 var expectedErr error 65 66 BeforeEach(func() { 67 expectedErr = errors.New("some-error") 68 fakeCloudControllerClient.GetServiceReturns( 69 ccv2.Service{}, 70 ccv2.Warnings{"get-service-warning"}, 71 expectedErr) 72 }) 73 74 It("returns the errors and all warnings", func() { 75 Expect(serviceErr).To(MatchError(expectedErr)) 76 Expect(serviceWarnings).To(ConsistOf("get-service-warning")) 77 78 Expect(fakeCloudControllerClient.GetServiceCallCount()).To(Equal(1)) 79 Expect(fakeCloudControllerClient.GetServiceArgsForCall(0)).To(Equal("some-service-guid")) 80 }) 81 }) 82 }) 83 84 Describe("GetServiceByName", func() { 85 var ( 86 service Service 87 serviceWarnings Warnings 88 serviceErr error 89 ) 90 91 JustBeforeEach(func() { 92 service, serviceWarnings, serviceErr = actor.GetServiceByName("some-service") 93 }) 94 95 When("services are returned from the client", func() { 96 var returnedServices []ccv2.Service 97 98 BeforeEach(func() { 99 returnedServices = []ccv2.Service{ 100 { 101 GUID: "some-service-guid", 102 Label: "some-service", 103 Description: "some-description", 104 DocumentationURL: "some-url", 105 }, 106 } 107 108 fakeCloudControllerClient.GetServicesReturns( 109 returnedServices, 110 ccv2.Warnings{"get-services-warning"}, 111 nil) 112 }) 113 114 It("returns the service and all warnings", func() { 115 Expect(serviceErr).ToNot(HaveOccurred()) 116 Expect(service).To(Equal(Service(returnedServices[0]))) 117 Expect(serviceWarnings).To(ConsistOf("get-services-warning")) 118 119 Expect(fakeCloudControllerClient.GetServicesCallCount()).To(Equal(1)) 120 Expect(fakeCloudControllerClient.GetServicesArgsForCall(0)).To(Equal([]ccv2.Filter{{ 121 Type: constant.LabelFilter, 122 Operator: constant.EqualOperator, 123 Values: []string{"some-service"}, 124 }})) 125 }) 126 }) 127 128 When("there are no services returned by the client", func() { 129 BeforeEach(func() { 130 fakeCloudControllerClient.GetServicesReturns( 131 []ccv2.Service{}, 132 ccv2.Warnings{"get-services-warning"}, 133 nil) 134 }) 135 136 It("returns a ServiceNotFoundError and all warnings", func() { 137 Expect(serviceErr).To(MatchError(actionerror.ServiceNotFoundError{Name: "some-service"})) 138 Expect(serviceWarnings).To(ConsistOf("get-services-warning")) 139 }) 140 }) 141 142 When("the client returns an error", func() { 143 BeforeEach(func() { 144 fakeCloudControllerClient.GetServicesReturns( 145 []ccv2.Service{}, 146 ccv2.Warnings{"get-services-warning"}, 147 errors.New("client-error")) 148 }) 149 150 It("propagates the error and all warnings", func() { 151 Expect(serviceErr).To(MatchError(errors.New("client-error"))) 152 Expect(serviceWarnings).To(ConsistOf("get-services-warning")) 153 }) 154 }) 155 }) 156 })