package forwarder

import (
	"fmt"
	"testing"

	"github.com/google/go-containerregistry/pkg/name"
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
)

var (
	digest    = "sha256:deadb33fdeadb33fdeadb33fdeadb33fdeadb33fdeadb33fdeadb33fdeadb33f"
	base      = "us-east1-docker.pkg.dev"
	projectID = "ret-edge-infragang0"
)

func TestParseRef(t *testing.T) {
	tcs := map[string]struct {
		repository string
		image      string
	}{
		"only registry and package as repository": {"warehouse", "cert-manager"},
		"nested repository":                       {"warehouse", "dev/swim/prometheus-operator"},
	}

	for n, tc := range tcs {
		t.Run(n, func(t *testing.T) {
			ref, err := name.ParseReference(fmt.Sprintf(
				"%s/%s/%s/%s@%s", base, projectID, tc.repository, tc.image, digest,
			))
			require.NoError(t, err)
			t.Log(ref)

			registry, repository, image := parseRef(ref)

			assert.Equal(t, base, registry)
			assert.Equal(t, tc.image, image)
			assert.Equal(t, tc.repository, repository)
		})
	}
}