mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-09 04:30:16 +09:00
fix: add missing checks to several API and web handlers (#39501)
Several handlers skipped checks that their sibling routes or settings already enforce. This brings them in line. - Push mirror API honors `DISABLE_NEW_PUSH` and checks the caller's permission - Media API serves small files with the usual content headers - Issue attachment API ignores comment attachments - Push-to-create respects `FORCE_PRIVATE` - Profile feeds and follow actions respect `ENABLE_FEED` and owner visibility - Tag delete route refuses release tags - Refresh token grant only accepts refresh tokens - Gitea migrations bound the source's page size Co-authored-by: bircni <bircni@icloud.com>
This commit is contained in:
@@ -107,9 +107,8 @@ func NewGiteaDownloader(ctx context.Context, baseURL, repoPath, username, passwo
|
||||
if err != nil {
|
||||
log.Info("Unable to get global API settings. Ignoring these.")
|
||||
log.Debug("giteaClient.GetGlobalAPISettings. Error: %v", err)
|
||||
}
|
||||
if apiConf != nil {
|
||||
maxPerPage = apiConf.MaxResponseItems
|
||||
} else if apiConf != nil && apiConf.MaxResponseItems > 0 {
|
||||
maxPerPage = min(apiConf.MaxResponseItems, 100)
|
||||
}
|
||||
|
||||
return &GiteaDownloader{
|
||||
|
||||
@@ -5,6 +5,7 @@ package migrations
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
@@ -317,15 +318,16 @@ func TestGiteaDownloadRepo(t *testing.T) {
|
||||
|
||||
func TestGiteaDownloadCommentsPaging(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
maxResponseItems, commentCount, requests int
|
||||
paginated bool
|
||||
maxResponseItems, pageSize, commentCount, requests int
|
||||
paginated bool
|
||||
}{
|
||||
{maxResponseItems: 2, commentCount: 2, requests: 2},
|
||||
{maxResponseItems: 2, commentCount: 3, requests: 1},
|
||||
{maxResponseItems: 2, commentCount: 4, requests: 3, paginated: true},
|
||||
{maxResponseItems: 0, commentCount: 0, requests: 1},
|
||||
{maxResponseItems: 2, pageSize: 2, commentCount: 2, requests: 2},
|
||||
{maxResponseItems: 2, pageSize: 2, commentCount: 3, requests: 1},
|
||||
{maxResponseItems: 2, pageSize: 2, commentCount: 4, requests: 3, paginated: true},
|
||||
{maxResponseItems: 0, pageSize: 10, commentCount: 0, requests: 1},
|
||||
{maxResponseItems: math.MaxInt, pageSize: 100, commentCount: 0, requests: 1},
|
||||
} {
|
||||
t.Run(strconv.Itoa(tc.commentCount), func(t *testing.T) {
|
||||
t.Run(fmt.Sprintf("maxResponseItems=%d/comments=%d", tc.maxResponseItems, tc.commentCount), func(t *testing.T) {
|
||||
commentRequests := 0
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
switch r.URL.Path {
|
||||
@@ -352,6 +354,7 @@ func TestGiteaDownloadCommentsPaging(t *testing.T) {
|
||||
|
||||
downloader, err := NewGiteaDownloader(t.Context(), server.URL, "o/r", "", "", "")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tc.pageSize, downloader.maxPerPage)
|
||||
|
||||
comments, _, err := downloader.GetComments(t.Context(), &base.Issue{Number: 1})
|
||||
require.NoError(t, err)
|
||||
|
||||
Reference in New Issue
Block a user