package ci
import "testing"
// An environment's ceiling round-trips between letters and
// permissions:'s words, and letters no word accounts for survive.
func TestPermissionLevelsRoundTrip(t *testing.T) {
levels, extra := LevelsOf("go8")
if levels["contents"] != "read" || levels["checks"] != "write" || levels["uv"] != "none" || extra != "" {
t.Fatalf("FAIL: go8 read as %v extra %q, want contents read, checks write", levels, extra)
}
levels, extra = LevelsOf("y")
if levels["uv"] != "write" || levels["contents"] != "none" || extra != "" {
t.Fatalf("FAIL: y read as %v extra %q, want uv write alone", levels, extra)
}
levels, _ = LevelsOf("gio")
if levels["contents"] != "write" {
t.Fatalf("FAIL: gio read as %v, want contents write", levels)
}
if _, extra = LevelsOf("goq"); extra != "q" {
t.Fatalf("FAIL: goq extra %q, want q kept", extra)
}
for _, c := range []struct{ noun, level, want string }{
{"uv", "write", "y"}, {"contents", "read", "og"}, {"checks", "read", ""}, {"wiki", "none", ""},
} {
got, err := LettersFor(c.noun, c.level)
if err != nil || got != c.want {
t.Fatalf("FAIL: LettersFor(%s,%s) = %q %v, want %q", c.noun, c.level, got, err, c.want)
}
}
if _, err := LettersFor("contents", "admin"); err == nil {
t.Fatal("FAIL: an unknown level was accepted")
}
if _, err := LettersFor("secrets", "read"); err == nil {
t.Fatal("FAIL: an unknown noun was accepted")
}
t.Log("ok: letters and permission words round-trip")
}