39f2f15a35
Add a daemon flag to control this behaviour. Add a warning message when pulling an image from a v1 registry. The default order of pull is slightly altered with this changset. Previously it was: https v2, https v1, http v2, http v1 now it is: https v2, http v2, https v1, http v1 Prevent login to v1 registries by explicitly setting the version before ping to prevent fallback to v1. Add unit tests for v2 only mode. Create a mock server that can register handlers for various endpoints. Assert no v1 endpoints are hit with legacy registries disabled for the following commands: pull, push, build, run and login. Assert the opposite when legacy registries are not disabled. Signed-off-by: Richard Scothern <richard.scothern@gmail.com>
56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"regexp"
|
|
"strings"
|
|
"sync"
|
|
|
|
"github.com/go-check/check"
|
|
)
|
|
|
|
type handlerFunc func(w http.ResponseWriter, r *http.Request)
|
|
|
|
type testRegistry struct {
|
|
server *httptest.Server
|
|
hostport string
|
|
handlers map[string]handlerFunc
|
|
mu sync.Mutex
|
|
}
|
|
|
|
func (tr *testRegistry) registerHandler(path string, h handlerFunc) {
|
|
tr.mu.Lock()
|
|
defer tr.mu.Unlock()
|
|
tr.handlers[path] = h
|
|
}
|
|
|
|
func newTestRegistry(c *check.C) (*testRegistry, error) {
|
|
testReg := &testRegistry{handlers: make(map[string]handlerFunc)}
|
|
|
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
url := r.URL.String()
|
|
|
|
var matched bool
|
|
var err error
|
|
for re, function := range testReg.handlers {
|
|
matched, err = regexp.MatchString(re, url)
|
|
if err != nil {
|
|
c.Fatalf("Error with handler regexp")
|
|
return
|
|
}
|
|
if matched {
|
|
function(w, r)
|
|
break
|
|
}
|
|
}
|
|
|
|
if !matched {
|
|
c.Fatal("Unable to match", url, "with regexp")
|
|
}
|
|
}))
|
|
|
|
testReg.server = ts
|
|
testReg.hostport = strings.Replace(ts.URL, "http://", "", 1)
|
|
return testReg, nil
|
|
}
|