added user independent sections and started db migration work

This commit is contained in:
ston1th 2019-03-26 23:55:55 +01:00
commit 16ea95bf09
24 changed files with 622 additions and 122 deletions

View file

@ -11,8 +11,7 @@ func TestParsePermString(t *testing.T) {
data := map[string]Permission{
"": Invalid,
"1": Public,
"2": Internal,
"3": Private,
"2": Private,
"123": Invalid,
"test": Invalid,
}
@ -28,21 +27,23 @@ func TestParsePermString(t *testing.T) {
func TestReadPerm(t *testing.T) {
data := []struct {
Username string
Page *Page
Perm Permission
Section Section
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},
{"", Invalid, Section{Members: []string{"admin"}}, false},
{"", Public, Section{Members: []string{"admin"}}, true},
{"user", Public, Section{Members: []string{"admin"}}, true},
{"", Private, Section{Members: []string{"admin"}}, false},
{"user", Private, Section{Members: []string{"admin"}}, false},
{"", Private, Section{Members: []string{"user"}}, false},
{"user", Private, Section{Members: []string{"user"}}, true},
{"user", Private, Section{Members: []string{"user", "admin"}}, true},
{"admin", Private, Section{Members: []string{"user"}}, false},
}
for i, v := range data {
t.Run(fmt.Sprintf("Read:%d", i), func(t *testing.T) {
if ReadPerm(v.Username, v.Page) != v.OK {
if ReadPerm(v.Username, v.Perm, v.Section) != v.OK {
t.Fail()
}
})
@ -52,28 +53,23 @@ func TestReadPerm(t *testing.T) {
func TestWritePerm(t *testing.T) {
data := []struct {
Username string
Section string
Page *Page
Perm Permission
Section Section
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},
{"", Invalid, Section{Members: []string{"user"}}, false},
{"", Public, Section{Members: []string{"user"}}, false},
{"user", Public, Section{Members: []string{"user"}}, true},
{"user", Public, Section{Members: []string{"admin"}}, false},
{"user", Private, Section{Members: []string{"user"}}, true},
{"", Private, Section{Members: []string{"user"}}, false},
{"", Private, Section{Members: []string{"user", "admin"}}, false},
{"user", Private, Section{Members: []string{"user", "admin"}}, true},
{"admin", Private, Section{Members: []string{"user", "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 {
if WritePerm(v.Username, v.Perm, v.Section) != v.OK {
t.Fail()
}
})