mirror of https://github.com/docker/cli.git
74 lines
2.3 KiB
Go
74 lines
2.3 KiB
Go
package image
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/docker/cli/cli/trust"
|
|
registrytypes "github.com/docker/docker/api/types/registry"
|
|
"github.com/theupdateframework/notary/client"
|
|
"github.com/theupdateframework/notary/passphrase"
|
|
"github.com/theupdateframework/notary/trustpinning"
|
|
"gotest.tools/v3/assert"
|
|
)
|
|
|
|
func unsetENV() {
|
|
os.Unsetenv("DOCKER_CONTENT_TRUST")
|
|
os.Unsetenv("DOCKER_CONTENT_TRUST_SERVER")
|
|
}
|
|
|
|
func TestENVTrustServer(t *testing.T) {
|
|
defer unsetENV()
|
|
indexInfo := ®istrytypes.IndexInfo{Name: "testserver"}
|
|
if err := os.Setenv("DOCKER_CONTENT_TRUST_SERVER", "https://notary-test.com:5000"); err != nil {
|
|
t.Fatal("Failed to set ENV variable")
|
|
}
|
|
output, err := trust.Server(indexInfo)
|
|
expectedStr := "https://notary-test.com:5000"
|
|
if err != nil || output != expectedStr {
|
|
t.Fatalf("Expected server to be %s, got %s", expectedStr, output)
|
|
}
|
|
}
|
|
|
|
func TestHTTPENVTrustServer(t *testing.T) {
|
|
defer unsetENV()
|
|
indexInfo := ®istrytypes.IndexInfo{Name: "testserver"}
|
|
if err := os.Setenv("DOCKER_CONTENT_TRUST_SERVER", "http://notary-test.com:5000"); err != nil {
|
|
t.Fatal("Failed to set ENV variable")
|
|
}
|
|
_, err := trust.Server(indexInfo)
|
|
if err == nil {
|
|
t.Fatal("Expected error with invalid scheme")
|
|
}
|
|
}
|
|
|
|
func TestOfficialTrustServer(t *testing.T) {
|
|
indexInfo := ®istrytypes.IndexInfo{Name: "testserver", Official: true}
|
|
output, err := trust.Server(indexInfo)
|
|
if err != nil || output != trust.NotaryServer {
|
|
t.Fatalf("Expected server to be %s, got %s", trust.NotaryServer, output)
|
|
}
|
|
}
|
|
|
|
func TestNonOfficialTrustServer(t *testing.T) {
|
|
indexInfo := ®istrytypes.IndexInfo{Name: "testserver", Official: false}
|
|
output, err := trust.Server(indexInfo)
|
|
expectedStr := "https://" + indexInfo.Name
|
|
if err != nil || output != expectedStr {
|
|
t.Fatalf("Expected server to be %s, got %s", expectedStr, output)
|
|
}
|
|
}
|
|
|
|
func TestAddTargetToAllSignableRolesError(t *testing.T) {
|
|
tmpDir, err := ioutil.TempDir("", "notary-test-")
|
|
assert.NilError(t, err)
|
|
defer os.RemoveAll(tmpDir)
|
|
|
|
notaryRepo, err := client.NewFileCachedRepository(tmpDir, "gun", "https://localhost", nil, passphrase.ConstantRetriever("password"), trustpinning.TrustPinConfig{})
|
|
assert.NilError(t, err)
|
|
target := client.Target{}
|
|
err = AddTargetToAllSignableRoles(notaryRepo, &target)
|
|
assert.Error(t, err, "client is offline")
|
|
}
|