mirror of
https://github.com/genuinetools/reg.git
synced 2024-05-18 19:28:33 -04:00
Fix: digest (#123)
* Fix getting digest from Docker-Content-Digest header * Fix remove_test
This commit is contained in:
parent
5ff93f005b
commit
dcdae21713
|
@ -36,6 +36,7 @@ var (
|
||||||
password: "testing",
|
password: "testing",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
registryHelper *testutils.RegistryHelper
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -81,6 +82,11 @@ func TestMain(m *testing.M) {
|
||||||
panic(fmt.Errorf("starting registry container %s failed: %v", regConfig.config, err))
|
panic(fmt.Errorf("starting registry container %s failed: %v", regConfig.config, err))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
registryHelper, err = testutils.NewRegistryHelper(dcli, regConfig.username, regConfig.password, domain)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("creating registry helper %s failed: %v", regConfig.config, err))
|
||||||
|
}
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
merr := m.Run()
|
merr := m.Run()
|
||||||
|
|
||||||
|
|
|
@ -35,5 +35,5 @@ func (r *Registry) Digest(image Image) (digest.Digest, error) {
|
||||||
return "", fmt.Errorf("Got status code: %d", resp.StatusCode)
|
return "", fmt.Errorf("Got status code: %d", resp.StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
return digest.FromString(resp.Header.Get("Docker-Content-Digest")), nil
|
return digest.Parse(resp.Header.Get("Docker-Content-Digest"))
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,14 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func teardownTest(t *testing.T) {
|
||||||
|
if err := registryHelper.RefillRegistry("busybox:glibc"); err != nil {
|
||||||
|
t.Fatalf("adding image after remove failed: +%v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestRemove(t *testing.T) {
|
func TestRemove(t *testing.T) {
|
||||||
|
defer teardownTest(t)
|
||||||
// Make sure we have busybox in list.
|
// Make sure we have busybox in list.
|
||||||
out, err := run("ls", domain)
|
out, err := run("ls", domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -24,4 +31,16 @@ busybox glibc, latest, musl`
|
||||||
t.Fatalf("output: %s, error: %v", out, err)
|
t.Fatalf("output: %s, error: %v", out, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make sure we have removed busybox:glibc.
|
||||||
|
out, err = run("ls", domain)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("output: %s, error: %v", out, err)
|
||||||
|
}
|
||||||
|
expected = `REPO TAGS
|
||||||
|
alpine 3.5, latest
|
||||||
|
busybox latest, musl`
|
||||||
|
if !strings.HasSuffix(strings.TrimSpace(out), expected) {
|
||||||
|
t.Fatalf("expected to contain: %s\ngot: %s", expected, out)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
50
testutils/registry.go
Normal file
50
testutils/registry.go
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
package testutils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/docker/docker/client"
|
||||||
|
"github.com/docker/docker/pkg/jsonmessage"
|
||||||
|
"github.com/docker/docker/pkg/term"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RegistryHelper implements methods to manipulate docker registry from test cases
|
||||||
|
type RegistryHelper struct {
|
||||||
|
dcli *client.Client
|
||||||
|
auth string
|
||||||
|
addr string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewRegistryHelper returns RegistryHelper
|
||||||
|
func NewRegistryHelper(dcli *client.Client, username, password, addr string) (*RegistryHelper, error) {
|
||||||
|
auth, err := constructRegistryAuth(username, password)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &RegistryHelper{dcli: dcli, auth: auth, addr: addr}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// RefillRegistry adds images to a registry.
|
||||||
|
func (r *RegistryHelper) RefillRegistry(image string) error {
|
||||||
|
if err := pullDockerImage(r.dcli, image); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := r.dcli.ImageTag(context.Background(), image, r.addr+"/"+image); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := r.dcli.ImagePush(context.Background(), r.addr+"/"+image, types.ImagePushOptions{
|
||||||
|
RegistryAuth: r.auth,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer resp.Close()
|
||||||
|
|
||||||
|
fd, isTerm := term.GetFdInfo(os.Stdout)
|
||||||
|
|
||||||
|
return jsonmessage.DisplayJSONMessagesStream(resp, os.Stdout, fd, isTerm, nil)
|
||||||
|
}
|
Loading…
Reference in a new issue