package am import "testing" func NewDBForTesting() *dbal { db, err := newDB(":memory:") if err != nil { panic(err) } return db } func TestDBUserInsert(t *testing.T) { db := NewDBForTesting() err := db.UserInsert(User{Username: `test`, Admin: false}, `123`) if err != nil { t.Fatal(err) } err = db.UserInsert(User{Username: `test`, Admin: false}, `123`) if err == nil { t.Fatal(err) } err = db.UserInsert(User{Username: `root`, Admin: false}, `root`) if err == nil { t.Fatal(err) } } func TestDBUserGet(t *testing.T) { db := NewDBForTesting() err := db.UserInsert(User{Username: `test`, Admin: false}, `123`) if err != nil { t.Fatal(err) } u, err := db.UserGet(`test`) if err != nil { t.Fatal(err) } if u.Username != `test` || u.Admin { t.Fatal(u) } _, err = db.UserGet(`test2`) if err == nil { t.Fatal(err) } } func TestDBUserGetWithPwd(t *testing.T) { db := NewDBForTesting() u, err := db.UserGetWithPwd("root", "root") if err != nil { t.Fatal(err) } if u.Username != "root" || !u.Admin { t.Fatal(u) } if _, err = db.UserGetWithPwd("root", "root2"); err == nil { t.Fatal(err) } } func TestDBUserList(t *testing.T) { db := NewDBForTesting() err := db.UserInsert(User{Username: `test`, Admin: false}, `123`) if err != nil { t.Fatal(err) } l, err := db.UserList() if err != nil { t.Fatal(err) } if len(l) != 2 { t.Fatal(l) } if l[0].Username != "root" || l[1].Username != "test" { t.Fatal(l) } } func TestDBUserUpdatePwd(t *testing.T) { db := NewDBForTesting() if err := db.UserUpdatePwd("root", "xyz"); err != nil { t.Fatal(err) } if _, err := db.UserGetWithPwd("root", "xyz"); err != nil { t.Fatal(err) } if _, err := db.UserGetWithPwd("root", "root"); err == nil { t.Fatal(err) } } func TestDBUserUpdateAdmin(t *testing.T) { db := NewDBForTesting() err := db.UserInsert(User{Username: `test`, Admin: false}, `123`) if err != nil { t.Fatal(err) } if err := db.UserUpdateAdmin("test", true); err != nil { t.Fatal(err) } u, err := db.UserGet("test") if err != nil { t.Fatal(err) } if !u.Admin { t.Fatal(u) } } func TestDBUserDelete(t *testing.T) { db := NewDBForTesting() if err := db.UserDelete("root"); err == nil { t.Fatal(err) } err := db.UserInsert(User{Username: `test`, Admin: false}, `123`) if err != nil { t.Fatal(err) } if err := db.UserDelete("test"); err != nil { t.Fatal(err) } if _, err := db.UserGet("test"); err == nil { t.Fatal(err) } }