github.com/sleungcy/cli@v7.1.0+incompatible/api/cloudcontroller/ccv3/ccv3_suite_test.go (about)

     1  package ccv3_test
     2  
     3  import (
     4  	"bytes"
     5  	"log"
     6  	"net/http"
     7  	"strings"
     8  
     9  	. "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
    10  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/ccv3fakes"
    11  	. "github.com/onsi/ginkgo"
    12  	. "github.com/onsi/gomega"
    13  	. "github.com/onsi/gomega/ghttp"
    14  
    15  	"testing"
    16  )
    17  
    18  func TestCcv3(t *testing.T) {
    19  	RegisterFailHandler(Fail)
    20  	RunSpecs(t, "Cloud Controller V3 Suite")
    21  }
    22  
    23  var server *Server
    24  
    25  var _ = BeforeEach(func() {
    26  	server = NewTLSServer()
    27  
    28  	// Suppresses ginkgo server logs
    29  	server.HTTPTestServer.Config.ErrorLog = log.New(&bytes.Buffer{}, "", 0)
    30  })
    31  
    32  var _ = AfterEach(func() {
    33  	server.Close()
    34  })
    35  
    36  func NewFakeRequesterTestClient(requester Requester) (*Client, *ccv3fakes.FakeClock) {
    37  	var client *Client
    38  	fakeClock := new(ccv3fakes.FakeClock)
    39  
    40  	client = TestClient(
    41  		Config{AppName: "CF CLI API V3 Test", AppVersion: "Unknown"},
    42  		fakeClock,
    43  		requester,
    44  	)
    45  
    46  	return client, fakeClock
    47  }
    48  
    49  func NewTestClient(config ...Config) (*Client, *ccv3fakes.FakeClock) {
    50  	SetupV3Response()
    51  	var client *Client
    52  	fakeClock := new(ccv3fakes.FakeClock)
    53  
    54  	if config != nil {
    55  		client = TestClient(config[0], fakeClock, NewRequester(config[0]))
    56  	} else {
    57  		singleConfig := Config{AppName: "CF CLI API V3 Test", AppVersion: "Unknown"}
    58  		client = TestClient(
    59  			singleConfig,
    60  			fakeClock,
    61  			NewRequester(singleConfig),
    62  		)
    63  	}
    64  	_, warnings, err := client.TargetCF(TargetSettings{
    65  		SkipSSLValidation: true,
    66  		URL:               server.URL(),
    67  	})
    68  	Expect(err).ToNot(HaveOccurred())
    69  	Expect(warnings).To(BeEmpty())
    70  
    71  	return client, fakeClock
    72  }
    73  
    74  func SetupV3Response() {
    75  	serverURL := server.URL()
    76  	rootResponse := strings.Replace(`{
    77  		"links": {
    78  			"self": {
    79  				"href": "SERVER_URL"
    80  			},
    81  			"cloud_controller_v2": {
    82  				"href": "SERVER_URL/v2",
    83  				"meta": {
    84  					"version": "2.64.0"
    85  				}
    86  			},
    87  			"cloud_controller_v3": {
    88  				"href": "SERVER_URL/v3",
    89  				"meta": {
    90  					"version": "3.0.0-alpha.5"
    91  				}
    92  			},
    93  			"uaa": {
    94  				"href": "https://uaa.bosh-lite.com"
    95  			}
    96  		}
    97  	}`, "SERVER_URL", serverURL, -1)
    98  
    99  	server.AppendHandlers(
   100  		CombineHandlers(
   101  			VerifyRequest(http.MethodGet, "/"),
   102  			RespondWith(http.StatusOK, rootResponse),
   103  		),
   104  	)
   105  
   106  	v3Response := strings.Replace(`{
   107  		"links": {
   108  			"self": {
   109  				"href": "SERVER_URL/v3"
   110  			},
   111  			"apps": {
   112  				"href": "SERVER_URL/v3/apps"
   113  			},
   114  			"tasks": {
   115  				"href": "SERVER_URL/v3/tasks"
   116  			},
   117  			"isolation_segments": {
   118  				"href": "SERVER_URL/v3/isolation_segments"
   119  			},
   120  			"builds": {
   121  				"href": "SERVER_URL/v3/builds"
   122  			},
   123  			"organizations": {
   124  				"href": "SERVER_URL/v3/organizations"
   125  			},
   126  			"organization_quotas": {
   127  				"href": "SERVER_URL/v3/organization_quotas"
   128  			},
   129  			"security_groups": {
   130  				"href": "SERVER_URL/v3/security_groups"
   131  			},
   132  			"service_brokers": {
   133  				"href": "SERVER_URL/v3/service_brokers"
   134  			},
   135  			"service_instances": {
   136  				"href": "SERVER_URL/v3/service_instances"
   137  			},
   138  			"service_offerings": {
   139  				"href": "SERVER_URL/v3/service_offerings"
   140  			},
   141  			"service_plans": {
   142  				"href": "SERVER_URL/v3/service_plans"
   143  			},
   144  			"spaces": {
   145  				"href": "SERVER_URL/v3/spaces"
   146  			},
   147  			"space_quotas": {
   148  				"href": "SERVER_URL/v3/space_quotas"
   149  			},
   150  			"packages": {
   151  				"href": "SERVER_URL/v3/packages"
   152  			},
   153  			"processes": {
   154  				"href": "SERVER_URL/v3/processes"
   155  			},
   156  			"droplets": {
   157  				"href": "SERVER_URL/v3/droplets"
   158  			},
   159  			"audit_events": {
   160  				"href": "SERVER_URL/v3/audit_events"
   161  			},
   162              "domains": {
   163                "href": "SERVER_URL/v3/domains"
   164              },
   165  			"deployments": {
   166  				"href": "SERVER_URL/v3/deployments"
   167  			},
   168  			"stacks": {
   169  				"href": "SERVER_URL/v3/stacks"
   170  			},
   171  			"buildpacks": {
   172  				"href": "SERVER_URL/v3/buildpacks"
   173  			},
   174  			"feature_flags": {
   175  				"href": "SERVER_URL/v3/feature_flags"
   176  			},
   177  			"resource_matches": {
   178  				"href": "SERVER_URL/v3/resource_matches"
   179  			},
   180              "roles": {
   181                  "href": "SERVER_URL/v3/roles"
   182              },
   183              "routes": {
   184                  "href": "SERVER_URL/v3/routes"
   185              },
   186              "users": {
   187                  "href": "SERVER_URL/v3/users"
   188              },
   189              "environment_variable_groups": {
   190                  "href": "SERVER_URL/v3/environment_variable_groups"
   191              }
   192  		}
   193  	}`, "SERVER_URL", serverURL, -1)
   194  
   195  	server.AppendHandlers(
   196  		CombineHandlers(
   197  			VerifyRequest(http.MethodGet, "/v3"),
   198  			RespondWith(http.StatusOK, v3Response),
   199  		),
   200  	)
   201  }