mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Rewrite of the LFS server (#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>
This commit is contained in:
		| @@ -11,6 +11,7 @@ import ( | ||||
| 	"time" | ||||
|  | ||||
| 	"code.gitea.io/gitea/models" | ||||
| 	"code.gitea.io/gitea/modules/lfs" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	api "code.gitea.io/gitea/modules/structs" | ||||
|  | ||||
| @@ -40,7 +41,7 @@ func TestAPILFSLocksNotLogin(t *testing.T) { | ||||
| 	repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository) | ||||
|  | ||||
| 	req := NewRequestf(t, "GET", "/%s/%s.git/info/lfs/locks", user.Name, repo.Name) | ||||
| 	req.Header.Set("Accept", "application/vnd.git-lfs+json") | ||||
| 	req.Header.Set("Accept", lfs.MediaType) | ||||
| 	resp := MakeRequest(t, req, http.StatusUnauthorized) | ||||
| 	var lfsLockError api.LFSLockError | ||||
| 	DecodeJSON(t, resp, &lfsLockError) | ||||
| @@ -102,8 +103,8 @@ func TestAPILFSLocksLogged(t *testing.T) { | ||||
| 	for _, test := range tests { | ||||
| 		session := loginUser(t, test.user.Name) | ||||
| 		req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/%s.git/info/lfs/locks", test.repo.FullName()), map[string]string{"path": test.path}) | ||||
| 		req.Header.Set("Accept", "application/vnd.git-lfs+json") | ||||
| 		req.Header.Set("Content-Type", "application/vnd.git-lfs+json") | ||||
| 		req.Header.Set("Accept", lfs.MediaType) | ||||
| 		req.Header.Set("Content-Type", lfs.MediaType) | ||||
| 		resp := session.MakeRequest(t, req, test.httpResult) | ||||
| 		if len(test.addTime) > 0 { | ||||
| 			var lfsLock api.LFSLockResponse | ||||
| @@ -119,7 +120,7 @@ func TestAPILFSLocksLogged(t *testing.T) { | ||||
| 	for _, test := range resultsTests { | ||||
| 		session := loginUser(t, test.user.Name) | ||||
| 		req := NewRequestf(t, "GET", "/%s.git/info/lfs/locks", test.repo.FullName()) | ||||
| 		req.Header.Set("Accept", "application/vnd.git-lfs+json") | ||||
| 		req.Header.Set("Accept", lfs.MediaType) | ||||
| 		resp := session.MakeRequest(t, req, http.StatusOK) | ||||
| 		var lfsLocks api.LFSLockList | ||||
| 		DecodeJSON(t, resp, &lfsLocks) | ||||
| @@ -131,8 +132,8 @@ func TestAPILFSLocksLogged(t *testing.T) { | ||||
| 		} | ||||
|  | ||||
| 		req = NewRequestWithJSON(t, "POST", fmt.Sprintf("/%s.git/info/lfs/locks/verify", test.repo.FullName()), map[string]string{}) | ||||
| 		req.Header.Set("Accept", "application/vnd.git-lfs+json") | ||||
| 		req.Header.Set("Content-Type", "application/vnd.git-lfs+json") | ||||
| 		req.Header.Set("Accept", lfs.MediaType) | ||||
| 		req.Header.Set("Content-Type", lfs.MediaType) | ||||
| 		resp = session.MakeRequest(t, req, http.StatusOK) | ||||
| 		var lfsLocksVerify api.LFSLockListVerify | ||||
| 		DecodeJSON(t, resp, &lfsLocksVerify) | ||||
| @@ -155,8 +156,8 @@ func TestAPILFSLocksLogged(t *testing.T) { | ||||
| 	for _, test := range deleteTests { | ||||
| 		session := loginUser(t, test.user.Name) | ||||
| 		req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/%s.git/info/lfs/locks/%s/unlock", test.repo.FullName(), test.lockID), map[string]string{}) | ||||
| 		req.Header.Set("Accept", "application/vnd.git-lfs+json") | ||||
| 		req.Header.Set("Content-Type", "application/vnd.git-lfs+json") | ||||
| 		req.Header.Set("Accept", lfs.MediaType) | ||||
| 		req.Header.Set("Content-Type", lfs.MediaType) | ||||
| 		resp := session.MakeRequest(t, req, http.StatusOK) | ||||
| 		var lfsLockRep api.LFSLockResponse | ||||
| 		DecodeJSON(t, resp, &lfsLockRep) | ||||
| @@ -168,7 +169,7 @@ func TestAPILFSLocksLogged(t *testing.T) { | ||||
| 	for _, test := range resultsTests { | ||||
| 		session := loginUser(t, test.user.Name) | ||||
| 		req := NewRequestf(t, "GET", "/%s.git/info/lfs/locks", test.repo.FullName()) | ||||
| 		req.Header.Set("Accept", "application/vnd.git-lfs+json") | ||||
| 		req.Header.Set("Accept", lfs.MediaType) | ||||
| 		resp := session.MakeRequest(t, req, http.StatusOK) | ||||
| 		var lfsLocks api.LFSLockList | ||||
| 		DecodeJSON(t, resp, &lfsLocks) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user