Files

47 lines
1.2 KiB
Go

package store
import (
"path/filepath"
"testing"
"time"
)
func TestResourceTicketSurvivesReopenAndExpires(t *testing.T) {
path := filepath.Join(t.TempDir(), "rawmark.db")
s, err := Open(path)
if err != nil {
t.Fatal(err)
}
expires := time.Now().Add(time.Hour).Truncate(time.Second)
if err = s.CreateSession("parent", expires); err != nil {
t.Fatal(err)
}
if err = s.CreateTicket(ResourceTicket{Hash: "ticket-hash", SessionHash: "parent", Kind: "images", ExpiresAt: expires}); err != nil {
t.Fatal(err)
}
if err = s.Close(); err != nil {
t.Fatal(err)
}
s, err = Open(path)
if err != nil {
t.Fatal(err)
}
defer s.Close()
ticket, ok, err := s.Ticket("ticket-hash", false, time.Now())
if err != nil || !ok || ticket.Kind != "images" || ticket.SessionHash != "parent" || !ticket.ExpiresAt.Equal(expires) {
t.Fatal("重启后资源票据契约变化", err)
}
if _, ok, err = s.Ticket("ticket-hash", false, expires); err != nil || ok {
t.Fatal("过期票据仍有效", err)
}
if err = s.DeleteSession("parent"); err != nil {
t.Fatal(err)
}
if err = s.DeleteExpiredSessions(); err != nil {
t.Fatal(err)
}
if _, ok, err = s.Ticket("ticket-hash", false, time.Now()); err != nil || ok {
t.Fatal("未清理孤立票据", err)
}
}