Adding upstream version 0.28.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
88f1d47ab6
commit
e28c88ef14
933 changed files with 194711 additions and 0 deletions
310
core/external_auth_model_test.go
Normal file
310
core/external_auth_model_test.go
Normal file
|
@ -0,0 +1,310 @@
|
|||
package core_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
"github.com/pocketbase/pocketbase/tests"
|
||||
"github.com/pocketbase/pocketbase/tools/types"
|
||||
)
|
||||
|
||||
func TestNewExternalAuth(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
ea := core.NewExternalAuth(app)
|
||||
|
||||
if ea.Collection().Name != core.CollectionNameExternalAuths {
|
||||
t.Fatalf("Expected record with %q collection, got %q", core.CollectionNameExternalAuths, ea.Collection().Name)
|
||||
}
|
||||
}
|
||||
|
||||
func TestExternalAuthProxyRecord(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
record := core.NewRecord(core.NewBaseCollection("test"))
|
||||
record.Id = "test_id"
|
||||
|
||||
ea := core.ExternalAuth{}
|
||||
ea.SetProxyRecord(record)
|
||||
|
||||
if ea.ProxyRecord() == nil || ea.ProxyRecord().Id != record.Id {
|
||||
t.Fatalf("Expected proxy record with id %q, got %v", record.Id, ea.ProxyRecord())
|
||||
}
|
||||
}
|
||||
|
||||
func TestExternalAuthRecordRef(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
ea := core.NewExternalAuth(app)
|
||||
|
||||
testValues := []string{"test_1", "test2", ""}
|
||||
for i, testValue := range testValues {
|
||||
t.Run(fmt.Sprintf("%d_%q", i, testValue), func(t *testing.T) {
|
||||
ea.SetRecordRef(testValue)
|
||||
|
||||
if v := ea.RecordRef(); v != testValue {
|
||||
t.Fatalf("Expected getter %q, got %q", testValue, v)
|
||||
}
|
||||
|
||||
if v := ea.GetString("recordRef"); v != testValue {
|
||||
t.Fatalf("Expected field value %q, got %q", testValue, v)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestExternalAuthCollectionRef(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
ea := core.NewExternalAuth(app)
|
||||
|
||||
testValues := []string{"test_1", "test2", ""}
|
||||
for i, testValue := range testValues {
|
||||
t.Run(fmt.Sprintf("%d_%q", i, testValue), func(t *testing.T) {
|
||||
ea.SetCollectionRef(testValue)
|
||||
|
||||
if v := ea.CollectionRef(); v != testValue {
|
||||
t.Fatalf("Expected getter %q, got %q", testValue, v)
|
||||
}
|
||||
|
||||
if v := ea.GetString("collectionRef"); v != testValue {
|
||||
t.Fatalf("Expected field value %q, got %q", testValue, v)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestExternalAuthProvider(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
ea := core.NewExternalAuth(app)
|
||||
|
||||
testValues := []string{"test_1", "test2", ""}
|
||||
for i, testValue := range testValues {
|
||||
t.Run(fmt.Sprintf("%d_%q", i, testValue), func(t *testing.T) {
|
||||
ea.SetProvider(testValue)
|
||||
|
||||
if v := ea.Provider(); v != testValue {
|
||||
t.Fatalf("Expected getter %q, got %q", testValue, v)
|
||||
}
|
||||
|
||||
if v := ea.GetString("provider"); v != testValue {
|
||||
t.Fatalf("Expected field value %q, got %q", testValue, v)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestExternalAuthProviderId(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
ea := core.NewExternalAuth(app)
|
||||
|
||||
testValues := []string{"test_1", "test2", ""}
|
||||
for i, testValue := range testValues {
|
||||
t.Run(fmt.Sprintf("%d_%q", i, testValue), func(t *testing.T) {
|
||||
ea.SetProviderId(testValue)
|
||||
|
||||
if v := ea.ProviderId(); v != testValue {
|
||||
t.Fatalf("Expected getter %q, got %q", testValue, v)
|
||||
}
|
||||
|
||||
if v := ea.GetString("providerId"); v != testValue {
|
||||
t.Fatalf("Expected field value %q, got %q", testValue, v)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestExternalAuthCreated(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
ea := core.NewExternalAuth(app)
|
||||
|
||||
if v := ea.Created().String(); v != "" {
|
||||
t.Fatalf("Expected empty created, got %q", v)
|
||||
}
|
||||
|
||||
now := types.NowDateTime()
|
||||
ea.SetRaw("created", now)
|
||||
|
||||
if v := ea.Created().String(); v != now.String() {
|
||||
t.Fatalf("Expected %q created, got %q", now.String(), v)
|
||||
}
|
||||
}
|
||||
|
||||
func TestExternalAuthUpdated(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
ea := core.NewExternalAuth(app)
|
||||
|
||||
if v := ea.Updated().String(); v != "" {
|
||||
t.Fatalf("Expected empty updated, got %q", v)
|
||||
}
|
||||
|
||||
now := types.NowDateTime()
|
||||
ea.SetRaw("updated", now)
|
||||
|
||||
if v := ea.Updated().String(); v != now.String() {
|
||||
t.Fatalf("Expected %q updated, got %q", now.String(), v)
|
||||
}
|
||||
}
|
||||
|
||||
func TestExternalAuthPreValidate(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
externalAuthsCol, err := app.FindCollectionByNameOrId(core.CollectionNameExternalAuths)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
user, err := app.FindAuthRecordByEmail("users", "test@example.com")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
t.Run("no proxy record", func(t *testing.T) {
|
||||
externalAuth := &core.ExternalAuth{}
|
||||
|
||||
if err := app.Validate(externalAuth); err == nil {
|
||||
t.Fatal("Expected collection validation error")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("non-ExternalAuth collection", func(t *testing.T) {
|
||||
externalAuth := &core.ExternalAuth{}
|
||||
externalAuth.SetProxyRecord(core.NewRecord(core.NewBaseCollection("invalid")))
|
||||
externalAuth.SetRecordRef(user.Id)
|
||||
externalAuth.SetCollectionRef(user.Collection().Id)
|
||||
externalAuth.SetProvider("gitlab")
|
||||
externalAuth.SetProviderId("test123")
|
||||
|
||||
if err := app.Validate(externalAuth); err == nil {
|
||||
t.Fatal("Expected collection validation error")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("ExternalAuth collection", func(t *testing.T) {
|
||||
externalAuth := &core.ExternalAuth{}
|
||||
externalAuth.SetProxyRecord(core.NewRecord(externalAuthsCol))
|
||||
externalAuth.SetRecordRef(user.Id)
|
||||
externalAuth.SetCollectionRef(user.Collection().Id)
|
||||
externalAuth.SetProvider("gitlab")
|
||||
externalAuth.SetProviderId("test123")
|
||||
|
||||
if err := app.Validate(externalAuth); err != nil {
|
||||
t.Fatalf("Expected nil validation error, got %v", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestExternalAuthValidateHook(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
user, err := app.FindAuthRecordByEmail("users", "test@example.com")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
demo1, err := app.FindRecordById("demo1", "84nmscqy84lsi1t")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
scenarios := []struct {
|
||||
name string
|
||||
externalAuth func() *core.ExternalAuth
|
||||
expectErrors []string
|
||||
}{
|
||||
{
|
||||
"empty",
|
||||
func() *core.ExternalAuth {
|
||||
return core.NewExternalAuth(app)
|
||||
},
|
||||
[]string{"collectionRef", "recordRef", "provider", "providerId"},
|
||||
},
|
||||
{
|
||||
"non-auth collection",
|
||||
func() *core.ExternalAuth {
|
||||
ea := core.NewExternalAuth(app)
|
||||
ea.SetCollectionRef(demo1.Collection().Id)
|
||||
ea.SetRecordRef(demo1.Id)
|
||||
ea.SetProvider("gitlab")
|
||||
ea.SetProviderId("test123")
|
||||
return ea
|
||||
},
|
||||
[]string{"collectionRef"},
|
||||
},
|
||||
{
|
||||
"disabled provider",
|
||||
func() *core.ExternalAuth {
|
||||
ea := core.NewExternalAuth(app)
|
||||
ea.SetCollectionRef(user.Collection().Id)
|
||||
ea.SetRecordRef("missing")
|
||||
ea.SetProvider("apple")
|
||||
ea.SetProviderId("test123")
|
||||
return ea
|
||||
},
|
||||
[]string{"recordRef"},
|
||||
},
|
||||
{
|
||||
"missing record id",
|
||||
func() *core.ExternalAuth {
|
||||
ea := core.NewExternalAuth(app)
|
||||
ea.SetCollectionRef(user.Collection().Id)
|
||||
ea.SetRecordRef("missing")
|
||||
ea.SetProvider("gitlab")
|
||||
ea.SetProviderId("test123")
|
||||
return ea
|
||||
},
|
||||
[]string{"recordRef"},
|
||||
},
|
||||
{
|
||||
"valid ref",
|
||||
func() *core.ExternalAuth {
|
||||
ea := core.NewExternalAuth(app)
|
||||
ea.SetCollectionRef(user.Collection().Id)
|
||||
ea.SetRecordRef(user.Id)
|
||||
ea.SetProvider("gitlab")
|
||||
ea.SetProviderId("test123")
|
||||
return ea
|
||||
},
|
||||
[]string{},
|
||||
},
|
||||
}
|
||||
|
||||
for _, s := range scenarios {
|
||||
t.Run(s.name, func(t *testing.T) {
|
||||
errs := app.Validate(s.externalAuth())
|
||||
tests.TestValidationErrors(t, errs, s.expectErrors)
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue