no submod
This commit is contained in:
118
work/notea/server/auth_test.go
Normal file
118
work/notea/server/auth_test.go
Normal file
@@ -0,0 +1,118 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFileAuth(t *testing.T) {
|
||||
user := "username"
|
||||
passw := "password"
|
||||
g := "group"
|
||||
emptyp := func() string {
|
||||
d := t.TempDir()
|
||||
f, err := ioutil.TempFile(d, "login.yaml.*")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
f.Close()
|
||||
return path.Join(d, f.Name())
|
||||
}
|
||||
goodp := func() string {
|
||||
p := emptyp()
|
||||
if err := ensureAndWrite(p, []byte(fmt.Sprintf(`{
|
||||
"users": {
|
||||
%q: {
|
||||
"password": %q,
|
||||
"groups": [%q]
|
||||
}
|
||||
}
|
||||
}`, user, passw, g))); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return p
|
||||
}
|
||||
|
||||
t.Run("no file", func(t *testing.T) {
|
||||
p := emptyp()
|
||||
os.Remove(p)
|
||||
fa := NewFileAuth(p)
|
||||
if _, err := fa.Login(user, passw); err == nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("bad file", func(t *testing.T) {
|
||||
p := emptyp()
|
||||
if err := ensureAndWrite(p, []byte(`{"hello:}`)); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
fa := NewFileAuth(p)
|
||||
if _, err := fa.Login(user, passw); err == nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("bad user", func(t *testing.T) {
|
||||
p := goodp()
|
||||
fa := NewFileAuth(p)
|
||||
if ok, err := fa.Login("bad"+user, passw); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if ok {
|
||||
t.Fatal(ok)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("bad pass", func(t *testing.T) {
|
||||
p := goodp()
|
||||
fa := NewFileAuth(p)
|
||||
if ok, err := fa.Login(user, "bad"+passw); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if ok {
|
||||
t.Fatal(ok)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("good load", func(t *testing.T) {
|
||||
p := goodp()
|
||||
fa := NewFileAuth(p)
|
||||
got, err := fa.load()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(got.Users) != 1 {
|
||||
t.Error(got.Users)
|
||||
}
|
||||
if entry, ok := got.Users[user]; !ok {
|
||||
t.Error(ok)
|
||||
} else if entry.Password != passw {
|
||||
t.Error(entry)
|
||||
} else if len(entry.Groups) != 1 {
|
||||
t.Error(entry.Groups)
|
||||
} else if entry.Groups[0] != g {
|
||||
t.Error(entry.Groups)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("good", func(t *testing.T) {
|
||||
p := goodp()
|
||||
b, _ := ioutil.ReadFile(p)
|
||||
t.Logf("goodp: %s: %s", p, b)
|
||||
fa := NewFileAuth(p)
|
||||
if ok, err := fa.Login(user, passw); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !ok {
|
||||
t.Fatal(ok)
|
||||
}
|
||||
if groups, err := fa.Groups(user); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(groups) != 1 {
|
||||
t.Fatal(groups)
|
||||
} else if groups[0] != g {
|
||||
t.Fatal(groups)
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user