github.com/swisscom/cloudfoundry-cli@v7.1.0+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 "maintenance_info": { 54 "version": "2.0.0" 55 }, 56 "service_plan": { 57 "guid": "plan-guid", 58 "name": "simple-plan", 59 "maintenance_info": { 60 "version": "3.0.0" 61 }, 62 "service": { 63 "guid": "service-guid", 64 "label": "service-label" 65 } 66 } 67 } 68 ] 69 }` 70 server.AppendHandlers( 71 CombineHandlers( 72 VerifyRequest(http.MethodGet, "/v2/spaces/some-guid/summary"), 73 RespondWith(http.StatusOK, response, http.Header{"X-Cf-Warnings": {"warning-1"}}), 74 )) 75 }) 76 77 It("returns the result and all warnings", func() { 78 Expect(spaceSummaryError).NotTo(HaveOccurred()) 79 Expect(warnings).To(ConsistOf("warning-1")) 80 Expect(spaceSummary).To(Equal(SpaceSummary{ 81 Name: "space-name", 82 Applications: []SpaceSummaryApplication{ 83 { 84 Name: "app-name", 85 ServiceNames: []string{"service-instance-name"}, 86 }, 87 }, 88 ServiceInstances: []SpaceSummaryServiceInstance{ 89 { 90 Name: "service-instance-name", 91 MaintenanceInfo: MaintenanceInfo{ 92 Version: "2.0.0", 93 }, 94 ServicePlan: SpaceSummaryServicePlan{ 95 GUID: "plan-guid", 96 Name: "simple-plan", 97 MaintenanceInfo: MaintenanceInfo{ 98 Version: "3.0.0", 99 }, 100 Service: SpaceSummaryService{ 101 GUID: "service-guid", 102 Label: "service-label", 103 }, 104 }, 105 LastOperation: LastOperation{ 106 Type: "create", 107 State: "succeeded", 108 Description: "a description", 109 UpdatedAt: "some time", 110 CreatedAt: "some time", 111 }, 112 }, 113 }, 114 })) 115 }) 116 }) 117 118 When("an error occurs", func() { 119 BeforeEach(func() { 120 response := `{ 121 "code": 10001, 122 "description": "Some Error", 123 "error_code": "CF-SomeError" 124 }` 125 server.AppendHandlers( 126 CombineHandlers( 127 VerifyRequest(http.MethodGet, "/v2/spaces/some-guid/summary"), 128 RespondWith(http.StatusTeapot, response, http.Header{"X-Cf-Warnings": {"warning-1, warning-2"}}), 129 )) 130 }) 131 132 It("returns an error and all warnings", func() { 133 Expect(spaceSummaryError).To(MatchError(ccerror.V2UnexpectedResponseError{ 134 ResponseCode: http.StatusTeapot, 135 V2ErrorResponse: ccerror.V2ErrorResponse{ 136 Code: 10001, 137 Description: "Some Error", 138 ErrorCode: "CF-SomeError", 139 }, 140 })) 141 Expect(warnings).To(ConsistOf("warning-1", "warning-2")) 142 }) 143 }) 144 }) 145 })