mirror of
https://github.com/gofiber/storage.git
synced 2025-10-03 15:56:37 +08:00
✏ refactor storage
This commit is contained in:
@@ -3,12 +3,11 @@
|
||||
package mongodb
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gofiber/utils"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/gofiber/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -27,141 +26,104 @@ func getConfig() Config {
|
||||
}
|
||||
}
|
||||
|
||||
func contains(arr []string, item string) bool {
|
||||
for _, i := range arr {
|
||||
if i == item {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
func Test_Redis_Set(t *testing.T) {
|
||||
var (
|
||||
store = testStore
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
)
|
||||
|
||||
err := store.Set(key, val, 0)
|
||||
utils.AssertEqual(t, nil, err)
|
||||
}
|
||||
|
||||
func Test_MongoDB_Set_Get(t *testing.T) {
|
||||
if uri == "" {
|
||||
t.Skip()
|
||||
}
|
||||
store := New(getConfig())
|
||||
defer func() {
|
||||
_ = store.db.Client().Disconnect(context.TODO())
|
||||
}()
|
||||
func Test_Redis_Get(t *testing.T) {
|
||||
var (
|
||||
store = testStore
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
)
|
||||
|
||||
key := "example_key"
|
||||
value := []byte("123")
|
||||
|
||||
err := store.Set(key, value, 0)
|
||||
err := store.Set(key, val, 0)
|
||||
utils.AssertEqual(t, nil, err)
|
||||
|
||||
getVal, getErr := store.Get(key)
|
||||
|
||||
utils.AssertEqual(t, nil, getErr)
|
||||
utils.AssertEqual(t, value, getVal, "correctly set and get value")
|
||||
result, err := store.Get(key)
|
||||
utils.AssertEqual(t, nil, err)
|
||||
utils.AssertEqual(t, val, result)
|
||||
}
|
||||
|
||||
func Test_MongoDB_Get_Invalid(t *testing.T) {
|
||||
if uri == "" {
|
||||
t.Skip()
|
||||
}
|
||||
store := New(getConfig())
|
||||
defer func() {
|
||||
_ = store.db.Client().Disconnect(context.TODO())
|
||||
}()
|
||||
func Test_Redis_Set_Expiration(t *testing.T) {
|
||||
var (
|
||||
store = testStore
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
exp = 500 * time.Millisecond
|
||||
)
|
||||
|
||||
key := "random_invalid_key"
|
||||
err := store.Set(key, val, exp)
|
||||
utils.AssertEqual(t, nil, err)
|
||||
|
||||
getVal, getErr := store.Get(key)
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
utils.AssertEqual(t, true, getErr != nil)
|
||||
utils.AssertEqual(t, true, getVal == nil, "get nil if key not found")
|
||||
}
|
||||
|
||||
func Test_MongoDB_Set_Replace(t *testing.T) {
|
||||
if uri == "" {
|
||||
t.Skip()
|
||||
}
|
||||
store := New(getConfig())
|
||||
defer func() {
|
||||
_ = store.db.Client().Disconnect(context.TODO())
|
||||
}()
|
||||
func Test_Redis_Get_Expired(t *testing.T) {
|
||||
var (
|
||||
store = testStore
|
||||
key = "john"
|
||||
)
|
||||
|
||||
key := "replace_key"
|
||||
value1 := []byte("value1")
|
||||
value2 := []byte("value2")
|
||||
|
||||
setErr1 := store.Set(key, value1, 0)
|
||||
setErr2 := store.Set(key, value2, 0)
|
||||
val, getErr := store.Get(key)
|
||||
|
||||
utils.AssertEqual(t, true, setErr1 == nil)
|
||||
utils.AssertEqual(t, true, setErr2 == nil)
|
||||
utils.AssertEqual(t, true, getErr == nil)
|
||||
|
||||
utils.AssertEqual(t, value2, val, "replace value if key exists")
|
||||
result, err := store.Get(key)
|
||||
utils.AssertEqual(t, ErrNotExist, err)
|
||||
utils.AssertEqual(t, true, len(result) == 0)
|
||||
}
|
||||
|
||||
func Test_MongoDB_SetExpiry(t *testing.T) {
|
||||
if uri == "" {
|
||||
t.Skip()
|
||||
}
|
||||
store := New(getConfig())
|
||||
defer func() {
|
||||
_ = store.db.Client().Disconnect(context.TODO())
|
||||
}()
|
||||
func Test_Redis_Get_NotExist(t *testing.T) {
|
||||
var store = testStore
|
||||
|
||||
key := "example_key_2"
|
||||
value := []byte("123")
|
||||
|
||||
setErr := store.Set(key, value, 1*time.Nanosecond)
|
||||
utils.AssertEqual(t, true, setErr == nil)
|
||||
|
||||
val, getErr := store.Get(key)
|
||||
utils.AssertEqual(t, true, getErr == nil)
|
||||
utils.AssertEqual(t, true, val == nil, "get nil if key is expire")
|
||||
result, err := store.Get("notexist")
|
||||
utils.AssertEqual(t, ErrNotExist, err)
|
||||
utils.AssertEqual(t, true, len(result) == 0)
|
||||
}
|
||||
|
||||
func Test_MongoDB_Delete(t *testing.T) {
|
||||
if uri == "" {
|
||||
t.Skip()
|
||||
}
|
||||
store := New(getConfig())
|
||||
defer func() {
|
||||
_ = store.db.Client().Disconnect(context.TODO())
|
||||
}()
|
||||
func Test_Redis_Delete(t *testing.T) {
|
||||
var (
|
||||
store = testStore
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
)
|
||||
|
||||
key := "example_key_3"
|
||||
value := []byte("123")
|
||||
|
||||
err := store.Set(key, value, 0)
|
||||
err := store.Set(key, val, 0)
|
||||
utils.AssertEqual(t, nil, err)
|
||||
|
||||
err = store.Delete(key)
|
||||
utils.AssertEqual(t, nil, err)
|
||||
|
||||
getVal, getErr := store.Get(key)
|
||||
utils.AssertEqual(t, true, getErr != nil)
|
||||
utils.AssertEqual(t, true, getVal == nil, "correctly delete value")
|
||||
result, err := store.Get(key)
|
||||
utils.AssertEqual(t, ErrNotExist, err)
|
||||
utils.AssertEqual(t, true, len(result) == 0)
|
||||
}
|
||||
|
||||
func Test_MongoDB_Clear(t *testing.T) {
|
||||
if uri == "" {
|
||||
t.Skip()
|
||||
}
|
||||
store := New(getConfig())
|
||||
defer func() {
|
||||
_ = store.db.Client().Disconnect(context.TODO())
|
||||
}()
|
||||
|
||||
key := "example_key_4"
|
||||
value := []byte("123")
|
||||
|
||||
err := store.Set(key, value, 10)
|
||||
names, _ := store.db.ListCollectionNames(context.TODO(), bson.D{})
|
||||
func Test_Redis_Clear(t *testing.T) {
|
||||
var (
|
||||
store = testStore
|
||||
val = []byte("doe")
|
||||
)
|
||||
|
||||
err := store.Set("john1", val, 0)
|
||||
utils.AssertEqual(t, nil, err)
|
||||
utils.AssertEqual(t, true, contains(names, colName), "has collection")
|
||||
|
||||
cErr := store.Clear()
|
||||
err = store.Set("john2", val, 0)
|
||||
utils.AssertEqual(t, nil, err)
|
||||
|
||||
names2, _ := store.db.ListCollectionNames(context.TODO(), bson.D{})
|
||||
utils.AssertEqual(t, nil, cErr)
|
||||
utils.AssertEqual(t, false, contains(names2, colName), "do not have collection")
|
||||
err = store.Clear()
|
||||
utils.AssertEqual(t, nil, err)
|
||||
|
||||
result, err := store.Get("john1")
|
||||
utils.AssertEqual(t, ErrNotExist, err)
|
||||
utils.AssertEqual(t, true, len(result) == 0)
|
||||
|
||||
result, err = store.Get("john2")
|
||||
utils.AssertEqual(t, ErrNotExist, err)
|
||||
utils.AssertEqual(t, true, len(result) == 0)
|
||||
}
|
||||
|
Reference in New Issue
Block a user