77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
|
package storage_test
|
||
|
|
||
|
import (
|
||
|
"github.com/leafee98/paste-abroad/internel/storage"
|
||
|
"github.com/leafee98/paste-abroad/internel/storage/sqlite"
|
||
|
|
||
|
"time"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func compareBytes(a []byte, b []byte) bool {
|
||
|
if len(a) != len(b) {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
for i := range a {
|
||
|
if a[i] != b[i] {
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
func TestSqlite(t * testing.T) {
|
||
|
s, err := sqlite.New("", 8)
|
||
|
if err != nil {
|
||
|
t.Fatalf("Fatal on New: %v", err)
|
||
|
}
|
||
|
defer s.Close()
|
||
|
|
||
|
testGetSave(s, t)
|
||
|
}
|
||
|
|
||
|
func testGetSave(s *sqlite.StorageSqlite, t * testing.T) {
|
||
|
var a = storage.Paste {
|
||
|
Content: []byte("abc"),
|
||
|
Expire: time.Now().UnixMilli() + 15 * 1000,
|
||
|
}
|
||
|
var b = storage.Paste {
|
||
|
Content: []byte("def"),
|
||
|
Expire: time.Now().UnixMilli() - 15 * 1000,
|
||
|
}
|
||
|
|
||
|
id_a, err := s.Save(&a)
|
||
|
if err != nil {
|
||
|
t.Fatalf("Fatal on Save a: %v", err)
|
||
|
}
|
||
|
|
||
|
id_b, err := s.Save(&b)
|
||
|
if err != nil {
|
||
|
t.Fatalf("Fatal on Save b: %v", err)
|
||
|
}
|
||
|
|
||
|
affected, err := s.Purge()
|
||
|
if err != nil {
|
||
|
t.Fatalf("Fatal on Purge: %v", err)
|
||
|
}
|
||
|
if affected != 1 {
|
||
|
t.Fatalf("Purged %v rows, expect 1 row", affected)
|
||
|
}
|
||
|
|
||
|
var p_a, _ *storage.Paste
|
||
|
|
||
|
if p_a, err = s.Get(id_a); err != nil {
|
||
|
t.Fatalf("Fatal on Get a: %v", err)
|
||
|
|
||
|
if !compareBytes(p_a.Content, []byte("abc")) {
|
||
|
t.Fatal("Content not match")
|
||
|
}
|
||
|
}
|
||
|
if _, err = s.Get(id_b); err == nil {
|
||
|
t.Fatalf("Fatal on Get b, it shoud have been purged")
|
||
|
|
||
|
}
|
||
|
}
|