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