feat: associate dataset sources with owners

This commit is contained in:
2026-07-23 21:44:47 +08:00
parent 50d8246915
commit 55ff320cec
7 changed files with 112 additions and 14 deletions

View File

@@ -40,6 +40,8 @@ func TestDatasetAPIConnectsSourcesItemsAndSyncTasks(t *testing.T) {
require.Empty(t, source.IconURL)
var storedSource models.SaDatasetSource
require.NoError(t, database.Where("identity = ?", source.ID).First(&storedSource).Error)
require.Equal(t, owner.ID, storedSource.OwnerID)
require.Equal(t, owner.Identity, storedSource.OwnerIdentity)
require.Equal(t, owner.ID, storedSource.CreatedBy)
require.Equal(t, owner.Identity, storedSource.CreatedByIdentity)
@@ -102,6 +104,25 @@ func TestDatasetAPIConnectsSourcesItemsAndSyncTasks(t *testing.T) {
require.Zero(t, cronCount)
}
func TestDatasetSourceAuthorizationUsesOwner(t *testing.T) {
database := newDatasetTestDatabase(t)
owner := createDatasetTestUser(t, database, "owner@example.com")
creator := createDatasetTestUser(t, database, "creator@example.com")
source := models.SaDatasetSource{
OwnerID: owner.ID, CreatedBy: creator.ID,
Name: "Owned feed", Kind: "rss", URL: "https://example.com/feed", Enabled: true,
}
require.NoError(t, database.Create(&source).Error)
ownerSources, err := NewService(database).ListSources(owner.ID)
require.NoError(t, err)
require.Len(t, ownerSources, 1)
creatorSources, err := NewService(database).ListSources(creator.ID)
require.NoError(t, err)
require.Empty(t, creatorSources)
}
func newDatasetTestDatabase(t *testing.T) *gorm.DB {
t.Helper()
database, err := gorm.Open(sqlite.Open(fmt.Sprintf("file:%s?mode=memory&cache=shared", t.Name())), &gorm.Config{})