mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 09:31:53 +01:00 
			
		
		
		
	Fix test code (#33829)
Do not use onGiteaRun if there is no git operation
This commit is contained in:
		
							parent
							
								
									7fa47de7e9
								
							
						
					
					
						commit
						e47bba046c
					
				| @ -7,28 +7,28 @@ import ( | ||||
| 	"fmt" | ||||
| 	"net/http" | ||||
| 	"net/http/httptest" | ||||
| 	"net/url" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"code.gitea.io/gitea/models/db" | ||||
| 	user_model "code.gitea.io/gitea/models/user" | ||||
| 	"code.gitea.io/gitea/modules/activitypub" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/test" | ||||
| 	"code.gitea.io/gitea/routers" | ||||
| 	"code.gitea.io/gitea/tests" | ||||
| 
 | ||||
| 	ap "github.com/go-ap/activitypub" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
| 
 | ||||
| func TestActivityPubPerson(t *testing.T) { | ||||
| 	setting.Federation.Enabled = true | ||||
| 	testWebRoutes = routers.NormalRoutes() | ||||
| 	defer func() { | ||||
| 		setting.Federation.Enabled = false | ||||
| 		testWebRoutes = routers.NormalRoutes() | ||||
| 	}() | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 	defer test.MockVariableValue(&setting.Federation.Enabled, true)() | ||||
| 	defer test.MockVariableValue(&testWebRoutes, routers.NormalRoutes())() | ||||
| 
 | ||||
| 	t.Run("ExistingPerson", func(t *testing.T) { | ||||
| 		defer tests.PrintCurrentTest(t)() | ||||
| 
 | ||||
| 	onGiteaRun(t, func(*testing.T, *url.URL) { | ||||
| 		userID := 2 | ||||
| 		username := "user2" | ||||
| 		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/activitypub/user-id/%v", userID)) | ||||
| @ -56,41 +56,18 @@ func TestActivityPubPerson(t *testing.T) { | ||||
| 		assert.NotNil(t, pubKeyPem) | ||||
| 		assert.Regexp(t, "^-----BEGIN PUBLIC KEY-----", pubKeyPem) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func TestActivityPubMissingPerson(t *testing.T) { | ||||
| 	setting.Federation.Enabled = true | ||||
| 	testWebRoutes = routers.NormalRoutes() | ||||
| 	defer func() { | ||||
| 		setting.Federation.Enabled = false | ||||
| 		testWebRoutes = routers.NormalRoutes() | ||||
| 	}() | ||||
| 
 | ||||
| 	onGiteaRun(t, func(*testing.T, *url.URL) { | ||||
| 	t.Run("MissingPerson", func(t *testing.T) { | ||||
| 		defer tests.PrintCurrentTest(t)() | ||||
| 		req := NewRequest(t, "GET", "/api/v1/activitypub/user-id/999999999") | ||||
| 		resp := MakeRequest(t, req, http.StatusNotFound) | ||||
| 		assert.Contains(t, resp.Body.String(), "user does not exist") | ||||
| 	}) | ||||
| } | ||||
| 	t.Run("MissingPersonInbox", func(t *testing.T) { | ||||
| 		defer tests.PrintCurrentTest(t)() | ||||
| 		srv := httptest.NewServer(testWebRoutes) | ||||
| 		defer srv.Close() | ||||
| 		defer test.MockVariableValue(&setting.AppURL, srv.URL+"/")() | ||||
| 
 | ||||
| func TestActivityPubPersonInbox(t *testing.T) { | ||||
| 	setting.Federation.Enabled = true | ||||
| 	testWebRoutes = routers.NormalRoutes() | ||||
| 	defer func() { | ||||
| 		setting.Federation.Enabled = false | ||||
| 		testWebRoutes = routers.NormalRoutes() | ||||
| 	}() | ||||
| 
 | ||||
| 	srv := httptest.NewServer(testWebRoutes) | ||||
| 	defer srv.Close() | ||||
| 
 | ||||
| 	onGiteaRun(t, func(*testing.T, *url.URL) { | ||||
| 		appURL := setting.AppURL | ||||
| 		setting.AppURL = srv.URL + "/" | ||||
| 		defer func() { | ||||
| 			setting.Database.LogSQL = false | ||||
| 			setting.AppURL = appURL | ||||
| 		}() | ||||
| 		username1 := "user1" | ||||
| 		ctx := t.Context() | ||||
| 		user1, err := user_model.GetUserByName(ctx, username1) | ||||
|  | ||||
| @ -5,7 +5,6 @@ package integration | ||||
| 
 | ||||
| import ( | ||||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 	"strings" | ||||
| 	"testing" | ||||
| 
 | ||||
| @ -19,10 +18,12 @@ import ( | ||||
| ) | ||||
| 
 | ||||
| func TestAPIAdminOrgCreate(t *testing.T) { | ||||
| 	onGiteaRun(t, func(*testing.T, *url.URL) { | ||||
| 		session := loginUser(t, "user1") | ||||
| 		token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteAdmin) | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 	session := loginUser(t, "user1") | ||||
| 	token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteAdmin) | ||||
| 
 | ||||
| 	t.Run("CreateOrg", func(t *testing.T) { | ||||
| 		defer tests.PrintCurrentTest(t)() | ||||
| 		org := api.CreateOrgOption{ | ||||
| 			UserName:    "user2_org", | ||||
| 			FullName:    "User2's organization", | ||||
| @ -51,13 +52,8 @@ func TestAPIAdminOrgCreate(t *testing.T) { | ||||
| 			FullName:  org.FullName, | ||||
| 		}) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func TestAPIAdminOrgCreateBadVisibility(t *testing.T) { | ||||
| 	onGiteaRun(t, func(*testing.T, *url.URL) { | ||||
| 		session := loginUser(t, "user1") | ||||
| 		token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteAdmin) | ||||
| 
 | ||||
| 	t.Run("CreateBadVisibility", func(t *testing.T) { | ||||
| 		defer tests.PrintCurrentTest(t)() | ||||
| 		org := api.CreateOrgOption{ | ||||
| 			UserName:    "user2_org", | ||||
| 			FullName:    "User2's organization", | ||||
| @ -70,22 +66,21 @@ func TestAPIAdminOrgCreateBadVisibility(t *testing.T) { | ||||
| 			AddTokenAuth(token) | ||||
| 		MakeRequest(t, req, http.StatusUnprocessableEntity) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func TestAPIAdminOrgCreateNotAdmin(t *testing.T) { | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 	nonAdminUsername := "user2" | ||||
| 	session := loginUser(t, nonAdminUsername) | ||||
| 	token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeAll) | ||||
| 	org := api.CreateOrgOption{ | ||||
| 		UserName:    "user2_org", | ||||
| 		FullName:    "User2's organization", | ||||
| 		Description: "This organization created by admin for user2", | ||||
| 		Website:     "https://try.gitea.io", | ||||
| 		Location:    "Shanghai", | ||||
| 		Visibility:  "public", | ||||
| 	} | ||||
| 	req := NewRequestWithJSON(t, "POST", "/api/v1/admin/users/user2/orgs", &org). | ||||
| 		AddTokenAuth(token) | ||||
| 	MakeRequest(t, req, http.StatusForbidden) | ||||
| 	t.Run("CreateNotAdmin", func(t *testing.T) { | ||||
| 		defer tests.PrintCurrentTest(t)() | ||||
| 		nonAdminUsername := "user2" | ||||
| 		session := loginUser(t, nonAdminUsername) | ||||
| 		token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeAll) | ||||
| 		org := api.CreateOrgOption{ | ||||
| 			UserName:    "user2_org", | ||||
| 			FullName:    "User2's organization", | ||||
| 			Description: "This organization created by admin for user2", | ||||
| 			Website:     "https://try.gitea.io", | ||||
| 			Location:    "Shanghai", | ||||
| 			Visibility:  "public", | ||||
| 		} | ||||
| 		req := NewRequestWithJSON(t, "POST", "/api/v1/admin/users/user2/orgs", &org). | ||||
| 			AddTokenAuth(token) | ||||
| 		MakeRequest(t, req, http.StatusForbidden) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| @ -5,35 +5,31 @@ package integration | ||||
| 
 | ||||
| import ( | ||||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	api "code.gitea.io/gitea/modules/structs" | ||||
| 	"code.gitea.io/gitea/modules/test" | ||||
| 	"code.gitea.io/gitea/routers" | ||||
| 	"code.gitea.io/gitea/tests" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
| 
 | ||||
| func TestNodeinfo(t *testing.T) { | ||||
| 	setting.Federation.Enabled = true | ||||
| 	testWebRoutes = routers.NormalRoutes() | ||||
| 	defer func() { | ||||
| 		setting.Federation.Enabled = false | ||||
| 		testWebRoutes = routers.NormalRoutes() | ||||
| 	}() | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 	defer test.MockVariableValue(&setting.Federation.Enabled, true)() | ||||
| 	defer test.MockVariableValue(&testWebRoutes, routers.NormalRoutes())() | ||||
| 
 | ||||
| 	onGiteaRun(t, func(*testing.T, *url.URL) { | ||||
| 		req := NewRequest(t, "GET", "/api/v1/nodeinfo") | ||||
| 		resp := MakeRequest(t, req, http.StatusOK) | ||||
| 		VerifyJSONSchema(t, resp, "nodeinfo_2.1.json") | ||||
| 	req := NewRequest(t, "GET", "/api/v1/nodeinfo") | ||||
| 	resp := MakeRequest(t, req, http.StatusOK) | ||||
| 	VerifyJSONSchema(t, resp, "nodeinfo_2.1.json") | ||||
| 
 | ||||
| 		var nodeinfo api.NodeInfo | ||||
| 		DecodeJSON(t, resp, &nodeinfo) | ||||
| 		assert.True(t, nodeinfo.OpenRegistrations) | ||||
| 		assert.Equal(t, "gitea", nodeinfo.Software.Name) | ||||
| 		assert.Equal(t, 29, nodeinfo.Usage.Users.Total) | ||||
| 		assert.Equal(t, 22, nodeinfo.Usage.LocalPosts) | ||||
| 		assert.Equal(t, 3, nodeinfo.Usage.LocalComments) | ||||
| 	}) | ||||
| 	var nodeinfo api.NodeInfo | ||||
| 	DecodeJSON(t, resp, &nodeinfo) | ||||
| 	assert.True(t, nodeinfo.OpenRegistrations) | ||||
| 	assert.Equal(t, "gitea", nodeinfo.Software.Name) | ||||
| 	assert.Equal(t, 29, nodeinfo.Usage.Users.Total) | ||||
| 	assert.Equal(t, 22, nodeinfo.Usage.LocalPosts) | ||||
| 	assert.Equal(t, 3, nodeinfo.Usage.LocalComments) | ||||
| } | ||||
|  | ||||
| @ -4,7 +4,6 @@ | ||||
| package integration | ||||
| 
 | ||||
| import ( | ||||
| 	"net/url" | ||||
| 	"strings" | ||||
| 	"testing" | ||||
| 
 | ||||
| @ -14,15 +13,17 @@ import ( | ||||
| 	"code.gitea.io/gitea/models/unittest" | ||||
| 	user_model "code.gitea.io/gitea/models/user" | ||||
| 	api "code.gitea.io/gitea/modules/structs" | ||||
| 	"code.gitea.io/gitea/tests" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
| 
 | ||||
| func TestOrgCounts(t *testing.T) { | ||||
| 	onGiteaRun(t, testOrgCounts) | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 	testOrgCounts(t) | ||||
| } | ||||
| 
 | ||||
| func testOrgCounts(t *testing.T, u *url.URL) { | ||||
| func testOrgCounts(t *testing.T) { | ||||
| 	orgOwner := "user2" | ||||
| 	orgName := "testOrg" | ||||
| 	orgCollaborator := "user4" | ||||
|  | ||||
| @ -8,12 +8,15 @@ import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	pull_service "code.gitea.io/gitea/services/pull" | ||||
| 	"code.gitea.io/gitea/tests" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func TestListPullCommits(t *testing.T) { | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 
 | ||||
| 	session := loginUser(t, "user5") | ||||
| 	req := NewRequest(t, "GET", "/user2/repo1/pulls/3/commits/list") | ||||
| 	resp := session.MakeRequest(t, req, http.StatusOK) | ||||
| @ -30,6 +33,7 @@ func TestListPullCommits(t *testing.T) { | ||||
| 	assert.Equal(t, "4a357436d925b5c974181ff12a994538ddc5a269", pullCommitList.LastReviewCommitSha) | ||||
| 
 | ||||
| 	t.Run("CommitBlobExcerpt", func(t *testing.T) { | ||||
| 		defer tests.PrintCurrentTest(t)() | ||||
| 		req = NewRequest(t, "GET", "/user2/repo1/blob_excerpt/985f0301dba5e7b34be866819cd15ad3d8f508ee?last_left=0&last_right=0&left=2&right=2&left_hunk_size=2&right_hunk_size=2&path=README.md&style=split&direction=up") | ||||
| 		resp = session.MakeRequest(t, req, http.StatusOK) | ||||
| 		assert.Contains(t, resp.Body.String(), `<td class="lines-code lines-code-new"><code class="code-inner"># repo1</code>`) | ||||
|  | ||||
| @ -10,78 +10,77 @@ import ( | ||||
| 	"io" | ||||
| 	"mime/multipart" | ||||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"code.gitea.io/gitea/models/db" | ||||
| 	"code.gitea.io/gitea/models/unittest" | ||||
| 	user_model "code.gitea.io/gitea/models/user" | ||||
| 	"code.gitea.io/gitea/modules/avatar" | ||||
| 	"code.gitea.io/gitea/tests" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
| 
 | ||||
| func TestUserAvatar(t *testing.T) { | ||||
| 	onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||||
| 		user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) // owner of the repo3, is an org | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 	user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) // owner of the repo3, is an org | ||||
| 
 | ||||
| 		seed := user2.Email | ||||
| 		if len(seed) == 0 { | ||||
| 			seed = user2.Name | ||||
| 		} | ||||
| 	seed := user2.Email | ||||
| 	if len(seed) == 0 { | ||||
| 		seed = user2.Name | ||||
| 	} | ||||
| 
 | ||||
| 		img, err := avatar.RandomImage([]byte(seed)) | ||||
| 		if err != nil { | ||||
| 			assert.NoError(t, err) | ||||
| 			return | ||||
| 		} | ||||
| 	img, err := avatar.RandomImage([]byte(seed)) | ||||
| 	if err != nil { | ||||
| 		assert.NoError(t, err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 		session := loginUser(t, "user2") | ||||
| 		csrf := GetUserCSRFToken(t, session) | ||||
| 	session := loginUser(t, "user2") | ||||
| 	csrf := GetUserCSRFToken(t, session) | ||||
| 
 | ||||
| 		imgData := &bytes.Buffer{} | ||||
| 	imgData := &bytes.Buffer{} | ||||
| 
 | ||||
| 		body := &bytes.Buffer{} | ||||
| 	body := &bytes.Buffer{} | ||||
| 
 | ||||
| 		// Setup multi-part | ||||
| 		writer := multipart.NewWriter(body) | ||||
| 		writer.WriteField("source", "local") | ||||
| 		part, err := writer.CreateFormFile("avatar", "avatar-for-testuseravatar.png") | ||||
| 		if err != nil { | ||||
| 			assert.NoError(t, err) | ||||
| 			return | ||||
| 		} | ||||
| 	// Setup multi-part | ||||
| 	writer := multipart.NewWriter(body) | ||||
| 	writer.WriteField("source", "local") | ||||
| 	part, err := writer.CreateFormFile("avatar", "avatar-for-testuseravatar.png") | ||||
| 	if err != nil { | ||||
| 		assert.NoError(t, err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 		if err := png.Encode(imgData, img); err != nil { | ||||
| 			assert.NoError(t, err) | ||||
| 			return | ||||
| 		} | ||||
| 	if err := png.Encode(imgData, img); err != nil { | ||||
| 		assert.NoError(t, err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 		if _, err := io.Copy(part, imgData); err != nil { | ||||
| 			assert.NoError(t, err) | ||||
| 			return | ||||
| 		} | ||||
| 	if _, err := io.Copy(part, imgData); err != nil { | ||||
| 		assert.NoError(t, err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 		if err := writer.Close(); err != nil { | ||||
| 			assert.NoError(t, err) | ||||
| 			return | ||||
| 		} | ||||
| 	if err := writer.Close(); err != nil { | ||||
| 		assert.NoError(t, err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 		req := NewRequestWithBody(t, "POST", "/user/settings/avatar", body) | ||||
| 		req.Header.Add("X-Csrf-Token", csrf) | ||||
| 		req.Header.Add("Content-Type", writer.FormDataContentType()) | ||||
| 	req := NewRequestWithBody(t, "POST", "/user/settings/avatar", body) | ||||
| 	req.Header.Add("X-Csrf-Token", csrf) | ||||
| 	req.Header.Add("Content-Type", writer.FormDataContentType()) | ||||
| 
 | ||||
| 		session.MakeRequest(t, req, http.StatusSeeOther) | ||||
| 	session.MakeRequest(t, req, http.StatusSeeOther) | ||||
| 
 | ||||
| 		user2 = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) // owner of the repo3, is an org | ||||
| 	user2 = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) // owner of the repo3, is an org | ||||
| 
 | ||||
| 		req = NewRequest(t, "GET", user2.AvatarLinkWithSize(db.DefaultContext, 0)) | ||||
| 		_ = session.MakeRequest(t, req, http.StatusOK) | ||||
| 	req = NewRequest(t, "GET", user2.AvatarLinkWithSize(db.DefaultContext, 0)) | ||||
| 	_ = session.MakeRequest(t, req, http.StatusOK) | ||||
| 
 | ||||
| 		testGetAvatarRedirect(t, user2) | ||||
| 	testGetAvatarRedirect(t, user2) | ||||
| 
 | ||||
| 		// Can't test if the response matches because the image is re-generated on upload but checking that this at least doesn't give a 404 should be enough. | ||||
| 	}) | ||||
| 	// Can't test if the response matches because the image is re-generated on upload but checking that this at least doesn't give a 404 should be enough. | ||||
| } | ||||
| 
 | ||||
| func testGetAvatarRedirect(t *testing.T, user *user_model.User) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user