go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/discovery/container_registry/registry_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package container_registry 5 6 import ( 7 "net/url" 8 "strings" 9 "testing" 10 11 "github.com/google/go-containerregistry/pkg/name" 12 "github.com/stretchr/testify/assert" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestDockerRegistry(t *testing.T) { 17 name := "index.docker.io" 18 // url, err := url.Parse("//" + name) 19 // require.NoError(t, err) 20 21 // assert.True(t, url.Host != name) 22 // assert.Equal(t, "index.docker.io", url.Host) 23 24 if url, err := url.Parse("//" + name); err != nil || url.Host != name { 25 t.Fatal(url.Host) 26 // t.Fatal(fmt.Errorf("registries must be valid RFC 3986 URI authorities: %s", name)) 27 } 28 29 // r := docker.NewContainerRegistryResolver() 30 // assets, err := r.List(name) 31 // require.NoError(t, err) 32 // assert.True(t, len(assets) > 0) 33 } 34 35 func TestHarbor(t *testing.T) { 36 urls := []string{ 37 "index.docker.io/library/centos:latest", 38 "index.docker.io/library/centos@sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1", 39 } 40 41 for i := range urls { 42 url := urls[i] 43 ref, err := name.ParseReference(url, name.WeakValidation) 44 require.NoError(t, err, url) 45 assert.NotNil(t, ref, url) 46 47 dri := DockerRegistryImages{} 48 a, err := dri.toAsset(ref, nil) 49 require.NoError(t, err, url) 50 51 // check that we resolved it correctly and we got a specific shasum 52 assert.Equal(t, "container-registry", a.Connections[0].Type) 53 assert.True(t, strings.HasPrefix(a.Connections[0].Host, "index.docker.io/library/centos"), url) 54 assert.True(t, len(strings.Split(a.Connections[0].Host, "@")) == 2, url) 55 } 56 }