예제 #1
0
func TestUpdateBuildpack(t *testing.T) {
	req := testapi.NewCloudControllerTestRequest(testnet.TestRequest{
		Method:  "PUT",
		Path:    "/v2/buildpacks/my-cool-buildpack-guid",
		Matcher: testnet.RequestBodyMatcher(`{"name":"my-cool-buildpack","position":555,"enabled":false}`),
		Response: testnet.TestResponse{
			Status: http.StatusCreated,
			Body: `{
				    "metadata": {
				        "guid": "my-cool-buildpack-guid"
				    },
				    "entity": {
				        "name": "my-cool-buildpack",
						"position":555,
						"enabled":false
				    }
				}`},
	})

	ts, handler, repo := createBuildpackRepo(t, req)
	defer ts.Close()

	position := 555
	enabled := false
	buildpack := cf.Buildpack{}
	buildpack.Name = "my-cool-buildpack"
	buildpack.Guid = "my-cool-buildpack-guid"
	buildpack.Position = &position
	buildpack.Enabled = &enabled
	updated, apiResponse := repo.Update(buildpack)

	assert.True(t, handler.AllRequestsCalled())
	assert.False(t, apiResponse.IsNotSuccessful())

	assert.Equal(t, buildpack, updated)
}
예제 #2
0
func TestBuildpacksListBuildpacks(t *testing.T) {
	firstRequest := 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
			      }
			    }
			  ]
			}`},
	})

	secondRequest := testapi.NewCloudControllerTestRequest(testnet.TestRequest{
		Method: "GET",
		Path:   "/v2/buildpacks?page=2",
		Response: testnet.TestResponse{
			Status: http.StatusOK,
			Body: `{
			  "resources": [
			    {
			      "metadata": {
			        "guid": "buildpack2-guid"
			      },
			      "entity": {
			        "name": "Buildpack2",
					"position" : 2
			      }
			    }
			  ]
			}`},
	})

	ts, handler, repo := createBuildpackRepo(t, firstRequest, secondRequest)
	defer ts.Close()

	stopChan := make(chan bool)
	defer close(stopChan)
	buildpacksChan, statusChan := repo.ListBuildpacks(stopChan)

	one := 1
	buildpack := cf.Buildpack{}
	buildpack.Guid = "buildpack1-guid"
	buildpack.Name = "Buildpack1"
	buildpack.Position = &one

	two := 2
	buildpack2 := cf.Buildpack{}
	buildpack2.Guid = "buildpack2-guid"
	buildpack2.Name = "Buildpack2"
	buildpack2.Position = &two

	expectedBuildpacks := []cf.Buildpack{buildpack, buildpack2}

	buildpacks := []cf.Buildpack{}
	for chunk := range buildpacksChan {
		buildpacks = append(buildpacks, chunk...)
	}
	apiResponse := <-statusChan

	assert.Equal(t, buildpacks, expectedBuildpacks)
	assert.True(t, handler.AllRequestsCalled())
	assert.True(t, apiResponse.IsSuccessful())
}