apiary/honeypot/store/postgres_test.go
2021-09-17 15:00:58 +02:00

62 lines
1.1 KiB
Go

package store_test
import (
"database/sql"
"os"
"testing"
"github.uio.no/torjus/apiary/honeypot/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 dropPGDatabase(dsn string) {
db, err := sql.Open("pgx", dsn)
if err != nil {
panic(err)
}
_, err = db.Exec("DROP TABLE login_attempts")
if err != nil {
panic(err)
}
}