mirror of
https://github.com/logos-messaging/nim-chat-sdk.git
synced 2026-01-05 07:33:07 +00:00
49 lines
1.3 KiB
Nim
49 lines
1.3 KiB
Nim
import testutils/unittests
|
|
import ../ratelimit/store/sqlite
|
|
import ../ratelimit/store/store
|
|
import chronos
|
|
import db_connector/db_sqlite
|
|
import ../chat_sdk/migration
|
|
import std/[options, os]
|
|
|
|
suite "SqliteRateLimitStore Tests":
|
|
setup:
|
|
let db = open("test-ratelimit.db", "", "", "")
|
|
runMigrations(db)
|
|
|
|
teardown:
|
|
if db != nil:
|
|
db.close()
|
|
if fileExists("test-ratelimit.db"):
|
|
removeFile("test-ratelimit.db")
|
|
|
|
asyncTest "newSqliteRateLimitStore - empty state":
|
|
## Given
|
|
let store = newSqliteRateLimitStore(db)
|
|
|
|
## When
|
|
let loadedState = await store.loadBucketState()
|
|
|
|
## Then
|
|
check loadedState.isNone()
|
|
|
|
asyncTest "saveBucketState and loadBucketState - state persistence":
|
|
## Given
|
|
let store = newSqliteRateLimitStore(db)
|
|
|
|
let now = Moment.now()
|
|
echo "now: ", now.epochSeconds()
|
|
let newBucketState = BucketState(budget: 5, budgetCap: 20, lastTimeFull: now)
|
|
|
|
## When
|
|
let saveResult = await store.saveBucketState(newBucketState)
|
|
let loadedState = await store.loadBucketState()
|
|
|
|
## Then
|
|
check saveResult == true
|
|
check loadedState.isSome()
|
|
check loadedState.get().budget == newBucketState.budget
|
|
check loadedState.get().budgetCap == newBucketState.budgetCap
|
|
check loadedState.get().lastTimeFull.epochSeconds() ==
|
|
newBucketState.lastTimeFull.epochSeconds()
|