internal/policy/names_test.go

4bfcb3893d5ad29d5c6ba0725fd2291d20003e30
gitbay/internal/policy/names_test.go history · blame · raw

42 lines · 1097 bytes

 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}