summaryrefslogtreecommitdiff
path: root/tests/gracha.go
blob: 18b54d643796a308cd17985d380aa3c70ea6b3ef (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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()
}