func createUsersByRoleEndpoints(rolePath string) (ccReqs []testnet.TestRequest, uaaReqs []testnet.TestRequest) { nextUrl := rolePath + "?page=2" ccReqs = []testnet.TestRequest{ testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: rolePath, Response: testnet.TestResponse{ Status: http.StatusOK, Body: fmt.Sprintf(` { "next_url": "%s", "resources": [ {"metadata": {"guid": "user-1-guid"}, "entity": {}} ] }`, nextUrl)}}), testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: nextUrl, Response: testnet.TestResponse{ Status: http.StatusOK, Body: ` { "resources": [ {"metadata": {"guid": "user-2-guid"}, "entity": {"username":"******"}}, {"metadata": {"guid": "user-3-guid"}, "entity": {"username":"******"}} ] }`}}), } uaaReqs = []testnet.TestRequest{ testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: fmt.Sprintf( "/Users?attributes=id,userName&filter=%s", url.QueryEscape(`Id eq "user-1-guid" or Id eq "user-2-guid" or Id eq "user-3-guid"`)), Response: testnet.TestResponse{ Status: http.StatusOK, Body: ` { "resources": [ { "id": "user-1-guid", "userName": "******" }, { "id": "user-2-guid", "userName": "******" }, { "id": "user-3-guid", "userName": "******" } ] }`}})} return }
func deleteSharedDomainReq(statusCode int) testnet.TestRequest { return testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "DELETE", Path: "/v2/shared_domains/my-domain-guid?recursive=true", Response: testnet.TestResponse{Status: statusCode}, }) }
func uploadApplicationRequest(zipCheck func(*zip.Reader)) testnet.TestRequest { return testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "PUT", Path: "/v2/apps/my-cool-app-guid/bits", Matcher: uploadBodyMatcher(zipCheck), Response: testnet.TestResponse{ Status: http.StatusCreated, Body: ` { "metadata":{ "guid": "my-job-guid", "url": "/v2/jobs/my-job-guid" } } `}, }) }
func testSpacesDidNotFindByNameWithOrg(orgGuid string, findByName func(SpaceRepository, string) (models.Space, error)) { request := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: fmt.Sprintf("/v2/organizations/%s/spaces?q=name%%3Aspace1&inline-relations-depth=1", orgGuid), Response: testnet.TestResponse{ Status: http.StatusOK, Body: ` { "resources": [ ] }`, }, }) ts, handler, repo := createSpacesRepo(request) defer ts.Close() _, apiErr := findByName(repo, "Space1") Expect(handler).To(HaveAllRequestsCalled()) Expect(apiErr.(*errors.ModelNotFoundError)).NotTo(BeNil()) }
Describe("Error getting required info to run ssh", func() { var ( testServer *httptest.Server handler *testnet.TestHandler ) AfterEach(func() { testServer.Close() }) Context("error when getting SSH info from /v2/info", func() { BeforeEach(func() { getRequest := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/info", Response: testnet.TestResponse{ Status: http.StatusNotFound, Body: `{}`, }, }) testServer, handler = testnet.NewServer([]testnet.TestRequest{getRequest}) configRepo.SetApiEndpoint(testServer.URL) ccGateway = net.NewCloudControllerGateway(configRepo, time.Now, &testterm.FakeUI{}) deps.Gateways["cloud-controller"] = ccGateway }) It("notifies users", func() { runCommand("my-app") Expect(handler).To(HaveAllRequestsCalled()) Ω(ui.Outputs).To(ContainSubstrings(
}) AfterEach(func() { testServer.Close() }) setupTestServer := func(reqs ...testnet.TestRequest) { testServer, testHandler = testnet.NewServer(reqs) configRepo.SetApiEndpoint(testServer.URL) } Describe(".Create", func() { BeforeEach(func() { setupTestServer(testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "POST", Path: "/v2/service_plan_visibilities", Matcher: testnet.RequestBodyMatcher(`{"service_plan_guid":"service_plan_guid", "organization_guid":"org_guid"}`), Response: testnet.TestResponse{Status: http.StatusCreated}, })) }) It("creates a service plan visibility", func() { err := repo.Create("service_plan_guid", "org_guid") Expect(testHandler).To(HaveAllRequestsCalled()) Expect(err).NotTo(HaveOccurred()) }) }) Describe(".List", func() { BeforeEach(func() { setupTestServer(firstPlanVisibilityRequest, secondPlanVisibilityRequest)
) var _ = Describe("Service Brokers Repo", func() { It("lists services brokers", func() { firstRequest := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/service_brokers", Response: testnet.TestResponse{ Status: http.StatusOK, Body: `{ "next_url": "/v2/service_brokers?page=2", "resources": [ { "metadata": { "guid":"found-guid-1" }, "entity": { "name": "found-name-1", "broker_url": "http://found.example.com-1", "auth_username": "******", "auth_password": "******" } } ] }`, }, }) secondRequest := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/service_brokers?page=2",
AfterEach(func() { testServer.Close() }) setupTestServer := func(reqs ...testnet.TestRequest) { testServer, testHandler = testnet.NewServer(reqs) configRepo.SetApiEndpoint(testServer.URL) } Describe(".Create", func() { It("can create an app security group, given some attributes", func() { req := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "POST", Path: "/v2/security_groups", // FIXME: this matcher depend on the order of the key/value pairs in the map Matcher: testnet.RequestBodyMatcher(`{ "name": "mygroup", "rules": [{"my-house": "my-rules"}] }`), Response: testnet.TestResponse{Status: http.StatusCreated}, }) setupTestServer(req) err := repo.Create( "mygroup", []map[string]interface{}{{"my-house": "my-rules"}}, ) Expect(err).NotTo(HaveOccurred()) Expect(testHandler).To(HaveAllRequestsCalled()) }) })
Expect(servicePlansFields[0].Public).To(BeTrue()) Expect(servicePlansFields[0].Active).To(BeTrue()) Expect(servicePlansFields[1].Name).To(Equal("The small second")) Expect(servicePlansFields[1].Guid).To(Equal("the-small-second")) Expect(servicePlansFields[1].Free).To(BeTrue()) Expect(servicePlansFields[1].Public).To(BeFalse()) Expect(servicePlansFields[1].Active).To(BeFalse()) }) }) }) Describe(".Update", func() { BeforeEach(func() { setupTestServer(testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "PUT", Path: "/v2/service_plans/my-service-plan-guid", Matcher: testnet.RequestBodyMatcher(`{"public":true}`), Response: testnet.TestResponse{Status: http.StatusCreated}, })) }) It("updates public on the service to whatever is passed", func() { servicePlan := models.ServicePlanFields{ Name: "my-service-plan", Guid: "my-service-plan-guid", Description: "descriptive text", Free: true, Public: false, } err := repo.Update(servicePlan, "service-guid", true) Expect(testHandler).To(HaveAllRequestsCalled())
}) var appStatsRequest = testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/apps/my-cool-app-guid/stats", Response: testnet.TestResponse{Status: http.StatusOK, Body: ` { "1":{ "stats": { "disk_quota": 10000, "mem_quota": 1024, "usage": { "cpu": 0.3, "disk": 10000, "mem": 1024 } } }, "0":{ "stats": { "disk_quota": 1073741824, "mem_quota": 67108864, "usage": { "cpu": 3.659571249238058e-05, "disk": 56037376, "mem": 19218432 } } } }`}}) var appInstancesRequest = testapi.NewCloudControllerTestRequest(testnet.TestRequest{
func testSpacesFindByNameWithOrg(orgGuid string, findByName func(SpaceRepository, string) (models.Space, error)) { findSpaceByNameResponse := testnet.TestResponse{ Status: http.StatusOK, Body: ` { "resources": [ { "metadata": { "guid": "space1-guid" }, "entity": { "name": "Space1", "organization_guid": "org1-guid", "organization": { "metadata": { "guid": "org1-guid" }, "entity": { "name": "Org1" } }, "apps": [ { "metadata": { "guid": "app1-guid" }, "entity": { "name": "app1" } }, { "metadata": { "guid": "app2-guid" }, "entity": { "name": "app2" } } ], "domains": [ { "metadata": { "guid": "domain1-guid" }, "entity": { "name": "domain1" } } ], "service_instances": [ { "metadata": { "guid": "service1-guid" }, "entity": { "name": "service1" } } ] } } ] }`} request := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: fmt.Sprintf("/v2/organizations/%s/spaces?q=name%%3Aspace1&inline-relations-depth=1", orgGuid), Response: findSpaceByNameResponse, }) ts, handler, repo := createSpacesRepo(request) defer ts.Close() space, apiErr := findByName(repo, "Space1") Expect(handler).To(HaveAllRequestsCalled()) Expect(apiErr).NotTo(HaveOccurred()) Expect(space.Name).To(Equal("Space1")) Expect(space.Guid).To(Equal("space1-guid")) Expect(space.Organization.Guid).To(Equal("org1-guid")) Expect(len(space.Applications)).To(Equal(2)) Expect(space.Applications[0].Guid).To(Equal("app1-guid")) Expect(space.Applications[1].Guid).To(Equal("app2-guid")) Expect(len(space.Domains)).To(Equal(1)) Expect(space.Domains[0].Guid).To(Equal("domain1-guid")) Expect(len(space.ServiceInstances)).To(Equal(1)) Expect(space.ServiceInstances[0].Guid).To(Equal("service1-guid")) Expect(apiErr).NotTo(HaveOccurred()) return }
"guid": "service-offering-guid", "label": "cleardb", "provider": "cleardb-provider", "version": "n/a" } } } ] }`, } }) It("gets a summary of services in the given space", func() { req := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/spaces/my-space-guid/summary", Response: serviceInstanceSummariesResponse, }) ts, handler, repo := createServiceSummaryRepo(req) defer ts.Close() serviceInstances, apiErr := repo.GetSummariesInCurrentSpace() Expect(handler).To(HaveAllRequestsCalled()) Expect(apiErr).NotTo(HaveOccurred()) Expect(1).To(Equal(len(serviceInstances))) instance1 := serviceInstances[0] Expect(instance1.Name).To(Equal("my-service-instance")) Expect(instance1.LastOperation.Type).To(Equal("create"))
gateway := net.NewCloudControllerGateway(configRepo, time.Now, &testterm.FakeUI{}) repo = NewCloudControllerServiceRepository(configRepo, gateway) }) AfterEach(func() { if testServer != nil { testServer.Close() } }) Describe("GetAllServiceOfferings", func() { BeforeEach(func() { setupTestServer( testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/services", Response: firstOfferingsResponse, }), testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/services", Response: multipleOfferingsResponse, }), ) }) It("gets all public service offerings", func() { offerings, err := repo.GetAllServiceOfferings() Expect(testHandler).To(HaveAllRequestsCalled()) Expect(err).NotTo(HaveOccurred())
"github.com/cloudfoundry/cli/cf/models" "github.com/cloudfoundry/cli/cf/net" testconfig "github.com/cloudfoundry/cli/testhelpers/configuration" testnet "github.com/cloudfoundry/cli/testhelpers/net" . "github.com/cloudfoundry/cli/cf/api" . "github.com/cloudfoundry/cli/testhelpers/matchers" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("UserProvidedServiceRepository", func() { It("creates a user provided service with a name and credentials", func() { req := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "POST", Path: "/v2/user_provided_service_instances", Matcher: testnet.RequestBodyMatcher(`{"name":"my-custom-service","credentials":{"host":"example.com","password":"******","user":"******"},"space_guid":"my-space-guid","syslog_drain_url":""}`), Response: testnet.TestResponse{Status: http.StatusCreated}, }) ts, handler, repo := createUserProvidedServiceInstanceRepo(req) defer ts.Close() apiErr := repo.Create("my-custom-service", "", map[string]interface{}{ "host": "example.com", "user": "******", "password": "******", }) Expect(handler).To(HaveAllRequestsCalled()) Expect(apiErr).NotTo(HaveOccurred()) })
AfterEach(func() { testServer.Close() }) setupTestServer := func(reqs ...testnet.TestRequest) { testServer, testHandler = testnet.NewServer(reqs) configRepo.SetApiEndpoint(testServer.URL) } Describe(".BindSpace", func() { It("associates the security group with the space", func() { setupTestServer( testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "PUT", Path: "/v2/security_groups/this-is-a-security-group-guid/spaces/yes-its-a-space-guid", Response: testnet.TestResponse{ Status: http.StatusCreated, Body: ` { "metadata": {"guid": "fb6fdf81-ce1b-448f-ada9-09bbb8807812"}, "entity": {"name": "dummy1", "rules": [] } }`, }, })) err := repo.BindSpace("this-is-a-security-group-guid", "yes-its-a-space-guid") Expect(err).ToNot(HaveOccurred()) Expect(testHandler).To(HaveAllRequestsCalled()) }) }) Describe(".UnbindSpace", func() { It("removes the associated security group from the space", func() {
. "github.com/onsi/gomega" ) var _ = Describe("CloudControllerCurlRepository ", func() { var ( headers string body string apiErr error ) Describe("GET requests", func() { BeforeEach(func() { req := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/endpoint", Response: testnet.TestResponse{ Status: http.StatusOK, Body: expectedJSONResponse}, }) ts, handler := testnet.NewServer([]testnet.TestRequest{req}) defer ts.Close() deps := newCurlDependencies() deps.config.SetApiEndpoint(ts.URL) repo := NewCloudControllerCurlRepository(deps.config, deps.gateway) headers, body, apiErr = repo.Request("GET", "/v2/endpoint", "", "") Expect(handler).To(HaveAllRequestsCalled()) Expect(apiErr).NotTo(HaveOccurred()) })
config.SetApiEndpoint(ccServer.URL) } setupUAAServer := func(requests ...testnet.TestRequest) { uaaServer, uaaHandler = testnet.NewServer(requests) config.SetUaaEndpoint(uaaServer.URL) } Describe("listing the users with a given role using ListUsersInOrgForRole()", func() { Context("when there are no users in the given org", func() { It("lists the users in a org with a given role", func() { ccReqs := []testnet.TestRequest{ testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/organizations/my-org-guid/managers", Response: testnet.TestResponse{ Status: http.StatusOK, Body: `{"resources": []}`, }}), } setupCCServer(ccReqs...) users, apiErr := repo.ListUsersInOrgForRole("my-org-guid", models.ORG_MANAGER) Expect(ccHandler).To(HaveAllRequestsCalled()) Expect(apiErr).NotTo(HaveOccurred()) Expect(len(users)).To(Equal(0)) }) })
var featureFlagsGetAllRequest = testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/config/feature_flags", Response: testnet.TestResponse{ Status: http.StatusOK, Body: `[ { "name": "user_org_creation", "enabled": false, "error_message": null, "url": "/v2/config/feature_flags/user_org_creation" }, { "name": "private_domain_creation", "enabled": false, "error_message": "foobar", "url": "/v2/config/feature_flags/private_domain_creation" }, { "name": "app_bits_upload", "enabled": true, "error_message": null, "url": "/v2/config/feature_flags/app_bits_upload" }, { "name": "app_scaling", "enabled": true, "error_message": null, "url": "/v2/config/feature_flags/app_scaling" }, { "name": "route_creation", "enabled": true, "error_message": null, "url": "/v2/config/feature_flags/route_creation" } ]`, }, })
. "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Space Repository", func() { It("lists all the spaces", func() { firstPageSpacesRequest := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/organizations/my-org-guid/spaces", Response: testnet.TestResponse{ Status: http.StatusOK, Body: ` { "next_url": "/v2/organizations/my-org-guid/spaces?page=2", "resources": [ { "metadata": { "guid": "acceptance-space-guid" }, "entity": { "name": "acceptance" } } ] }`}}) secondPageSpacesRequest := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/organizations/my-org-guid/spaces?page=2", Response: testnet.TestResponse{ Status: http.StatusOK,
. "github.com/onsi/gomega" ) var _ = Describe("AppSummaryRepository", func() { var ( testServer *httptest.Server handler *testnet.TestHandler repo AppSummaryRepository ) Describe("GetSummariesInCurrentSpace()", func() { BeforeEach(func() { getAppSummariesRequest := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/spaces/my-space-guid/summary", Response: testnet.TestResponse{ Status: http.StatusOK, Body: getAppSummariesResponseBody, }, }) testServer, handler = testnet.NewServer([]testnet.TestRequest{getAppSummariesRequest}) configRepo := testconfig.NewRepositoryWithDefaults() configRepo.SetApiEndpoint(testServer.URL) gateway := net.NewCloudControllerGateway(configRepo, time.Now, &testterm.FakeUI{}) repo = NewCloudControllerAppSummaryRepository(configRepo, gateway) }) AfterEach(func() { testServer.Close() })
Expect(reportedFilePath).To(Equal(appPath)) Expect(reportedFileCount).To(Equal(int64(len(expectedApplicationContent)))) Expect(reportedUploadSize).To(Equal(int64(532))) }) It("returns a failure when uploading bits fails", func() { apiErr := testUploadApp(appPath, []testnet.TestRequest{ matchResourceRequest, testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "PUT", Path: "/v2/apps/my-cool-app-guid/bits", Matcher: uploadBodyMatcher(defaultZipCheck), Response: testnet.TestResponse{ Status: http.StatusCreated, Body: ` { "metadata":{ "guid": "my-job-guid", "url": "/v2/jobs/my-job-guid" } }`, }}), createProgressEndpoint("running"), createProgressEndpoint("failed"), }...) Expect(apiErr).To(HaveOccurred()) }) Context("when there are no files to upload", func() { It("makes a request without a zipfile", func() {
configRepo.SetApiEndpoint(testServer.URL) } BeforeEach(func() { configRepo = testconfig.NewRepositoryWithDefaults() configRepo.SetAccessToken("BEARER my_access_token") gateway := net.NewCloudControllerGateway(configRepo, time.Now, &testterm.FakeUI{}) repo = NewCloudControllerServiceKeyRepository(configRepo, gateway) }) Describe("CreateServiceKey", func() { It("makes the right request", func() { setupTestServer(testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "POST", Path: "/v2/service_keys", Matcher: testnet.RequestBodyMatcher(`{"service_instance_guid": "fake-instance-guid", "name": "fake-key-name"}`), Response: testnet.TestResponse{Status: http.StatusCreated}, })) err := repo.CreateServiceKey("fake-instance-guid", "fake-key-name", nil) Expect(testHandler).To(HaveAllRequestsCalled()) Expect(err).NotTo(HaveOccurred()) }) It("returns a ModelAlreadyExistsError if the service key exists", func() { setupTestServer(testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "POST", Path: "/v2/service_keys", Matcher: testnet.RequestBodyMatcher(`{"service_instance_guid":"fake-instance-guid","name":"exist-service-key"}`), Response: testnet.TestResponse{ Status: http.StatusBadRequest,
OrgGuid: "my-org-guid", })) }) It("Returns an error if the quota cannot be found", func() { _, err := repo.FindByGuid("totally-not-a-quota-guid") Expect(testHandler).To(HaveAllRequestsCalled()) Expect(err.(*errors.ModelNotFoundError)).NotTo(BeNil()) }) }) Describe("AssociateSpaceWithQuota", func() { It("sets the quota for a space", func() { req := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "PUT", Path: "/v2/space_quota_definitions/my-quota-guid/spaces/my-space-guid", Response: testnet.TestResponse{Status: http.StatusCreated}, }) setupTestServer(req) err := repo.AssociateSpaceWithQuota("my-space-guid", "my-quota-guid") Expect(testHandler).To(HaveAllRequestsCalled()) Expect(err).NotTo(HaveOccurred()) }) }) Describe("UnassignQuotaFromSpace", func() { It("deletes the association between the quota and the space", func() { req := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "DELETE",
ts, handler = testnet.NewServer(requests) config.SetApiEndpoint(ts.URL) } It("lists buildpacks", func() { setupTestServer( testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/buildpacks", Response: testnet.TestResponse{ Status: http.StatusOK, Body: `{ "next_url": "/v2/buildpacks?page=2", "resources": [ { "metadata": { "guid": "buildpack1-guid" }, "entity": { "name": "Buildpack1", "position" : 1, "filename" : "firstbp.zip" } } ] }`}}), testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/buildpacks?page=2", Response: testnet.TestResponse{ Status: http.StatusOK, Body: `{
AfterEach(func() { testServer.Close() }) setupTestServer := func(reqs ...testnet.TestRequest) { testServer, testHandler = testnet.NewServer(reqs) configRepo.SetApiEndpoint(testServer.URL) } Describe("AddToDefaultStagingSet", func() { It("makes a correct request", func() { setupTestServer( testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "PUT", Path: "/v2/config/staging_security_groups/a-real-guid", Response: testnet.TestResponse{ Status: http.StatusCreated, Body: addStagingResponse, }, }), ) err := repo.AddToDefaultStagingSet("a-real-guid") Expect(err).ToNot(HaveOccurred()) Expect(testHandler).To(HaveAllRequestsCalled()) }) }) Describe(".List", func() { It("returns a list of security groups that are the defaults for staging", func() { setupTestServer(
BeforeEach(func() { configRepo = testconfig.NewRepositoryWithDefaults() gateway := net.NewCloudControllerGateway(configRepo, time.Now, &testterm.FakeUI{}) repo = NewCloudControllerServiceAuthTokenRepository(configRepo, gateway) }) AfterEach(func() { testServer.Close() }) Describe("Create", func() { It("creates a service auth token", func() { setupTestServer(testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "POST", Path: "/v2/service_auth_tokens", Matcher: testnet.RequestBodyMatcher(`{"label":"a label","provider":"a provider","token":"a token"}`), Response: testnet.TestResponse{Status: http.StatusCreated}, })) err := repo.Create(models.ServiceAuthTokenFields{ Label: "a label", Provider: "a provider", Token: "a token", }) Expect(testHandler).To(HaveAllRequestsCalled()) Expect(err).NotTo(HaveOccurred()) }) }) Describe("FindAll", func() {
app, apiErr := repo.Read("My App") Expect(handler).To(HaveAllRequestsCalled()) Expect(apiErr).NotTo(HaveOccurred()) Expect(app.Name).To(Equal("My App")) Expect(app.Guid).To(Equal("app1-guid")) Expect(app.Memory).To(Equal(int64(128))) Expect(app.DiskQuota).To(Equal(int64(512))) Expect(app.InstanceCount).To(Equal(1)) Expect(app.EnvironmentVars).To(Equal(map[string]interface{}{"foo": "bar", "baz": "boom"})) Expect(app.Routes[0].Host).To(Equal("app1")) Expect(app.Routes[0].Domain.Name).To(Equal("cfapps.io")) Expect(app.Stack.Name).To(Equal("awesome-stacks-ahoy")) }) It("returns a failure response when the app is not found", func() { request := testapi.NewCloudControllerTestRequest(findAppRequest) request.Response = testnet.TestResponse{Status: http.StatusOK, Body: `{"resources": []}`} ts, handler, repo := createAppRepo([]testnet.TestRequest{request}) defer ts.Close() _, apiErr := repo.Read("My App") Expect(handler).To(HaveAllRequestsCalled()) Expect(apiErr.(*errors.ModelNotFoundError)).NotTo(BeNil()) }) }) Describe(".GetApp", func() { It("returns an application using the given app guid", func() { request := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET",
BeforeEach(func() { configRepo = testconfig.NewRepositoryWithDefaults() gateway := net.NewCloudControllerGateway(configRepo, time.Now, &testterm.FakeUI{}) repo = NewCloudControllerCopyApplicationSourceRepository(configRepo, gateway) }) AfterEach(func() { testServer.Close() }) Describe(".CopyApplication", func() { BeforeEach(func() { setupTestServer(testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "POST", Path: "/v2/apps/target-app-guid/copy_bits", Matcher: testnet.RequestBodyMatcher(`{ "source_app_guid": "source-app-guid" }`), Response: testnet.TestResponse{ Status: http.StatusCreated, }, })) }) It("should return a CopyApplicationModel", func() { err := repo.CopyApplication("source-app-guid", "target-app-guid") Expect(err).ToNot(HaveOccurred()) }) }) })
Name: "the-space-name", }) gateway := net.NewCloudControllerGateway((configRepo), time.Now) repo = NewCloudControllerRouteRepository(configRepo, gateway) }) AfterEach(func() { ts.Close() }) Describe("List routes", func() { It("lists routes in the current space", func() { ts, handler = testnet.NewServer([]testnet.TestRequest{ testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/spaces/the-space-guid/routes?inline-relations-depth=1", Response: firstPageRoutesResponse, }), testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/spaces/the-space-guid/routes?inline-relations-depth=1&page=2", Response: secondPageRoutesResponse, }), }) configRepo.SetApiEndpoint(ts.URL) routes := []models.Route{} apiErr := repo.ListRoutes(func(route models.Route) bool { routes = append(routes, route) return true })
. "github.com/cloudfoundry/cli/testhelpers/matchers" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Organization Repository", func() { Describe("listing organizations", func() { It("lists the orgs from the the /v2/orgs endpoint", func() { firstPageOrgsRequest := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/organizations", Response: testnet.TestResponse{Status: http.StatusOK, Body: `{ "next_url": "/v2/organizations?page=2", "resources": [ { "metadata": { "guid": "org1-guid" }, "entity": { "name": "Org1" } }, { "metadata": { "guid": "org2-guid" }, "entity": { "name": "Org2" } } ]}`}, }) secondPageOrgsRequest := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/organizations?page=2", Response: testnet.TestResponse{Status: http.StatusOK, Body: `{"resources": [ { "metadata": { "guid": "org3-guid" }, "entity": { "name": "Org3" }