Index: go/src/infra/tools/cipd/client_test.go |
diff --git a/go/src/infra/tools/cipd/client_test.go b/go/src/infra/tools/cipd/client_test.go |
index 8eec4c4f9265261526df6c411ddf5da5eb3dd004..e9ed2de926e92dd03d852913db111db16f5da122 100644 |
--- a/go/src/infra/tools/cipd/client_test.go |
+++ b/go/src/infra/tools/cipd/client_test.go |
@@ -70,6 +70,54 @@ func TestUploadToCAS(t *testing.T) { |
}) |
} |
+func TestResolveVersion(t *testing.T) { |
+ Convey("ResolveVersion works", t, func(c C) { |
+ client := mockClient(c, []expectedHTTPCall{ |
+ { |
+ Method: "GET", |
+ Path: "/_ah/api/repo/v1/instance/resolve", |
+ Query: url.Values{ |
+ "package_name": []string{"pkgname"}, |
+ "version": []string{"tag_key:value"}, |
+ }, |
+ Reply: `{ |
+ "status": "SUCCESS", |
+ "instance_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
+ }`, |
+ }, |
+ }) |
+ pin, err := client.ResolveVersion("pkgname", "tag_key:value") |
+ So(err, ShouldBeNil) |
+ So(pin, ShouldResemble, common.Pin{ |
+ PackageName: "pkgname", |
+ InstanceID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", |
+ }) |
+ }) |
+ |
+ Convey("ResolveVersion with instance ID", t, func(c C) { |
+ // No calls to the backend expected. |
+ client := mockClient(c, nil) |
+ pin, err := client.ResolveVersion("pkgname", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") |
+ So(err, ShouldBeNil) |
+ So(pin, ShouldResemble, common.Pin{ |
+ PackageName: "pkgname", |
+ InstanceID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", |
+ }) |
+ }) |
+ |
+ Convey("ResolveVersion bad package name", t, func(c C) { |
+ client := mockClient(c, nil) |
+ _, err := client.ResolveVersion("bad package", "tag_key:value") |
+ So(err, ShouldNotBeNil) |
+ }) |
+ |
+ Convey("ResolveVersion bad version", t, func(c C) { |
+ client := mockClient(c, nil) |
+ _, err := client.ResolveVersion("pkgname", "BAD_TAG:") |
+ So(err, ShouldNotBeNil) |
+ }) |
+} |
+ |
func TestRegisterInstance(t *testing.T) { |
Convey("Mocking a package instance", t, func() { |
// Build an empty package to be uploaded. |
@@ -260,8 +308,8 @@ func TestFetch(t *testing.T) { |
} |
func TestProcessEnsureFile(t *testing.T) { |
- call := func(c C, data string) ([]common.Pin, error) { |
- client := mockClient(c, nil) |
+ call := func(c C, data string, calls []expectedHTTPCall) ([]common.Pin, error) { |
+ client := mockClient(c, calls) |
return client.ProcessEnsureFile(bytes.NewBufferString(data)) |
} |
@@ -271,7 +319,7 @@ func TestProcessEnsureFile(t *testing.T) { |
pkg/a 0000000000000000000000000000000000000000 |
pkg/b 1000000000000000000000000000000000000000 |
- `) |
+ `, nil) |
So(err, ShouldBeNil) |
So(out, ShouldResemble, []common.Pin{ |
{"pkg/a", "0000000000000000000000000000000000000000"}, |
@@ -279,24 +327,42 @@ func TestProcessEnsureFile(t *testing.T) { |
}) |
}) |
+ Convey("ProcessEnsureFile resolves versions", t, func(c C) { |
+ out, err := call(c, "pkg/a tag_key:value", []expectedHTTPCall{ |
+ { |
+ Method: "GET", |
+ Path: "/_ah/api/repo/v1/instance/resolve", |
+ Query: url.Values{ |
+ "package_name": []string{"pkg/a"}, |
+ "version": []string{"tag_key:value"}, |
+ }, |
+ Reply: `{"status":"SUCCESS","instance_id":"0000000000000000000000000000000000000000"}`, |
+ }, |
+ }) |
+ So(err, ShouldBeNil) |
+ So(out, ShouldResemble, []common.Pin{ |
+ {"pkg/a", "0000000000000000000000000000000000000000"}, |
+ }) |
+ }) |
+ |
Convey("ProcessEnsureFile empty", t, func(c C) { |
- out, err := call(c, "") |
+ out, err := call(c, "", nil) |
So(err, ShouldBeNil) |
So(out, ShouldResemble, []common.Pin{}) |
}) |
Convey("ProcessEnsureFile bad package name", t, func(c C) { |
- _, err := call(c, "bad.package.name/a 0000000000000000000000000000000000000000") |
+ _, err := call(c, "bad.package.name/a 0000000000000000000000000000000000000000", nil) |
So(err, ShouldNotBeNil) |
}) |
Convey("ProcessEnsureFile bad instance ID", t, func(c C) { |
- _, err := call(c, "pkg/a 0000") |
+ _, err := call(c, "pkg/a 0000", nil) |
So(err, ShouldNotBeNil) |
}) |
Convey("ProcessEnsureFile bad line", t, func(c C) { |
- _, err := call(c, "pkg/a") |
+ _, err := call(c, "pkg/a", nil) |
So(err, ShouldNotBeNil) |
}) |
} |