github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+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  })