github.com/apcera/util@v0.0.0-20180322191801-7a50bc84ee48/docker/v1/registry_test.go (about) 1 // Copyright 2014 Apcera Inc. All rights reserved. 2 // Borrowing general test structure from Docker mock registry test. 3 4 package v1 5 6 import ( 7 "io/ioutil" 8 "sort" 9 "testing" 10 11 "github.com/apcera/util/dockertest/v1" 12 13 tt "github.com/apcera/util/testtool" 14 ) 15 16 func init() { 17 registry := v1.RunMockRegistry() 18 DockerHubRegistryURL = registry.URL 19 } 20 21 func TestGetImage(t *testing.T) { 22 testHelper := tt.StartTest(t) 23 defer testHelper.FinishTest() 24 25 img, statusCode, err := GetImage("", "") 26 tt.TestExpectError(t, err) 27 tt.TestEqual(t, statusCode, -1) 28 tt.TestEqual(t, err.Error(), "image name is empty") 29 30 img, statusCode, err = GetImage("foo/bar", "") 31 tt.TestExpectSuccess(t, err) 32 tt.TestEqual(t, statusCode, 200) 33 tt.TestEqual(t, img.Name, "foo/bar") 34 35 img, statusCode, err = GetImage("base", "") 36 tt.TestExpectSuccess(t, err) 37 tt.TestEqual(t, statusCode, 200) 38 tt.TestEqual(t, img.Name, "base") 39 } 40 41 func TestGetImageHistory(t *testing.T) { 42 testHelper := tt.StartTest(t) 43 defer testHelper.FinishTest() 44 45 img, statusCode, err := GetImage("foo/bar", "") 46 tt.TestExpectSuccess(t, err) 47 tt.TestEqual(t, statusCode, 200) 48 49 h, err := img.History("tag2") 50 tt.TestExpectError(t, err) 51 tt.TestEqual(t, err.Error(), "can't find tag 'tag2' for image 'foo/bar'") 52 53 h, err = img.History("latest") 54 tt.TestExpectSuccess(t, err) 55 tt.TestEqual(t, len(h), 2) 56 tt.TestEqual(t, h[0], "deadbeef") 57 tt.TestEqual(t, h[1], "badcafe") 58 } 59 60 func TestGetImageTags(t *testing.T) { 61 testHelper := tt.StartTest(t) 62 defer testHelper.FinishTest() 63 64 img, statusCode, err := GetImage("foo/bar", "") 65 tt.TestExpectSuccess(t, err) 66 tt.TestEqual(t, statusCode, 200) 67 68 tags := img.Tags() 69 sort.Strings(tags) 70 tt.TestEqual(t, tags, []string{"base", "latest"}) 71 } 72 73 func TestGetImageTagLayerID(t *testing.T) { 74 testHelper := tt.StartTest(t) 75 defer testHelper.FinishTest() 76 77 img, statusCode, err := GetImage("foo/bar", "") 78 tt.TestExpectSuccess(t, err) 79 tt.TestEqual(t, statusCode, 200) 80 81 _, err = img.TagLayerID("tag2") 82 tt.TestExpectError(t, err) 83 tt.TestEqual(t, err.Error(), "can't find tag 'tag2' for image 'foo/bar'") 84 85 id, err := img.TagLayerID("latest") 86 tt.TestExpectSuccess(t, err) 87 tt.TestEqual(t, id, "deadbeef") 88 89 id, err = img.TagLayerID("base") 90 tt.TestExpectSuccess(t, err) 91 tt.TestEqual(t, id, "badcafe") 92 } 93 94 func TestGetImageMetadata(t *testing.T) { 95 testHelper := tt.StartTest(t) 96 defer testHelper.FinishTest() 97 98 img, statusCode, err := GetImage("foo/bar", "") 99 tt.TestExpectSuccess(t, err) 100 tt.TestEqual(t, statusCode, 200) 101 102 var m1 map[string]interface{} 103 err = img.Metadata("tag2", &m1) 104 tt.TestExpectError(t, err) 105 tt.TestEqual(t, err.Error(), "can't find tag 'tag2' for image 'foo/bar'") 106 107 var m2 map[string]interface{} 108 err = img.Metadata("latest", &m2) 109 tt.TestExpectSuccess(t, err) 110 tt.TestEqual(t, len(m2), 2) 111 tt.TestEqual(t, m2["id"], "deadbeef") 112 tt.TestEqual(t, m2["k2"], "v2") 113 114 var m3 map[string]interface{} 115 err = img.Metadata("base", &m3) 116 tt.TestExpectSuccess(t, err) 117 tt.TestEqual(t, len(m3), 2) 118 tt.TestEqual(t, m3["id"], "badcafe") 119 tt.TestEqual(t, m3["k1"], "v1") 120 } 121 122 func TestReadLayer(t *testing.T) { 123 testHelper := tt.StartTest(t) 124 defer testHelper.FinishTest() 125 126 img, statusCode, err := GetImage("foo/bar", "") 127 tt.TestExpectSuccess(t, err) 128 tt.TestEqual(t, statusCode, 200) 129 130 r, err := img.LayerReader("deadbeef") 131 tt.TestExpectSuccess(t, err) 132 body, err := ioutil.ReadAll(r) 133 tt.TestExpectSuccess(t, err) 134 tt.TestEqual(t, body, []byte{0xd4, 0xe5, 0xf6}) 135 136 r, err = img.LayerReader("badcafe") 137 tt.TestExpectSuccess(t, err) 138 body, err = ioutil.ReadAll(r) 139 tt.TestExpectSuccess(t, err) 140 tt.TestEqual(t, body, []byte{0xa1, 0xb2, 0xc3}) 141 142 r, err = img.LayerReader("badbad") 143 tt.TestExpectError(t, err) 144 }