Skip to content

Commit ebf5c39

Browse files
KN4CK3R6543lafriks
authored andcommitted
Rewrite of the LFS server (go-gitea#15523)
* Restructured code. Moved static checks out of loop. * Restructured batch api. Add support for individual errors. * Let router decide if LFS is enabled. * Renamed methods. * Return correct status from verify handler. * Unified media type check in router. * Changed error code according to spec. * Moved checks into router. * Removed invalid v1 api methods. * Unified methods. * Display better error messages. * Added size parameter. Create meta object on upload. * Use object error on invalid size. * Skip upload if object exists. * Moved methods. * Suppress fields in response. * Changed error on accept. * Added tests. * Use ErrorResponse object. * Test against message property. * Add support for the old invalid lfs client. * Fixed the check because MinIO wraps the error. * Use individual repositories. Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Lauris BH <lauris@nix.lv>
1 parent bb987d6 commit ebf5c39

File tree

7 files changed

+727
-407
lines changed

7 files changed

+727
-407
lines changed

integrations/api_repo_lfs_locks_test.go

+10-9
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"time"
1212

1313
"code.gitea.io/gitea/models"
14+
"code.gitea.io/gitea/modules/lfs"
1415
"code.gitea.io/gitea/modules/setting"
1516
api "code.gitea.io/gitea/modules/structs"
1617

@@ -40,7 +41,7 @@ func TestAPILFSLocksNotLogin(t *testing.T) {
4041
repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository)
4142

4243
req := NewRequestf(t, "GET", "/%s/%s.git/info/lfs/locks", user.Name, repo.Name)
43-
req.Header.Set("Accept", "application/vnd.git-lfs+json")
44+
req.Header.Set("Accept", lfs.MediaType)
4445
resp := MakeRequest(t, req, http.StatusUnauthorized)
4546
var lfsLockError api.LFSLockError
4647
DecodeJSON(t, resp, &lfsLockError)
@@ -102,8 +103,8 @@ func TestAPILFSLocksLogged(t *testing.T) {
102103
for _, test := range tests {
103104
session := loginUser(t, test.user.Name)
104105
req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/%s.git/info/lfs/locks", test.repo.FullName()), map[string]string{"path": test.path})
105-
req.Header.Set("Accept", "application/vnd.git-lfs+json")
106-
req.Header.Set("Content-Type", "application/vnd.git-lfs+json")
106+
req.Header.Set("Accept", lfs.MediaType)
107+
req.Header.Set("Content-Type", lfs.MediaType)
107108
resp := session.MakeRequest(t, req, test.httpResult)
108109
if len(test.addTime) > 0 {
109110
var lfsLock api.LFSLockResponse
@@ -119,7 +120,7 @@ func TestAPILFSLocksLogged(t *testing.T) {
119120
for _, test := range resultsTests {
120121
session := loginUser(t, test.user.Name)
121122
req := NewRequestf(t, "GET", "/%s.git/info/lfs/locks", test.repo.FullName())
122-
req.Header.Set("Accept", "application/vnd.git-lfs+json")
123+
req.Header.Set("Accept", lfs.MediaType)
123124
resp := session.MakeRequest(t, req, http.StatusOK)
124125
var lfsLocks api.LFSLockList
125126
DecodeJSON(t, resp, &lfsLocks)
@@ -131,8 +132,8 @@ func TestAPILFSLocksLogged(t *testing.T) {
131132
}
132133

133134
req = NewRequestWithJSON(t, "POST", fmt.Sprintf("/%s.git/info/lfs/locks/verify", test.repo.FullName()), map[string]string{})
134-
req.Header.Set("Accept", "application/vnd.git-lfs+json")
135-
req.Header.Set("Content-Type", "application/vnd.git-lfs+json")
135+
req.Header.Set("Accept", lfs.MediaType)
136+
req.Header.Set("Content-Type", lfs.MediaType)
136137
resp = session.MakeRequest(t, req, http.StatusOK)
137138
var lfsLocksVerify api.LFSLockListVerify
138139
DecodeJSON(t, resp, &lfsLocksVerify)
@@ -155,8 +156,8 @@ func TestAPILFSLocksLogged(t *testing.T) {
155156
for _, test := range deleteTests {
156157
session := loginUser(t, test.user.Name)
157158
req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/%s.git/info/lfs/locks/%s/unlock", test.repo.FullName(), test.lockID), map[string]string{})
158-
req.Header.Set("Accept", "application/vnd.git-lfs+json")
159-
req.Header.Set("Content-Type", "application/vnd.git-lfs+json")
159+
req.Header.Set("Accept", lfs.MediaType)
160+
req.Header.Set("Content-Type", lfs.MediaType)
160161
resp := session.MakeRequest(t, req, http.StatusOK)
161162
var lfsLockRep api.LFSLockResponse
162163
DecodeJSON(t, resp, &lfsLockRep)
@@ -168,7 +169,7 @@ func TestAPILFSLocksLogged(t *testing.T) {
168169
for _, test := range resultsTests {
169170
session := loginUser(t, test.user.Name)
170171
req := NewRequestf(t, "GET", "/%s.git/info/lfs/locks", test.repo.FullName())
171-
req.Header.Set("Accept", "application/vnd.git-lfs+json")
172+
req.Header.Set("Accept", lfs.MediaType)
172173
resp := session.MakeRequest(t, req, http.StatusOK)
173174
var lfsLocks api.LFSLockList
174175
DecodeJSON(t, resp, &lfsLocks)

0 commit comments

Comments
 (0)