package gracha import ( "database/sql" "liteq" g "gobang" ) type testAuth struct{ auth Auth // registerEmail func(credentials) close func() error } func test_defaultPrefix() { g.TestStart("defaultPrefix") g.Testing("the defaultPrefix is valid", func() { g.TAssertEqual(g.ValidSQLTablePrefix(defaultPrefix), true) }) } func test_tablesFrom() { g.TestStart("tablesFrom()") g.Testing("prefix needs to be valid", func() { _, err := tablesFrom("invalid-prefix") g.TAssertEqual(err, g.ErrBadSQLTablePrefix) }) g.Testing("the struct adds suffixes", func() { t, err := tablesFrom(defaultPrefix) g.TAssertEqual(err, nil) g.TAssertEqual(t, tablesT{ users: "gracha-users", userChanges: "gracha-user-changes", tokens: "gracha-tokens", roles: "gracha-roles", roleChanges: "gracha-role-changes", sessions: "gracha-sessions", attempts: "gracha-attempts", audit: "gracha-audit", }) }) } func mkauth() testAuth { q := new(liteq.Queue) sql.Register("sqlite-liteq", liteq.MakeDriver(q)) db, err := sql.Open("sqlite-liteq", "file:db?mode=memory&cache=shared") g.TAssertEqual(err, nil) *q, err = liteq.New(db) g.TAssertEqual(err, nil) auth, err := New(db, *q) g.TAssertEqual(err, nil) fns := [](func() error){ db.Close, q.Close, } return testAuth{ auth: auth, close: func() error { return g.SomeFnError(fns) }, } } func test_Register() { g.TestStart("Register()") const ( email = "email@example.com" password = "password" confirmPassword = "password" ) g.Testing("we can register a new email", func() { t := mkauth() defer t.close() user, err := t.auth.Register( email, password, confirmPassword, ) return g.TAssertEqual(err, nil) g.TAssertEqual(user, nil) }) g.Testing("we can't register duplicate emails", func() { }) } func MainTest() { g.Init() test_defaultPrefix() test_tablesFrom() test_Register() }