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  }