snapshot of https://github.com/traggo/server.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
build / build (push) Failing after 3s
Some checks failed
build / build (push) Failing after 3s
This commit is contained in:
138
auth/cleanup_test.go
Normal file
138
auth/cleanup_test.go
Normal file
@@ -0,0 +1,138 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user