Files
Containr/app/backend/internal/api/git_test.go
T
2026-04-10 12:02:36 +02:00

86 lines
2.0 KiB
Go

package api
import "testing"
func TestNormalizeRepositoryFullName(t *testing.T) {
cases := []struct {
name string
input string
wantName string
wantFullName string
wantErr bool
}{
{
name: "owner slash repo",
input: "acme/platform",
wantName: "platform",
wantFullName: "acme/platform",
},
{
name: "https clone URL",
input: "https://github.com/acme/platform.git",
wantName: "platform",
wantFullName: "acme/platform",
},
{
name: "ssh URL",
input: "git@github.com:acme/platform.git",
wantName: "platform",
wantFullName: "acme/platform",
},
{
name: "invalid format",
input: "acme",
wantErr: true,
},
{
name: "empty",
input: "",
wantErr: true,
},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
gotName, gotFullName, err := normalizeRepositoryFullName(tc.input)
if tc.wantErr {
if err == nil {
t.Fatalf("expected error, got nil")
}
return
}
if err != nil {
t.Fatalf("expected no error, got %v", err)
}
if gotName != tc.wantName {
t.Fatalf("name mismatch: got %q want %q", gotName, tc.wantName)
}
if gotFullName != tc.wantFullName {
t.Fatalf("full name mismatch: got %q want %q", gotFullName, tc.wantFullName)
}
})
}
}
func TestDeriveCloneURL(t *testing.T) {
fullName := "acme/platform"
cases := []struct {
provider string
want string
}{
{provider: "github", want: "https://github.com/acme/platform.git"},
{provider: "gitlab", want: "https://gitlab.com/acme/platform.git"},
{provider: "bitbucket", want: "https://bitbucket.org/acme/platform.git"},
{provider: "unknown", want: "acme/platform"},
}
for _, tc := range cases {
t.Run(tc.provider, func(t *testing.T) {
got := deriveCloneURL(tc.provider, fullName)
if got != tc.want {
t.Fatalf("deriveCloneURL(%q) = %q, want %q", tc.provider, got, tc.want)
}
})
}
}