krz/gitbay

A CLI-first git forge.

clone: git clone https://gitbay.org/krz/gitbay.git

main: internal/policy/names_test.go · raw

 1package policy
 2
 3import "testing"
 4
 5func TestValidateOwnerName(t *testing.T) {
 6	valid := []string{"alice", "krz", "a", "user-1", "a.b_c", "0day"}
 7	for _, n := range valid {
 8		if err := ValidateOwnerName(n); err != nil {
 9			t.Errorf("ValidateOwnerName(%q) = %v, want nil", n, err)
10		}
11	}
12
13	invalid := []string{
14		"",
15		"Alice",     // uppercase
16		"-lead",     // bad first char
17		".hidden",   // bad first char
18		"a b",       // space
19		"repo.git",  // .git suffix
20		"..",        //
21		"login",     // reserved
22		"admin",     // reserved
23		"static",    // reserved
24		"api",       // reserved
25		"register",  // reserved
26	}
27	for _, n := range invalid {
28		if err := ValidateOwnerName(n); err == nil {
29			t.Errorf("ValidateOwnerName(%q) = nil, want error", n)
30		}
31	}
32}
33
34func TestRepoNameAllowsReservedWords(t *testing.T) {
35	// Repo routes are namespaced under the owner, so reserved words are fine.
36	if err := ValidateName("api"); err != nil {
37		t.Errorf("ValidateName(\"api\") = %v, want nil", err)
38	}
39	if err := ValidateName("repo.git"); err == nil {
40		t.Error("ValidateName(\"repo.git\") = nil, want error")
41	}
42}