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  })