github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/actor/v2action/service_instance_test.go (about) 1 package v2action_test 2 3 import ( 4 "errors" 5 6 . "code.cloudfoundry.org/cli/actor/v2action" 7 "code.cloudfoundry.org/cli/actor/v2action/v2actionfakes" 8 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 9 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("Service Instance Actions", func() { 15 var ( 16 actor *Actor 17 fakeCloudControllerClient *v2actionfakes.FakeCloudControllerClient 18 ) 19 20 BeforeEach(func() { 21 fakeCloudControllerClient = new(v2actionfakes.FakeCloudControllerClient) 22 actor = NewActor(fakeCloudControllerClient, nil) 23 }) 24 25 Describe("GetServiceInstancesBySpace", func() { 26 Context("when there are service instances", func() { 27 BeforeEach(func() { 28 fakeCloudControllerClient.GetSpaceServiceInstancesReturns( 29 []ccv2.ServiceInstance{ 30 { 31 GUID: "some-service-instance-guid-1", 32 Name: "some-service-instance-1", 33 }, 34 { 35 GUID: "some-service-instance-guid-2", 36 Name: "some-service-instance-2", 37 }, 38 }, 39 ccv2.Warnings{"warning-1", "warning-2"}, 40 nil, 41 ) 42 }) 43 44 It("returns the service instances and warnings", func() { 45 serviceInstances, warnings, err := actor.GetServiceInstancesBySpace("some-space-guid") 46 Expect(err).ToNot(HaveOccurred()) 47 Expect(serviceInstances).To(ConsistOf( 48 ServiceInstance{ 49 GUID: "some-service-instance-guid-1", 50 Name: "some-service-instance-1", 51 }, 52 ServiceInstance{ 53 GUID: "some-service-instance-guid-2", 54 Name: "some-service-instance-2", 55 }, 56 )) 57 Expect(warnings).To(ConsistOf("warning-1", "warning-2")) 58 59 Expect(fakeCloudControllerClient.GetSpaceServiceInstancesCallCount()).To(Equal(1)) 60 61 spaceGUID, includeUserProvidedServices, queries := fakeCloudControllerClient.GetSpaceServiceInstancesArgsForCall(0) 62 Expect(spaceGUID).To(Equal("some-space-guid")) 63 Expect(includeUserProvidedServices).To(BeTrue()) 64 Expect(queries).To(BeNil()) 65 }) 66 }) 67 68 Context("when the cloud controller client returns an error", func() { 69 var expectedError error 70 71 BeforeEach(func() { 72 expectedError = errors.New("I am a CloudControllerClient Error") 73 fakeCloudControllerClient.GetSpaceServiceInstancesReturns( 74 []ccv2.ServiceInstance{}, 75 ccv2.Warnings{"warning-1", "warning-2"}, 76 expectedError) 77 }) 78 79 It("returns the error and warnings", func() { 80 _, warnings, err := actor.GetServiceInstancesBySpace("some-space-guid") 81 Expect(err).To(MatchError(expectedError)) 82 Expect(warnings).To(ConsistOf("warning-1", "warning-2")) 83 }) 84 }) 85 }) 86 87 Describe("GetServiceInstanceByNameAndSpace", func() { 88 Context("when the service instance exists", func() { 89 BeforeEach(func() { 90 fakeCloudControllerClient.GetSpaceServiceInstancesReturns( 91 []ccv2.ServiceInstance{ 92 { 93 GUID: "some-service-instance-guid", 94 Name: "some-service-instance", 95 }, 96 }, 97 ccv2.Warnings{"foo"}, 98 nil, 99 ) 100 }) 101 102 It("returns the service instance and warnings", func() { 103 serviceInstance, warnings, err := actor.GetServiceInstanceByNameAndSpace("some-service-instance", "some-space-guid") 104 Expect(err).ToNot(HaveOccurred()) 105 Expect(serviceInstance).To(Equal(ServiceInstance{ 106 GUID: "some-service-instance-guid", 107 Name: "some-service-instance", 108 })) 109 Expect(warnings).To(Equal(Warnings{"foo"})) 110 111 Expect(fakeCloudControllerClient.GetSpaceServiceInstancesCallCount()).To(Equal(1)) 112 113 spaceGUID, includeUserProvidedServices, queries := fakeCloudControllerClient.GetSpaceServiceInstancesArgsForCall(0) 114 Expect(spaceGUID).To(Equal("some-space-guid")) 115 Expect(includeUserProvidedServices).To(BeTrue()) 116 Expect(queries).To(ConsistOf([]ccv2.Query{ 117 ccv2.Query{ 118 Filter: ccv2.NameFilter, 119 Operator: ccv2.EqualOperator, 120 Value: "some-service-instance", 121 }, 122 })) 123 }) 124 }) 125 126 Context("when the service instance does not exists", func() { 127 BeforeEach(func() { 128 fakeCloudControllerClient.GetSpaceServiceInstancesReturns([]ccv2.ServiceInstance{}, nil, nil) 129 }) 130 131 It("returns a ServiceInstanceNotFoundError", func() { 132 _, _, err := actor.GetServiceInstanceByNameAndSpace("some-service-instance", "some-space-guid") 133 Expect(err).To(MatchError(ServiceInstanceNotFoundError{Name: "some-service-instance"})) 134 }) 135 }) 136 137 Context("when the cloud controller client returns an error", func() { 138 var expectedError error 139 140 BeforeEach(func() { 141 expectedError = errors.New("I am a CloudControllerClient Error") 142 fakeCloudControllerClient.GetSpaceServiceInstancesReturns([]ccv2.ServiceInstance{}, nil, expectedError) 143 }) 144 145 It("returns the error", func() { 146 _, _, err := actor.GetServiceInstanceByNameAndSpace("some-service-instance", "some-space-guid") 147 Expect(err).To(MatchError(expectedError)) 148 }) 149 }) 150 }) 151 })