Files
upstream-traggo/auth/cleanup_test.go
upstream-mirror cda7c1a474
Some checks failed
build / build (push) Failing after 3s
snapshot of https://github.com/traggo/server.git (master, 2026-09-16; blobs > 131072B omitted)
2026-09-16 05:24:45 +05:00

139 lines
2.9 KiB
Go

package auth
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/traggo/server/model"
"github.com/traggo/server/test"
)
func TestCleanUp_stops(t *testing.T) {
db := test.InMemoryDB(t)
defer db.Close()
methodDone := make(chan struct{})
stopCleanUp := make(chan bool)
go func() {
CleanUp(db.DB, time.Microsecond*10, stopCleanUp)
methodDone <- struct{}{}
}()
stopCleanUp <- true
select {
case <-methodDone:
// expected
case <-time.After(time.Second):
t.Fail()
}
}
func TestCleanUp_removeExpiredDevices(t *testing.T) {
now := test.Time("2018-06-30T18:30:00Z")
timeDispose := fakeTime(now)
defer timeDispose()
db := test.InMemoryDB(t)
defer db.Close()
db.User(2)
db.Create(&model.Device{
ID: 1,
Token: "abc",
UserID: 2,
Name: "android 1",
Type: model.TypeShortExpiry,
ActiveAt: test.Time("2018-06-30T17:30:00Z"),
CreatedAt: test.Time("2009-06-30T18:30:00Z"),
})
db.Create(&model.Device{
ID: 2,
Token: "abc2",
UserID: 2,
Name: "android 2",
Type: model.TypeShortExpiry,
ActiveAt: test.Time("2018-06-30T17:29:59Z"),
CreatedAt: test.Time("2009-06-30T18:30:00Z"),
})
db.Create(&model.Device{
ID: 3,
Token: "abc3",
UserID: 2,
Name: "android 3",
Type: model.TypeLongExpiry,
ActiveAt: test.Time("2018-05-31T18:30:00Z"),
CreatedAt: test.Time("2009-06-30T18:30:00Z"),
})
db.Create(&model.Device{
ID: 4,
Token: "abc4",
UserID: 2,
Name: "android 4",
Type: model.TypeLongExpiry,
ActiveAt: test.Time("2018-05-31T18:29:59Z"),
CreatedAt: test.Time("2009-06-30T18:30:00Z"),
})
db.Create(&model.Device{
ID: 5,
Token: "abc5",
UserID: 2,
Name: "android 5",
Type: model.TypeNoExpiry,
ActiveAt: test.Time("2002-06-30T18:30:00Z"),
CreatedAt: test.Time("2000-06-30T18:30:00Z"),
})
stopCleanUp := make(chan bool)
go CleanUp(db.DB, time.Microsecond*10, stopCleanUp)
<-time.After(time.Millisecond * 20)
expected := []model.Device{
{
ID: 1,
Token: "abc",
UserID: 2,
Name: "android 1",
Type: model.TypeShortExpiry,
ActiveAt: test.Time("2018-06-30T17:30:00Z"),
CreatedAt: test.Time("2009-06-30T18:30:00Z"),
},
{
ID: 3,
Token: "abc3",
UserID: 2,
Name: "android 3",
Type: model.TypeLongExpiry,
ActiveAt: test.Time("2018-05-31T18:30:00Z"),
CreatedAt: test.Time("2009-06-30T18:30:00Z"),
},
{
ID: 5,
Token: "abc5",
UserID: 2,
Name: "android 5",
Type: model.TypeNoExpiry,
ActiveAt: test.Time("2002-06-30T18:30:00Z"),
CreatedAt: test.Time("2000-06-30T18:30:00Z"),
},
}
var devices []model.Device
db.Find(&devices)
assert.Equal(t, expected, devices)
stopCleanUp <- true
}
func fakeTime(t time.Time) func() {
old := timeNow
timeNow = func() time.Time {
return t
}
return func() {
timeNow = old
}
}