import testutils/unittests import ../ratelimit/store/sqlite import ../ratelimit/store/store import chronos suite "SqliteRateLimitStore Tests": asyncTest "newSqliteRateLimitStore - creates store with default values": ## Given & When let now = Moment.now() let store = newSqliteRateLimitStore() defer: store.close() ## Then let bucketState = await store.loadBucketState() check bucketState.budget == 10 check bucketState.budgetCap == 10 check bucketState.lastTimeFull.epochSeconds() == now.epochSeconds() asyncTest "saveBucketState and loadBucketState - state persistence": ## Given let now = Moment.now() let store = newSqliteRateLimitStore() defer: store.close() 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.budget == newBucketState.budget check loadedState.budgetCap == newBucketState.budgetCap check loadedState.lastTimeFull.epochSeconds() == newBucketState.lastTimeFull.epochSeconds()