diff options
Diffstat (limited to 'internal/api')
-rw-r--r-- | internal/api/api_integration_test.go | 48 | ||||
-rw-r--r-- | internal/api/entry.go | 9 |
2 files changed, 57 insertions, 0 deletions
diff --git a/internal/api/api_integration_test.go b/internal/api/api_integration_test.go index 9259b590..df8d93a0 100644 --- a/internal/api/api_integration_test.go +++ b/internal/api/api_integration_test.go @@ -1986,6 +1986,54 @@ func TestGetAllEntriesEndpointWithFilter(t *testing.T) { } } +func TestGetGlobalEntriesEndpoint(t *testing.T) { + testConfig := newIntegrationTestConfig() + if !testConfig.isConfigured() { + t.Skip(skipIntegrationTestsMessage) + } + + adminClient := miniflux.NewClient(testConfig.testBaseURL, testConfig.testAdminUsername, testConfig.testAdminPassword) + + regularTestUser, err := adminClient.CreateUser(testConfig.genRandomUsername(), testConfig.testRegularPassword, false) + if err != nil { + t.Fatal(err) + } + defer adminClient.DeleteUser(regularTestUser.ID) + + regularUserClient := miniflux.NewClient(testConfig.testBaseURL, regularTestUser.Username, testConfig.testRegularPassword) + + feedID, err := regularUserClient.CreateFeed(&miniflux.FeedCreationRequest{ + FeedURL: testConfig.testFeedURL, + HideGlobally: true, + }) + + if err != nil { + t.Fatal(err) + } + + /* Not filtering on GloballyVisible should return all entries */ + feedEntries, err := regularUserClient.Entries(&miniflux.Filter{FeedID: feedID}) + + if err != nil { + t.Fatal(err) + } + + if len(feedEntries.Entries) == 0 { + t.Fatalf(`Expected entries but response contained none.`) + } + + /* Feed is hidden globally, so this should be empty */ + globallyVisibleEntries, err := regularUserClient.Entries(&miniflux.Filter{GloballyVisible: true}) + + if err != nil { + t.Fatal(err) + } + + if len(globallyVisibleEntries.Entries) != 0 { + t.Fatalf(`Expected no entries, got %d`, len(globallyVisibleEntries.Entries)) + } +} + func TestGetEntryEndpoints(t *testing.T) { testConfig := newIntegrationTestConfig() if !testConfig.isConfigured() { diff --git a/internal/api/entry.go b/internal/api/entry.go index d8fc01f6..121d2701 100644 --- a/internal/api/entry.go +++ b/internal/api/entry.go @@ -149,6 +149,15 @@ func (h *handler) findEntries(w http.ResponseWriter, r *http.Request, feedID int builder.WithLimit(limit) builder.WithTags(tags) builder.WithEnclosures() + + if request.HasQueryParam(r, "globally_visible") { + globallyVisible := request.QueryBoolParam(r, "globally_visible", true) + + if globallyVisible { + builder.WithGloballyVisible() + } + } + configureFilters(builder, r) entries, err := builder.GetEntries() |