Widen ValidateSupportedHost to accept tenancy hosts (*.ghe.com) alongside github.com. GHEC with data residency uses these domains, and all skill subcommands (search, install, preview, publish, update) now allow them. GitHub Enterprise Server remains unsupported and is explicitly rejected with a clear error message. Also fix the lockfile writer to use the actual host when constructing SourceURL instead of hardcoding github.com. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
78 lines
2 KiB
Go
78 lines
2 KiB
Go
package source
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestBuildRepoURL(t *testing.T) {
|
|
assert.Equal(t, "https://github.com/monalisa/octocat-skills", BuildRepoURL("github.com", "monalisa", "octocat-skills"))
|
|
}
|
|
|
|
func TestParseMetadataRepo(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
meta map[string]interface{}
|
|
wantOwner string
|
|
wantRepo string
|
|
wantHost string
|
|
wantFound bool
|
|
wantErr string
|
|
}{
|
|
{
|
|
name: "parses repo url metadata",
|
|
meta: map[string]interface{}{
|
|
"github-repo": "https://github.com/monalisa/octocat-skills",
|
|
},
|
|
wantOwner: "monalisa",
|
|
wantRepo: "octocat-skills",
|
|
wantHost: SupportedHost,
|
|
wantFound: true,
|
|
},
|
|
{
|
|
name: "invalid repo url",
|
|
meta: map[string]interface{}{
|
|
"github-repo": "not a url",
|
|
},
|
|
wantFound: true,
|
|
wantErr: "invalid repository URL",
|
|
},
|
|
{
|
|
name: "missing repo metadata",
|
|
meta: map[string]interface{}{},
|
|
wantFound: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
repo, found, err := ParseMetadataRepo(tt.meta)
|
|
assert.Equal(t, tt.wantFound, found)
|
|
if !tt.wantFound {
|
|
require.NoError(t, err)
|
|
assert.Nil(t, repo)
|
|
return
|
|
}
|
|
if tt.wantErr != "" {
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), tt.wantErr)
|
|
return
|
|
}
|
|
|
|
require.NoError(t, err)
|
|
require.NotNil(t, repo)
|
|
assert.Equal(t, tt.wantOwner, repo.RepoOwner())
|
|
assert.Equal(t, tt.wantRepo, repo.RepoName())
|
|
assert.Equal(t, tt.wantHost, repo.RepoHost())
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestValidateSupportedHost(t *testing.T) {
|
|
require.NoError(t, ValidateSupportedHost("github.com"))
|
|
require.NoError(t, ValidateSupportedHost("mycompany.ghe.com"), "GHEC data residency tenancy hosts should be accepted")
|
|
require.ErrorContains(t, ValidateSupportedHost("acme.ghes.com"), "does not currently support GitHub Enterprise Server")
|
|
require.ErrorContains(t, ValidateSupportedHost("github.localhost"), "unsupported host")
|
|
}
|