You've already forked pocketbase
							
							
				mirror of
				https://github.com/pocketbase/pocketbase.git
				synced 2025-10-31 08:37:38 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			177 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package core_test
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/pocketbase/dbx"
 | |
| 	"github.com/pocketbase/pocketbase/core"
 | |
| 	"github.com/pocketbase/pocketbase/tests"
 | |
| )
 | |
| 
 | |
| func TestFindAllExternalAuthsByRecord(t *testing.T) {
 | |
| 	t.Parallel()
 | |
| 
 | |
| 	app, _ := tests.NewTestApp()
 | |
| 	defer app.Cleanup()
 | |
| 
 | |
| 	demo1, err := app.FindRecordById("demo1", "84nmscqy84lsi1t")
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	superuser1, err := app.FindAuthRecordByEmail(core.CollectionNameSuperusers, "test@example.com")
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	user1, err := app.FindAuthRecordByEmail("users", "test@example.com")
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	user2, err := app.FindAuthRecordByEmail("users", "test2@example.com")
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	user3, err := app.FindAuthRecordByEmail("users", "test3@example.com")
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	client1, err := app.FindAuthRecordByEmail("clients", "test@example.com")
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	scenarios := []struct {
 | |
| 		record   *core.Record
 | |
| 		expected []string
 | |
| 	}{
 | |
| 		{demo1, nil},
 | |
| 		{superuser1, nil},
 | |
| 		{client1, []string{"f1z5b3843pzc964"}},
 | |
| 		{user1, []string{"clmflokuq1xl341", "dlmflokuq1xl342"}},
 | |
| 		{user2, nil},
 | |
| 		{user3, []string{"5eto7nmys833164"}},
 | |
| 	}
 | |
| 
 | |
| 	for _, s := range scenarios {
 | |
| 		t.Run(s.record.Collection().Name+"_"+s.record.Id, func(t *testing.T) {
 | |
| 			result, err := app.FindAllExternalAuthsByRecord(s.record)
 | |
| 			if err != nil {
 | |
| 				t.Fatal(err)
 | |
| 			}
 | |
| 
 | |
| 			if len(result) != len(s.expected) {
 | |
| 				t.Fatalf("Expected total models %d, got %d", len(s.expected), len(result))
 | |
| 			}
 | |
| 
 | |
| 			for i, id := range s.expected {
 | |
| 				if result[i].Id != id {
 | |
| 					t.Errorf("[%d] Expected id %q, got %q", i, id, result[i].Id)
 | |
| 				}
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestFindAllExternalAuthsByCollection(t *testing.T) {
 | |
| 	t.Parallel()
 | |
| 
 | |
| 	app, _ := tests.NewTestApp()
 | |
| 	defer app.Cleanup()
 | |
| 
 | |
| 	demo1, err := app.FindCollectionByNameOrId("demo1")
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	superusers, err := app.FindCollectionByNameOrId(core.CollectionNameSuperusers)
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	clients, err := app.FindCollectionByNameOrId("clients")
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	users, err := app.FindCollectionByNameOrId("users")
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	scenarios := []struct {
 | |
| 		collection *core.Collection
 | |
| 		expected   []string
 | |
| 	}{
 | |
| 		{demo1, nil},
 | |
| 		{superusers, nil},
 | |
| 		{clients, []string{
 | |
| 			"f1z5b3843pzc964",
 | |
| 		}},
 | |
| 		{users, []string{
 | |
| 			"5eto7nmys833164",
 | |
| 			"clmflokuq1xl341",
 | |
| 			"dlmflokuq1xl342",
 | |
| 		}},
 | |
| 	}
 | |
| 
 | |
| 	for _, s := range scenarios {
 | |
| 		t.Run(s.collection.Name, func(t *testing.T) {
 | |
| 			result, err := app.FindAllExternalAuthsByCollection(s.collection)
 | |
| 			if err != nil {
 | |
| 				t.Fatal(err)
 | |
| 			}
 | |
| 
 | |
| 			if len(result) != len(s.expected) {
 | |
| 				t.Fatalf("Expected total models %d, got %d", len(s.expected), len(result))
 | |
| 			}
 | |
| 
 | |
| 			for i, id := range s.expected {
 | |
| 				if result[i].Id != id {
 | |
| 					t.Errorf("[%d] Expected id %q, got %q", i, id, result[i].Id)
 | |
| 				}
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestFindFirstExternalAuthByExpr(t *testing.T) {
 | |
| 	t.Parallel()
 | |
| 
 | |
| 	app, _ := tests.NewTestApp()
 | |
| 	defer app.Cleanup()
 | |
| 
 | |
| 	scenarios := []struct {
 | |
| 		expr       dbx.Expression
 | |
| 		expectedId string
 | |
| 	}{
 | |
| 		{dbx.HashExp{"collectionRef": "invalid"}, ""},
 | |
| 		{dbx.HashExp{"collectionRef": "_pb_users_auth_"}, "5eto7nmys833164"},
 | |
| 		{dbx.HashExp{"collectionRef": "_pb_users_auth_", "provider": "gitlab"}, "dlmflokuq1xl342"},
 | |
| 	}
 | |
| 
 | |
| 	for i, s := range scenarios {
 | |
| 		t.Run(fmt.Sprintf("%d_%v", i, s.expr.Build(app.DB().(*dbx.DB), dbx.Params{})), func(t *testing.T) {
 | |
| 			result, err := app.FindFirstExternalAuthByExpr(s.expr)
 | |
| 
 | |
| 			hasErr := err != nil
 | |
| 			expectErr := s.expectedId == ""
 | |
| 			if hasErr != expectErr {
 | |
| 				t.Fatalf("Expected hasErr %v, got %v", expectErr, hasErr)
 | |
| 			}
 | |
| 
 | |
| 			if hasErr {
 | |
| 				return
 | |
| 			}
 | |
| 
 | |
| 			if result.Id != s.expectedId {
 | |
| 				t.Errorf("Expected id %q, got %q", s.expectedId, result.Id)
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 |