github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/api/cloudcontroller/ccv2/service_instance_test.go (about) 1 package ccv2_test 2 3 import ( 4 "net/http" 5 6 . "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 . "github.com/onsi/gomega/ghttp" 10 ) 11 12 var _ = Describe("Service Instance", func() { 13 var client *Client 14 15 BeforeEach(func() { 16 client = NewTestClient() 17 }) 18 19 Describe("ServiceInstance", func() { 20 Describe("UserProvided", func() { 21 Context("when type is USER_PROVIDED_SERVICE", func() { 22 It("returns true", func() { 23 service := ServiceInstance{Type: UserProvidedService} 24 Expect(service.UserProvided()).To(BeTrue()) 25 }) 26 }) 27 28 Context("when type is MANAGED_SERVICE", func() { 29 It("returns false", func() { 30 service := ServiceInstance{Type: ManagedService} 31 Expect(service.UserProvided()).To(BeFalse()) 32 }) 33 }) 34 }) 35 36 Describe("Managed", func() { 37 Context("when type is MANAGED_SERVICE", func() { 38 It("returns false", func() { 39 service := ServiceInstance{Type: ManagedService} 40 Expect(service.Managed()).To(BeTrue()) 41 }) 42 }) 43 44 Context("when type is USER_PROVIDED_SERVICE", func() { 45 It("returns true", func() { 46 service := ServiceInstance{Type: UserProvidedService} 47 Expect(service.Managed()).To(BeFalse()) 48 }) 49 }) 50 }) 51 }) 52 53 Describe("GetServiceInstances", func() { 54 BeforeEach(func() { 55 response1 := `{ 56 "next_url": "/v2/service_instances?q=space_guid:some-space-guid&page=2", 57 "resources": [ 58 { 59 "metadata": { 60 "guid": "some-service-guid-1" 61 }, 62 "entity": { 63 "name": "some-service-name-1", 64 "type": "managed_service_instance" 65 } 66 }, 67 { 68 "metadata": { 69 "guid": "some-service-guid-2" 70 }, 71 "entity": { 72 "name": "some-service-name-2", 73 "type": "managed_service_instance" 74 } 75 } 76 ] 77 }` 78 79 response2 := `{ 80 "next_url": null, 81 "resources": [ 82 { 83 "metadata": { 84 "guid": "some-service-guid-3" 85 }, 86 "entity": { 87 "name": "some-service-name-3", 88 "type": "managed_service_instance" 89 } 90 }, 91 { 92 "metadata": { 93 "guid": "some-service-guid-4" 94 }, 95 "entity": { 96 "name": "some-service-name-4", 97 "type": "managed_service_instance" 98 } 99 } 100 ] 101 }` 102 103 server.AppendHandlers( 104 CombineHandlers( 105 VerifyRequest(http.MethodGet, "/v2/service_instances", "q=space_guid:some-space-guid"), 106 RespondWith(http.StatusOK, response1, http.Header{"X-Cf-Warnings": {"this is a warning"}}), 107 ), 108 ) 109 110 server.AppendHandlers( 111 CombineHandlers( 112 VerifyRequest(http.MethodGet, "/v2/service_instances", "q=space_guid:some-space-guid&page=2"), 113 RespondWith(http.StatusOK, response2, http.Header{"X-Cf-Warnings": {"this is another warning"}}), 114 ), 115 ) 116 }) 117 118 Context("when service instances exist", func() { 119 It("returns all the queried service instances", func() { 120 serviceInstances, warnings, err := client.GetServiceInstances([]Query{{ 121 Filter: SpaceGUIDFilter, 122 Operator: EqualOperator, 123 Value: "some-space-guid", 124 }}) 125 Expect(err).NotTo(HaveOccurred()) 126 127 Expect(serviceInstances).To(ConsistOf([]ServiceInstance{ 128 {Name: "some-service-name-1", GUID: "some-service-guid-1", Type: ManagedService}, 129 {Name: "some-service-name-2", GUID: "some-service-guid-2", Type: ManagedService}, 130 {Name: "some-service-name-3", GUID: "some-service-guid-3", Type: ManagedService}, 131 {Name: "some-service-name-4", GUID: "some-service-guid-4", Type: ManagedService}, 132 })) 133 Expect(warnings).To(ConsistOf(Warnings{"this is a warning", "this is another warning"})) 134 }) 135 }) 136 }) 137 138 Describe("GetSpaceServiceInstances", func() { 139 Context("including user provided services", func() { 140 BeforeEach(func() { 141 response1 := `{ 142 "next_url": "/v2/spaces/some-space-guid/service_instances?return_user_provided_service_instances=true&q=name:foobar&page=2", 143 "resources": [ 144 { 145 "metadata": { 146 "guid": "some-service-guid-1" 147 }, 148 "entity": { 149 "name": "some-service-name-1", 150 "type": "managed_service_instance" 151 } 152 }, 153 { 154 "metadata": { 155 "guid": "some-service-guid-2" 156 }, 157 "entity": { 158 "name": "some-service-name-2", 159 "type": "user_provided_service_instance" 160 } 161 } 162 ] 163 }` 164 165 response2 := `{ 166 "next_url": null, 167 "resources": [ 168 { 169 "metadata": { 170 "guid": "some-service-guid-3" 171 }, 172 "entity": { 173 "name": "some-service-name-3", 174 "type": "managed_service_instance" 175 } 176 }, 177 { 178 "metadata": { 179 "guid": "some-service-guid-4" 180 }, 181 "entity": { 182 "name": "some-service-name-4", 183 "type": "user_provided_service_instance" 184 } 185 } 186 ] 187 }` 188 189 server.AppendHandlers( 190 CombineHandlers( 191 VerifyRequest(http.MethodGet, "/v2/spaces/some-space-guid/service_instances", "return_user_provided_service_instances=true&q=name:foobar"), 192 RespondWith(http.StatusOK, response1, http.Header{"X-Cf-Warnings": {"this is a warning"}}), 193 ), 194 ) 195 196 server.AppendHandlers( 197 CombineHandlers( 198 VerifyRequest(http.MethodGet, "/v2/spaces/some-space-guid/service_instances", "return_user_provided_service_instances=true&q=name:foobar&page=2"), 199 RespondWith(http.StatusOK, response2, http.Header{"X-Cf-Warnings": {"this is another warning"}}), 200 ), 201 ) 202 }) 203 204 Context("when service instances exist", func() { 205 It("returns all the queried service instances", func() { 206 serviceInstances, warnings, err := client.GetSpaceServiceInstances("some-space-guid", true, []Query{{ 207 Filter: NameFilter, 208 Operator: EqualOperator, 209 Value: "foobar", 210 }}) 211 Expect(err).NotTo(HaveOccurred()) 212 213 Expect(serviceInstances).To(ConsistOf([]ServiceInstance{ 214 {Name: "some-service-name-1", GUID: "some-service-guid-1", Type: ManagedService}, 215 {Name: "some-service-name-2", GUID: "some-service-guid-2", Type: UserProvidedService}, 216 {Name: "some-service-name-3", GUID: "some-service-guid-3", Type: ManagedService}, 217 {Name: "some-service-name-4", GUID: "some-service-guid-4", Type: UserProvidedService}, 218 })) 219 Expect(warnings).To(ConsistOf(Warnings{"this is a warning", "this is another warning"})) 220 }) 221 }) 222 }) 223 224 Context("excluding user provided services", func() { 225 BeforeEach(func() { 226 response := `{ 227 "next_url": null, 228 "resources": [ 229 { 230 "metadata": { 231 "guid": "some-service-guid-1" 232 }, 233 "entity": { 234 "name": "some-service-name-1", 235 "type": "managed_service_instance" 236 } 237 }, 238 { 239 "metadata": { 240 "guid": "some-service-guid-2" 241 }, 242 "entity": { 243 "name": "some-service-name-2", 244 "type": "managed_service_instance" 245 } 246 } 247 ] 248 }` 249 250 server.AppendHandlers( 251 CombineHandlers( 252 VerifyRequest(http.MethodGet, "/v2/spaces/some-space-guid/service_instances", "q=name:foobar"), 253 RespondWith(http.StatusOK, response, http.Header{"X-Cf-Warnings": {"this is a warning"}}), 254 ), 255 ) 256 }) 257 258 Context("when service instances exist", func() { 259 It("returns all the queried service instances", func() { 260 serviceInstances, warnings, err := client.GetSpaceServiceInstances("some-space-guid", false, []Query{{ 261 Filter: NameFilter, 262 Operator: EqualOperator, 263 Value: "foobar", 264 }}) 265 Expect(err).NotTo(HaveOccurred()) 266 267 Expect(serviceInstances).To(ConsistOf([]ServiceInstance{ 268 {Name: "some-service-name-1", GUID: "some-service-guid-1", Type: ManagedService}, 269 {Name: "some-service-name-2", GUID: "some-service-guid-2", Type: ManagedService}, 270 })) 271 Expect(warnings).To(ConsistOf(Warnings{"this is a warning"})) 272 }) 273 }) 274 }) 275 }) 276 })