81 lines
2.3 KiB
Go
81 lines
2.3 KiB
Go
// Copyright (C) 2019 Marius Schellenberger
|
|
|
|
package core
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestParsePermString(t *testing.T) {
|
|
data := map[string]Permission{
|
|
"": Invalid,
|
|
"1": Public,
|
|
"2": Internal,
|
|
"3": Private,
|
|
"123": Invalid,
|
|
"test": Invalid,
|
|
}
|
|
for k, v := range data {
|
|
t.Run(k, func(t *testing.T) {
|
|
if ParsePermString(k) != v {
|
|
t.Fail()
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestReadPerm(t *testing.T) {
|
|
data := []struct {
|
|
Username string
|
|
Page *Page
|
|
OK bool
|
|
}{
|
|
{"", &Page{Perm: Invalid, Owner: "admin"}, false},
|
|
{"", &Page{Perm: Public, Owner: "admin"}, true},
|
|
{"user", &Page{Perm: Public, Owner: "admin"}, true},
|
|
{"", &Page{Perm: Internal, Owner: "admin"}, false},
|
|
{"user", &Page{Perm: Internal, Owner: "admin"}, true},
|
|
{"", &Page{Perm: Private, Owner: "admin"}, false},
|
|
{"user", &Page{Perm: Private, Owner: "admin"}, false},
|
|
{"admin", &Page{Perm: Private, Owner: "admin"}, true},
|
|
}
|
|
for i, v := range data {
|
|
t.Run(fmt.Sprintf("Read:%d", i), func(t *testing.T) {
|
|
if ReadPerm(v.Username, v.Page) != v.OK {
|
|
t.Fail()
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestWritePerm(t *testing.T) {
|
|
data := []struct {
|
|
Username string
|
|
Section string
|
|
Page *Page
|
|
OK bool
|
|
}{
|
|
{"user", "admin", &Page{Perm: Invalid, Owner: "admin"}, false},
|
|
{"", "user", &Page{Perm: Invalid, Owner: "admin"}, false},
|
|
{"user", "user", &Page{Perm: Invalid, Owner: "user"}, false},
|
|
{"user", "user", &Page{Perm: Public, Owner: "user"}, true},
|
|
{"user", "user", &Page{Perm: Internal, Owner: "user"}, true},
|
|
{"user", "user", &Page{Perm: Private, Owner: "user"}, true},
|
|
{"", WikiSection, &Page{Perm: Invalid, Owner: "admin"}, false},
|
|
{"", WikiSection, &Page{Perm: Public, Owner: "admin"}, false},
|
|
{"", WikiSection, &Page{Perm: Internal, Owner: "admin"}, false},
|
|
{"user", WikiSection, &Page{Perm: Public, Owner: WikiSection}, true},
|
|
{"user", WikiSection, &Page{Perm: Internal, Owner: WikiSection}, true},
|
|
{"", "admin", &Page{Perm: Private, Owner: "admin"}, false},
|
|
{"user", "admin", &Page{Perm: Private, Owner: "admin"}, false},
|
|
{"admin", "admin", &Page{Perm: Private, Owner: "admin"}, true},
|
|
}
|
|
for i, v := range data {
|
|
t.Run(fmt.Sprintf("Write:%d", i), func(t *testing.T) {
|
|
if WritePerm(v.Username, v.Section, v.Page) != v.OK {
|
|
t.Fail()
|
|
}
|
|
})
|
|
}
|
|
}
|