mirror of
https://github.com/genuinetools/reg.git
synced 2024-04-27 10:58: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",
|
||||
},
|
||||
}
|
||||
registryHelper *testutils.RegistryHelper
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -81,6 +82,11 @@ func TestMain(m *testing.M) {
|
|||
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()
|
||||
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 digest.FromString(resp.Header.Get("Docker-Content-Digest")), nil
|
||||
return digest.Parse(resp.Header.Get("Docker-Content-Digest"))
|
||||
}
|
||||
|
|
|
@ -6,7 +6,14 @@ import (
|
|||
"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) {
|
||||
defer teardownTest(t)
|
||||
// Make sure we have busybox in list.
|
||||
out, err := run("ls", domain)
|
||||
if err != nil {
|
||||
|
@ -24,4 +31,16 @@ busybox glibc, latest, musl`
|
|||
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