krz/gitbay
A CLI-first git forge.
clone: git clone https://gitbay.org/krz/gitbay.git
repo-descriptions: 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}