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:
parent
45c0ec3152
commit
2a52aeec49
7 changed files with 133 additions and 14 deletions
|
@ -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 a new issue