mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	Show lock owner instead of repo owner on LFS setting page (#31788)
Fix #31784. Before: <img width="1648" alt="image" src="https://github.com/user-attachments/assets/03f32545-4a85-42ed-bafc-2b193a5d8023"> After: <img width="1653" alt="image" src="https://github.com/user-attachments/assets/e5bcaf93-49cb-421f-aac1-5122bc488b02">
This commit is contained in:
		@@ -4,12 +4,21 @@
 | 
			
		||||
package integration
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	repo_model "code.gitea.io/gitea/models/repo"
 | 
			
		||||
	"code.gitea.io/gitea/models/unittest"
 | 
			
		||||
	user_model "code.gitea.io/gitea/models/user"
 | 
			
		||||
	"code.gitea.io/gitea/modules/lfs"
 | 
			
		||||
	api "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
	"code.gitea.io/gitea/tests"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
	"github.com/stretchr/testify/require"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// check that files stored in LFS render properly in the web UI
 | 
			
		||||
@@ -81,3 +90,56 @@ func TestLFSRender(t *testing.T) {
 | 
			
		||||
		assert.Contains(t, content, "Testing READMEs in LFS")
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TestLFSLockView tests the LFS lock view on settings page of repositories
 | 
			
		||||
func TestLFSLockView(t *testing.T) {
 | 
			
		||||
	defer tests.PrepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
	user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})       // in org 3
 | 
			
		||||
	repo3 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3}) // own by org 3
 | 
			
		||||
	session := loginUser(t, user2.Name)
 | 
			
		||||
 | 
			
		||||
	// create a lock
 | 
			
		||||
	lockPath := "test_lfs_lock_view.zip"
 | 
			
		||||
	lockID := ""
 | 
			
		||||
	{
 | 
			
		||||
		req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/%s.git/info/lfs/locks", repo3.FullName()), map[string]string{"path": lockPath})
 | 
			
		||||
		req.Header.Set("Accept", lfs.AcceptHeader)
 | 
			
		||||
		req.Header.Set("Content-Type", lfs.MediaType)
 | 
			
		||||
		resp := session.MakeRequest(t, req, http.StatusCreated)
 | 
			
		||||
		lockResp := &api.LFSLockResponse{}
 | 
			
		||||
		DecodeJSON(t, resp, lockResp)
 | 
			
		||||
		lockID = lockResp.Lock.ID
 | 
			
		||||
	}
 | 
			
		||||
	defer func() {
 | 
			
		||||
		// release the lock
 | 
			
		||||
		req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/%s.git/info/lfs/locks/%s/unlock", repo3.FullName(), lockID), map[string]string{})
 | 
			
		||||
		req.Header.Set("Accept", lfs.AcceptHeader)
 | 
			
		||||
		req.Header.Set("Content-Type", lfs.MediaType)
 | 
			
		||||
		session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	t.Run("owner name", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		// make sure the display names are different, or the test is meaningless
 | 
			
		||||
		require.NoError(t, repo3.LoadOwner(context.Background()))
 | 
			
		||||
		require.NotEqual(t, user2.DisplayName(), repo3.Owner.DisplayName())
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/%s/settings/lfs/locks", repo3.FullName()))
 | 
			
		||||
		resp := session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		doc := NewHTMLParser(t, resp.Body).doc
 | 
			
		||||
 | 
			
		||||
		tr := doc.Find("table#lfs-files-locks-table tbody tr")
 | 
			
		||||
		require.Equal(t, 1, tr.Length())
 | 
			
		||||
 | 
			
		||||
		td := tr.First().Find("td")
 | 
			
		||||
		require.Equal(t, 4, td.Length())
 | 
			
		||||
 | 
			
		||||
		// path
 | 
			
		||||
		assert.Equal(t, lockPath, strings.TrimSpace(td.Eq(0).Text()))
 | 
			
		||||
		// owner name
 | 
			
		||||
		assert.Equal(t, user2.DisplayName(), strings.TrimSpace(td.Eq(1).Text()))
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user