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"
|
"time"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"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) {
|
func TestAPIIssuesReactions(t *testing.T) {
|
||||||
defer prepareTestEnv(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 {
|
type GeneralUISettings struct {
|
||||||
AllowedReactions []string `json:"allowed_reactions"`
|
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.Post("/markdown/raw", misc.MarkdownRaw)
|
||||||
m.Group("/settings", func() {
|
m.Group("/settings", func() {
|
||||||
m.Get("/ui", settings.GetGeneralUISettings)
|
m.Get("/ui", settings.GetGeneralUISettings)
|
||||||
|
m.Get("/api", settings.GetGeneralAPISettings)
|
||||||
m.Get("/repository", settings.GetGeneralRepoSettings)
|
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
|
// GetGeneralRepoSettings returns instance's global settings for repositories
|
||||||
func GetGeneralRepoSettings(ctx *context.APIContext) {
|
func GetGeneralRepoSettings(ctx *context.APIContext) {
|
||||||
// swagger:operation GET /settings/repository settings getGeneralRepositorySettings
|
// swagger:operation GET /settings/repository settings getGeneralRepositorySettings
|
||||||
|
|
|
@ -19,3 +19,10 @@ type swaggerResponseGeneralUISettings struct {
|
||||||
// in:body
|
// in:body
|
||||||
Body api.GeneralUISettings `json:"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": {
|
"/settings/repository": {
|
||||||
"get": {
|
"get": {
|
||||||
"produces": [
|
"produces": [
|
||||||
|
@ -12977,6 +12994,33 @@
|
||||||
},
|
},
|
||||||
"x-go-package": "code.gitea.io/gitea/modules/structs"
|
"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": {
|
"GeneralRepoSettings": {
|
||||||
"description": "GeneralRepoSettings contains global repository settings exposed by API",
|
"description": "GeneralRepoSettings contains global repository settings exposed by API",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
@ -15197,6 +15241,12 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"GeneralAPISettings": {
|
||||||
|
"description": "GeneralAPISettings",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/GeneralAPISettings"
|
||||||
|
}
|
||||||
|
},
|
||||||
"GeneralRepoSettings": {
|
"GeneralRepoSettings": {
|
||||||
"description": "GeneralRepoSettings",
|
"description": "GeneralRepoSettings",
|
||||||
"schema": {
|
"schema": {
|
||||||
|
|
Loading…
Reference in a new issue