diff options
| author | xengineering <me@xengineering.eu> | 2026-06-20 17:07:47 +0200 |
|---|---|---|
| committer | xengineering <me@xengineering.eu> | 2026-06-20 17:12:18 +0200 |
| commit | a5c8467bbb14731847cdf8c37cbde0c91827022a (patch) | |
| tree | 61ca8edd4139e4af21821c89a49099dbf444e25d /password_test.go | |
| parent | 6c0aaac6975bdee1596df5b72c1e47e6a923c79f (diff) | |
| download | finserv-a5c8467bbb14731847cdf8c37cbde0c91827022a.tar finserv-a5c8467bbb14731847cdf8c37cbde0c91827022a.tar.zst finserv-a5c8467bbb14731847cdf8c37cbde0c91827022a.zip | |
Add Authenticate()
This function validates a username and password against the database.
Diffstat (limited to 'password_test.go')
| -rw-r--r-- | password_test.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/password_test.go b/password_test.go index f540cc4..a0dfbc3 100644 --- a/password_test.go +++ b/password_test.go @@ -55,3 +55,35 @@ func TestRegister(t *testing.T) { }) } } + +func TestAuthenticate(t *testing.T) { + for _, p := range passwords { + t.Run(p.description, func(t *testing.T) { + db, _ := emptyDB(t) + + err := MigrateToLatest(db) + if err != nil { + t.Fatalf("Could not execute function to test: %v", err) + } + + hash, err := bcrypt.GenerateFromPassword([]byte(p.password), bcryptCost) + if err != nil { + t.Fatalf("Failed to generate test password hash: %v", err) + } + + _, err = db.Exec( + `INSERT INTO users (username, password_bcrypt) VALUES(?, ?);`, + p.username, + hash, + ) + if err != nil { + t.Fatalf("Failed to insert password hash: %v", err) + } + + err = Authenticate(db, p.username, p.password) + if err != nil { + t.Fatalf("Failed to authenticate: %v", err) + } + }) + } +} |
