Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Unified Diff: go/src/infra/tools/cipd/client_test.go

Issue 1145423002: cipd: Client can resolve tags to instance IDs. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: resolve subcommand Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)
})
}

Powered by Google App Engine
This is Rietveld 408576698