| package buildbucket |
| |
| import ( |
| "encoding/json" |
| "testing" |
| |
| "github.com/gorilla/mux" |
| assert "github.com/stretchr/testify/require" |
| "go.skia.org/infra/go/httputils" |
| "go.skia.org/infra/go/mockhttpclient" |
| "go.skia.org/infra/go/testutils" |
| ) |
| |
| func TestGetTrybotsForCL(t *testing.T) { |
| testutils.MediumTest(t) |
| |
| client := NewClient(httputils.NewTimeoutClient()) |
| tries, err := client.GetTrybotsForCL(183562, 1, "gerrit", "https://skia-review.googlesource.com") |
| assert.NoError(t, err) |
| assert.Equal(t, 4, len(tries)) |
| } |
| |
| func TestSerialize(t *testing.T) { |
| testutils.SmallTest(t) |
| tc := []struct { |
| in Properties |
| out string |
| }{ |
| { |
| in: Properties{}, |
| out: "{}", // Leave out all empty fields. |
| }, |
| { |
| in: Properties{ |
| Reason: "Triggered by SkiaScheduler", |
| }, |
| out: "{\"reason\":\"Triggered by SkiaScheduler\"}", |
| }, |
| } |
| for _, c := range tc { |
| b, err := json.Marshal(c.in) |
| assert.NoError(t, err) |
| assert.Equal(t, []byte(c.out), b) |
| } |
| } |
| |
| func TestRequestBuild(t *testing.T) { |
| testutils.SmallTest(t) |
| respBody := []byte(testutils.MarshalJSON(t, &buildBucketResponse{ |
| Build: &Build{}, |
| Error: nil, |
| Kind: "", |
| Etag: "", |
| })) |
| reqType := "application/json; charset=utf-8" |
| reqBody := []byte(`{"bucket":"master.my-master","parameters_json":"{\"builder_name\":\"my-builder\",\"changes\":[{\"author\":{\"email\":\"my-author\"},\"repo_url\":\"my-repo\",\"revision\":\"abc123\"}],\"properties\":{\"reason\":\"Triggered by SkiaScheduler\"}}"}`) |
| r := mux.NewRouter() |
| md := mockhttpclient.MockPutDialogue(reqType, reqBody, respBody) |
| r.Schemes("https").Host("cr-buildbucket.appspot.com").Methods("PUT").Path("/api/buildbucket/v1/builds").Handler(md) |
| httpClient := mockhttpclient.NewMuxClient(r) |
| c := NewClient(httpClient) |
| b, err := c.RequestBuild("my-builder", "my-master", "abc123", "my-repo", "my-author", "") |
| assert.NoError(t, err) |
| assert.NotNil(t, b) |
| } |