|
@@ -2,6 +2,7 @@ package main
|
|
|
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
+ "net/url"
|
|
|
"testing"
|
|
|
|
|
|
"github.com/docker/docker/api/types"
|
|
@@ -24,3 +25,45 @@ func TestLegacyImages(t *testing.T) {
|
|
|
|
|
|
logDone("images - checking legacy json")
|
|
|
}
|
|
|
+
|
|
|
+func TestApiImagesFilter(t *testing.T) {
|
|
|
+ name := "utest:tag1"
|
|
|
+ name2 := "utest/docker:tag2"
|
|
|
+ name3 := "utest:5000/docker:tag3"
|
|
|
+ defer deleteImages(name, name2, name3)
|
|
|
+ dockerCmd(t, "tag", "busybox", name)
|
|
|
+ dockerCmd(t, "tag", "busybox", name2)
|
|
|
+ dockerCmd(t, "tag", "busybox", name3)
|
|
|
+
|
|
|
+ type image struct{ RepoTags []string }
|
|
|
+ getImages := func(filter string) []image {
|
|
|
+ v := url.Values{}
|
|
|
+ v.Set("filter", filter)
|
|
|
+ _, b, err := sockRequest("GET", "/images/json?"+v.Encode(), nil)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ var images []image
|
|
|
+ if err := json.Unmarshal(b, &images); err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ return images
|
|
|
+ }
|
|
|
+
|
|
|
+ errMsg := "incorrect number of matches returned"
|
|
|
+ if images := getImages("utest*/*"); len(images[0].RepoTags) != 2 {
|
|
|
+ t.Fatal(errMsg)
|
|
|
+ }
|
|
|
+ if images := getImages("utest"); len(images[0].RepoTags) != 1 {
|
|
|
+ t.Fatal(errMsg)
|
|
|
+ }
|
|
|
+ if images := getImages("utest*"); len(images[0].RepoTags) != 1 {
|
|
|
+ t.Fatal(errMsg)
|
|
|
+ }
|
|
|
+ if images := getImages("*5000*/*"); len(images[0].RepoTags) != 1 {
|
|
|
+ t.Fatal(errMsg)
|
|
|
+ }
|
|
|
+
|
|
|
+ logDone("images - filter param is applied")
|
|
|
+}
|