diff options
| author | xengineering <me@xengineering.eu> | 2026-06-27 21:21:45 +0200 |
|---|---|---|
| committer | xengineering <me@xengineering.eu> | 2026-06-27 21:21:45 +0200 |
| commit | 132990e985751e40c263224a62983c8013409a36 (patch) | |
| tree | f4952cde44a950bfe7c0bdfec825056f85494b69 /password_test.go | |
| parent | ea4bd88963724c13f7b906d856af2d1c715fc056 (diff) | |
| download | finserv-132990e985751e40c263224a62983c8013409a36.tar finserv-132990e985751e40c263224a62983c8013409a36.tar.zst finserv-132990e985751e40c263224a62983c8013409a36.zip | |
Switch Register() and Authenticate() to sql.Tx
Using sql.Tx (database transactions) instead of a plain database has the
advantage that the caller can wrap multiple library calls into one
transaction.
This guarantees that no database entries change between the library
calls which is critical to prevent race conditions.
Diffstat (limited to 'password_test.go')
| -rw-r--r-- | password_test.go | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/password_test.go b/password_test.go index a577194..ed89541 100644 --- a/password_test.go +++ b/password_test.go @@ -1,6 +1,7 @@ package main import ( + "database/sql" "testing" _ "github.com/mattn/go-sqlite3" @@ -27,7 +28,9 @@ func TestRegister(t *testing.T) { t.Fatalf("Could not migrate test database: %v", err) } - err = Register(db, p.username, p.password) + err = Transaction(db, func(tx *sql.Tx) error { + return Register(tx, p.username, p.password) + }) if err != nil { t.Fatalf("Could not register user: %v", err) } @@ -80,7 +83,9 @@ func TestAuthenticate(t *testing.T) { t.Fatalf("Failed to insert password hash: %v", err) } - err = Authenticate(db, p.username, p.password) + err = Transaction(db, func(tx *sql.Tx) error { + return Authenticate(tx, p.username, p.password) + }) if err != nil { t.Fatalf("Failed to authenticate: %v", err) } @@ -98,12 +103,16 @@ func TestRegisterAuthenticate(t *testing.T) { t.Fatalf("Could not execute function to test: %v", err) } - err = Register(db, p.username, p.password) + err = Transaction(db, func(tx *sql.Tx) error { + return Register(tx, p.username, p.password) + }) if err != nil { t.Fatalf("Could not register user: %v", err) } - err = Authenticate(db, p.username, p.password) + err = Transaction(db, func(tx *sql.Tx) error { + return Authenticate(tx, p.username, p.password) + }) if err != nil { t.Fatalf("Failed to authenticate: %v", err) } |
