github.com/jenspinney/cli@v6.42.1-0.20190207184520-7450c600020e+incompatible/api/cloudcontroller/ccv2/space_summary_test.go (about) 1 package ccv2_test 2 3 import ( 4 "net/http" 5 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 7 . "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 . "github.com/onsi/gomega/ghttp" 11 ) 12 13 var _ = Describe("SpaceSummary", func() { 14 var client *Client 15 16 BeforeEach(func() { 17 client = NewTestClient() 18 }) 19 20 Describe("GetSpaceSummary", func() { 21 var ( 22 spaceSummary SpaceSummary 23 warnings Warnings 24 spaceSummaryError error 25 ) 26 27 JustBeforeEach(func() { 28 spaceSummary, warnings, spaceSummaryError = client.GetSpaceSummary("some-guid") 29 }) 30 31 When("there are no errors", func() { 32 BeforeEach(func() { 33 response := `{ 34 "name": "space-name", 35 "apps": [ 36 { 37 "service_names": [ 38 "service-instance-name" 39 ], 40 "name": "app-name" 41 } 42 ], 43 "services": [ 44 { 45 "name": "service-instance-name", 46 "last_operation": { 47 "type": "create", 48 "state": "succeeded", 49 "description": "a description", 50 "updated_at": "some time", 51 "created_at": "some time" 52 }, 53 "service_plan": { 54 "guid": "plan-guid", 55 "name": "simple-plan", 56 "service": { 57 "guid": "service-guid", 58 "label": "service-label" 59 } 60 } 61 } 62 ] 63 }` 64 server.AppendHandlers( 65 CombineHandlers( 66 VerifyRequest(http.MethodGet, "/v2/spaces/some-guid/summary"), 67 RespondWith(http.StatusOK, response, http.Header{"X-Cf-Warnings": {"warning-1"}}), 68 )) 69 }) 70 71 It("returns the result and all warnings", func() { 72 Expect(spaceSummaryError).NotTo(HaveOccurred()) 73 Expect(warnings).To(ConsistOf("warning-1")) 74 Expect(spaceSummary).To(Equal(SpaceSummary{ 75 Name: "space-name", 76 Applications: []SpaceSummaryApplication{ 77 { 78 Name: "app-name", 79 ServiceNames: []string{"service-instance-name"}, 80 }, 81 }, 82 ServiceInstances: []SpaceSummaryServiceInstance{ 83 { 84 Name: "service-instance-name", 85 ServicePlan: SpaceSummaryServicePlan{ 86 GUID: "plan-guid", 87 Name: "simple-plan", 88 Service: SpaceSummaryService{ 89 GUID: "service-guid", 90 Label: "service-label", 91 }, 92 }, 93 LastOperation: LastOperation{ 94 Type: "create", 95 State: "succeeded", 96 Description: "a description", 97 UpdatedAt: "some time", 98 CreatedAt: "some time", 99 }, 100 }, 101 }, 102 })) 103 }) 104 }) 105 106 When("an error occurs", func() { 107 BeforeEach(func() { 108 response := `{ 109 "code": 10001, 110 "description": "Some Error", 111 "error_code": "CF-SomeError" 112 }` 113 server.AppendHandlers( 114 CombineHandlers( 115 VerifyRequest(http.MethodGet, "/v2/spaces/some-guid/summary"), 116 RespondWith(http.StatusTeapot, response, http.Header{"X-Cf-Warnings": {"warning-1, warning-2"}}), 117 )) 118 }) 119 120 It("returns an error and all warnings", func() { 121 Expect(spaceSummaryError).To(MatchError(ccerror.V2UnexpectedResponseError{ 122 ResponseCode: http.StatusTeapot, 123 V2ErrorResponse: ccerror.V2ErrorResponse{ 124 Code: 10001, 125 Description: "Some Error", 126 ErrorCode: "CF-SomeError", 127 }, 128 })) 129 Expect(warnings).To(ConsistOf("warning-1", "warning-2")) 130 }) 131 }) 132 }) 133 })