mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	API: Expose its limitation settings (#12714)
* API: Expose its limitation settings * TESTs Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		@@ -11,25 +11,11 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	api "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestAPIAllowedReactions(t *testing.T) {
 | 
			
		||||
	defer prepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
	a := new(api.GeneralUISettings)
 | 
			
		||||
 | 
			
		||||
	req := NewRequest(t, "GET", "/api/v1/settings/ui")
 | 
			
		||||
	resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
	DecodeJSON(t, resp, &a)
 | 
			
		||||
	assert.Len(t, a.AllowedReactions, len(setting.UI.Reactions))
 | 
			
		||||
	assert.ElementsMatch(t, setting.UI.Reactions, a.AllowedReactions)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestAPIIssuesReactions(t *testing.T) {
 | 
			
		||||
	defer prepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										49
									
								
								integrations/api_settings_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								integrations/api_settings_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
// Copyright 2020 The Gitea Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package integrations
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	api "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestAPIExposedSettings(t *testing.T) {
 | 
			
		||||
	defer prepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
	ui := new(api.GeneralUISettings)
 | 
			
		||||
	req := NewRequest(t, "GET", "/api/v1/settings/ui")
 | 
			
		||||
	resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
	DecodeJSON(t, resp, &ui)
 | 
			
		||||
	assert.Len(t, ui.AllowedReactions, len(setting.UI.Reactions))
 | 
			
		||||
	assert.ElementsMatch(t, setting.UI.Reactions, ui.AllowedReactions)
 | 
			
		||||
 | 
			
		||||
	apiSettings := new(api.GeneralAPISettings)
 | 
			
		||||
	req = NewRequest(t, "GET", "/api/v1/settings/api")
 | 
			
		||||
	resp = MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
	DecodeJSON(t, resp, &apiSettings)
 | 
			
		||||
	assert.EqualValues(t, &api.GeneralAPISettings{
 | 
			
		||||
		MaxResponseItems:       setting.API.MaxResponseItems,
 | 
			
		||||
		DefaultPagingNum:       setting.API.DefaultPagingNum,
 | 
			
		||||
		DefaultGitTreesPerPage: setting.API.DefaultGitTreesPerPage,
 | 
			
		||||
		DefaultMaxBlobSize:     setting.API.DefaultMaxBlobSize,
 | 
			
		||||
	}, apiSettings)
 | 
			
		||||
 | 
			
		||||
	repo := new(api.GeneralRepoSettings)
 | 
			
		||||
	req = NewRequest(t, "GET", "/api/v1/settings/repository")
 | 
			
		||||
	resp = MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
	DecodeJSON(t, resp, &repo)
 | 
			
		||||
	assert.EqualValues(t, &api.GeneralRepoSettings{
 | 
			
		||||
		MirrorsDisabled: setting.Repository.DisableMirrors,
 | 
			
		||||
		HTTPGitDisabled: setting.Repository.DisableHTTPGit,
 | 
			
		||||
	}, repo)
 | 
			
		||||
}
 | 
			
		||||
@@ -14,3 +14,11 @@ type GeneralRepoSettings struct {
 | 
			
		||||
type GeneralUISettings struct {
 | 
			
		||||
	AllowedReactions []string `json:"allowed_reactions"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GeneralAPISettings contains global api settings exposed by it
 | 
			
		||||
type GeneralAPISettings struct {
 | 
			
		||||
	MaxResponseItems       int   `json:"max_response_items"`
 | 
			
		||||
	DefaultPagingNum       int   `json:"default_paging_num"`
 | 
			
		||||
	DefaultGitTreesPerPage int   `json:"default_git_trees_per_page"`
 | 
			
		||||
	DefaultMaxBlobSize     int64 `json:"default_max_blob_size"`
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -521,6 +521,7 @@ func RegisterRoutes(m *macaron.Macaron) {
 | 
			
		||||
		m.Post("/markdown/raw", misc.MarkdownRaw)
 | 
			
		||||
		m.Group("/settings", func() {
 | 
			
		||||
			m.Get("/ui", settings.GetGeneralUISettings)
 | 
			
		||||
			m.Get("/api", settings.GetGeneralAPISettings)
 | 
			
		||||
			m.Get("/repository", settings.GetGeneralRepoSettings)
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,24 @@ func GetGeneralUISettings(ctx *context.APIContext) {
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetGeneralAPISettings returns instance's global settings for api
 | 
			
		||||
func GetGeneralAPISettings(ctx *context.APIContext) {
 | 
			
		||||
	// swagger:operation GET /settings/api settings getGeneralAPISettings
 | 
			
		||||
	// ---
 | 
			
		||||
	// summary: Get instance's global settings for api
 | 
			
		||||
	// produces:
 | 
			
		||||
	// - application/json
 | 
			
		||||
	// responses:
 | 
			
		||||
	//   "200":
 | 
			
		||||
	//     "$ref": "#/responses/GeneralAPISettings"
 | 
			
		||||
	ctx.JSON(http.StatusOK, api.GeneralAPISettings{
 | 
			
		||||
		MaxResponseItems:       setting.API.MaxResponseItems,
 | 
			
		||||
		DefaultPagingNum:       setting.API.DefaultPagingNum,
 | 
			
		||||
		DefaultGitTreesPerPage: setting.API.DefaultGitTreesPerPage,
 | 
			
		||||
		DefaultMaxBlobSize:     setting.API.DefaultMaxBlobSize,
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetGeneralRepoSettings returns instance's global settings for repositories
 | 
			
		||||
func GetGeneralRepoSettings(ctx *context.APIContext) {
 | 
			
		||||
	// swagger:operation GET /settings/repository settings getGeneralRepositorySettings
 | 
			
		||||
 
 | 
			
		||||
@@ -19,3 +19,10 @@ type swaggerResponseGeneralUISettings struct {
 | 
			
		||||
	// in:body
 | 
			
		||||
	Body api.GeneralUISettings `json:"body"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GeneralAPISettings
 | 
			
		||||
// swagger:response GeneralAPISettings
 | 
			
		||||
type swaggerResponseGeneralAPISettings struct {
 | 
			
		||||
	// in:body
 | 
			
		||||
	Body api.GeneralAPISettings `json:"body"`
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -8672,6 +8672,23 @@
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "/settings/api": {
 | 
			
		||||
      "get": {
 | 
			
		||||
        "produces": [
 | 
			
		||||
          "application/json"
 | 
			
		||||
        ],
 | 
			
		||||
        "tags": [
 | 
			
		||||
          "settings"
 | 
			
		||||
        ],
 | 
			
		||||
        "summary": "Get instance's global settings for api",
 | 
			
		||||
        "operationId": "getGeneralAPISettings",
 | 
			
		||||
        "responses": {
 | 
			
		||||
          "200": {
 | 
			
		||||
            "$ref": "#/responses/GeneralAPISettings"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "/settings/repository": {
 | 
			
		||||
      "get": {
 | 
			
		||||
        "produces": [
 | 
			
		||||
@@ -12977,6 +12994,33 @@
 | 
			
		||||
      },
 | 
			
		||||
      "x-go-package": "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
    },
 | 
			
		||||
    "GeneralAPISettings": {
 | 
			
		||||
      "description": "GeneralAPISettings contains global api settings exposed by it",
 | 
			
		||||
      "type": "object",
 | 
			
		||||
      "properties": {
 | 
			
		||||
        "default_git_trees_per_page": {
 | 
			
		||||
          "type": "integer",
 | 
			
		||||
          "format": "int64",
 | 
			
		||||
          "x-go-name": "DefaultGitTreesPerPage"
 | 
			
		||||
        },
 | 
			
		||||
        "default_max_blob_size": {
 | 
			
		||||
          "type": "integer",
 | 
			
		||||
          "format": "int64",
 | 
			
		||||
          "x-go-name": "DefaultMaxBlobSize"
 | 
			
		||||
        },
 | 
			
		||||
        "default_paging_num": {
 | 
			
		||||
          "type": "integer",
 | 
			
		||||
          "format": "int64",
 | 
			
		||||
          "x-go-name": "DefaultPagingNum"
 | 
			
		||||
        },
 | 
			
		||||
        "max_response_items": {
 | 
			
		||||
          "type": "integer",
 | 
			
		||||
          "format": "int64",
 | 
			
		||||
          "x-go-name": "MaxResponseItems"
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      "x-go-package": "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
    },
 | 
			
		||||
    "GeneralRepoSettings": {
 | 
			
		||||
      "description": "GeneralRepoSettings contains global repository settings exposed by API",
 | 
			
		||||
      "type": "object",
 | 
			
		||||
@@ -15197,6 +15241,12 @@
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "GeneralAPISettings": {
 | 
			
		||||
      "description": "GeneralAPISettings",
 | 
			
		||||
      "schema": {
 | 
			
		||||
        "$ref": "#/definitions/GeneralAPISettings"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "GeneralRepoSettings": {
 | 
			
		||||
      "description": "GeneralRepoSettings",
 | 
			
		||||
      "schema": {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user