36 lines
982 B
Go
36 lines
982 B
Go
package sybclient
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"go-admin/app/goauto/models"
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func TestAuthLeaseAllowsOnlyOneRefreshOwner(t *testing.T) {
|
|
db, err := gorm.Open(sqlite.Open("file:syb-auth-lease?mode=memory&cache=shared"), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := db.AutoMigrate(&models.SYBSessionAuthLease{}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ctx := context.Background()
|
|
first, err := claimAuthLease(ctx, db, "operator", "first", time.Minute)
|
|
if err != nil || !first {
|
|
t.Fatalf("first owner should claim: %v %v", first, err)
|
|
}
|
|
second, err := claimAuthLease(ctx, db, "operator", "second", time.Minute)
|
|
if err != nil || second {
|
|
t.Fatalf("second owner must wait: %v %v", second, err)
|
|
}
|
|
releaseAuthLease(ctx, db, "operator", "first")
|
|
second, err = claimAuthLease(ctx, db, "operator", "second", time.Minute)
|
|
if err != nil || !second {
|
|
t.Fatalf("lease should be reusable: %v %v", second, err)
|
|
}
|
|
}
|