mirror of
https://github.com/pocketbase/pocketbase.git
synced 2025-02-10 12:36:41 +02:00
148 lines
3.4 KiB
Go
148 lines
3.4 KiB
Go
|
package tests
|
||
|
|
||
|
import (
|
||
|
"strconv"
|
||
|
"time"
|
||
|
|
||
|
"github.com/pocketbase/pocketbase/core"
|
||
|
"github.com/pocketbase/pocketbase/tools/types"
|
||
|
)
|
||
|
|
||
|
func StubOTPRecords(app core.App) error {
|
||
|
superuser2, err := app.FindAuthRecordByEmail(core.CollectionNameSuperusers, "test2@example.com")
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
superuser2.SetRaw("stubId", "superuser2")
|
||
|
|
||
|
superuser3, err := app.FindAuthRecordByEmail(core.CollectionNameSuperusers, "test3@example.com")
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
superuser3.SetRaw("stubId", "superuser3")
|
||
|
|
||
|
user1, err := app.FindAuthRecordByEmail("users", "test@example.com")
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
user1.SetRaw("stubId", "user1")
|
||
|
|
||
|
now := types.NowDateTime()
|
||
|
old := types.NowDateTime().Add(-1 * time.Hour)
|
||
|
|
||
|
stubs := map[*core.Record][]types.DateTime{
|
||
|
superuser2: {now, now.Add(-1 * time.Millisecond), old, now.Add(-2 * time.Millisecond), old.Add(-1 * time.Millisecond)},
|
||
|
superuser3: {now.Add(-3 * time.Millisecond), now.Add(-2 * time.Minute)},
|
||
|
user1: {old},
|
||
|
}
|
||
|
for record, idDates := range stubs {
|
||
|
for i, date := range idDates {
|
||
|
otp := core.NewOTP(app)
|
||
|
otp.Id = record.GetString("stubId") + "_" + strconv.Itoa(i)
|
||
|
otp.SetRecordRef(record.Id)
|
||
|
otp.SetCollectionRef(record.Collection().Id)
|
||
|
otp.SetPassword("test123")
|
||
|
otp.SetRaw("created", date)
|
||
|
if err := app.SaveNoValidate(otp); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func StubMFARecords(app core.App) error {
|
||
|
superuser2, err := app.FindAuthRecordByEmail(core.CollectionNameSuperusers, "test2@example.com")
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
superuser2.SetRaw("stubId", "superuser2")
|
||
|
|
||
|
superuser3, err := app.FindAuthRecordByEmail(core.CollectionNameSuperusers, "test3@example.com")
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
superuser3.SetRaw("stubId", "superuser3")
|
||
|
|
||
|
user1, err := app.FindAuthRecordByEmail("users", "test@example.com")
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
user1.SetRaw("stubId", "user1")
|
||
|
|
||
|
now := types.NowDateTime()
|
||
|
old := types.NowDateTime().Add(-1 * time.Hour)
|
||
|
|
||
|
type mfaData struct {
|
||
|
method string
|
||
|
date types.DateTime
|
||
|
}
|
||
|
|
||
|
stubs := map[*core.Record][]mfaData{
|
||
|
superuser2: {
|
||
|
{core.MFAMethodOTP, now},
|
||
|
{core.MFAMethodOTP, old},
|
||
|
{core.MFAMethodPassword, now.Add(-2 * time.Minute)},
|
||
|
{core.MFAMethodPassword, now.Add(-1 * time.Millisecond)},
|
||
|
{core.MFAMethodOAuth2, old.Add(-1 * time.Millisecond)},
|
||
|
},
|
||
|
superuser3: {
|
||
|
{core.MFAMethodOAuth2, now.Add(-3 * time.Millisecond)},
|
||
|
{core.MFAMethodPassword, now.Add(-3 * time.Minute)},
|
||
|
},
|
||
|
user1: {
|
||
|
{core.MFAMethodOAuth2, old},
|
||
|
},
|
||
|
}
|
||
|
for record, idDates := range stubs {
|
||
|
for i, data := range idDates {
|
||
|
otp := core.NewMFA(app)
|
||
|
otp.Id = record.GetString("stubId") + "_" + strconv.Itoa(i)
|
||
|
otp.SetRecordRef(record.Id)
|
||
|
otp.SetCollectionRef(record.Collection().Id)
|
||
|
otp.SetMethod(data.method)
|
||
|
otp.SetRaw("created", data.date)
|
||
|
if err := app.SaveNoValidate(otp); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func StubLogsData(app *TestApp) error {
|
||
|
_, err := app.AuxDB().NewQuery(`
|
||
|
delete from {{_logs}};
|
||
|
|
||
|
insert into {{_logs}} (
|
||
|
[[id]],
|
||
|
[[level]],
|
||
|
[[message]],
|
||
|
[[data]],
|
||
|
[[created]],
|
||
|
[[updated]]
|
||
|
)
|
||
|
values
|
||
|
(
|
||
|
"873f2133-9f38-44fb-bf82-c8f53b310d91",
|
||
|
0,
|
||
|
"test_message1",
|
||
|
'{"status":200}',
|
||
|
"2022-05-01 10:00:00.123Z",
|
||
|
"2022-05-01 10:00:00.123Z"
|
||
|
),
|
||
|
(
|
||
|
"f2133873-44fb-9f38-bf82-c918f53b310d",
|
||
|
8,
|
||
|
"test_message2",
|
||
|
'{"status":400}',
|
||
|
"2022-05-02 10:00:00.123Z",
|
||
|
"2022-05-02 10:00:00.123Z"
|
||
|
);
|
||
|
`).Execute()
|
||
|
|
||
|
return err
|
||
|
}
|