82 lines
1.5 KiB
Go
82 lines
1.5 KiB
Go
// nolint: errcheck
|
|
package store_test
|
|
|
|
import (
|
|
"database/sql"
|
|
"os"
|
|
"testing"
|
|
|
|
"git.t-juice.club/torjus/apiary/honeypot/ssh/store"
|
|
)
|
|
|
|
func TestPostgresStore(t *testing.T) {
|
|
var dsn string
|
|
var found bool
|
|
dsn, found = os.LookupEnv("APIARY_TEST_POSTGRES_DSN")
|
|
if !found {
|
|
t.Skipf("APIARY_TEST_POSTGRES_DSN not set. Skipping.")
|
|
}
|
|
|
|
dropPGDatabase(dsn)
|
|
|
|
s, err := store.NewPostgresStore(dsn)
|
|
if err != nil {
|
|
t.Fatalf("Error getting store: %s", err)
|
|
}
|
|
|
|
s.InitDB()
|
|
|
|
testLoginAttemptStore(s, t)
|
|
}
|
|
|
|
func TestPostgresStoreWithCache(t *testing.T) {
|
|
var dsn string
|
|
var found bool
|
|
dsn, found = os.LookupEnv("APIARY_TEST_POSTGRES_DSN")
|
|
if !found {
|
|
t.Skipf("APIARY_TEST_POSTGRES_DSN not set. Skipping.")
|
|
}
|
|
|
|
dropPGDatabase(dsn)
|
|
|
|
pgs, err := store.NewPostgresStore(dsn)
|
|
if err != nil {
|
|
t.Fatalf("Error getting store: %s", err)
|
|
}
|
|
|
|
pgs.InitDB()
|
|
s := store.NewCachingStore(pgs)
|
|
|
|
testLoginAttemptStore(s, t)
|
|
}
|
|
|
|
func BenchmarkPostgresStore(b *testing.B) {
|
|
var dsn string
|
|
var found bool
|
|
dsn, found = os.LookupEnv("APIARY_TEST_POSTGRES_DSN")
|
|
if !found {
|
|
b.Skipf("APIARY_TEST_POSTGRES_DSN not set. Skipping.")
|
|
}
|
|
dropPGDatabase(dsn)
|
|
setupFunc := func() store.LoginAttemptStore {
|
|
dropPGDatabase(dsn)
|
|
pgs, err := store.NewPostgresStore(dsn)
|
|
if err != nil {
|
|
b.Fatalf("Error getting store: %s", err)
|
|
}
|
|
pgs.InitDB()
|
|
return pgs
|
|
}
|
|
benchmarkLoginAttemptStore(setupFunc, b)
|
|
dropPGDatabase(dsn)
|
|
}
|
|
|
|
func dropPGDatabase(dsn string) {
|
|
db, err := sql.Open("pgx", dsn)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
_, _ = db.Exec("DROP TABLE login_attempts")
|
|
}
|