Skip to content

Commit 5ae0753

Browse files
committed
add more tests
1 parent 9b173c0 commit 5ae0753

File tree

2 files changed

+67
-7
lines changed

2 files changed

+67
-7
lines changed

models/organization/org_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import (
1313
repo_model "code.gitea.io/gitea/models/repo"
1414
"code.gitea.io/gitea/models/unittest"
1515
user_model "code.gitea.io/gitea/models/user"
16+
"code.gitea.io/gitea/modules/setting"
1617
"code.gitea.io/gitea/modules/structs"
18+
"code.gitea.io/gitea/modules/test"
1719

1820
"github.com/stretchr/testify/assert"
1921
"github.com/stretchr/testify/require"
@@ -382,6 +384,12 @@ func TestHasOrgVisibleTypePublic(t *testing.T) {
382384
assert.True(t, test1) // owner of org
383385
assert.True(t, test2) // user not a part of org
384386
assert.True(t, test3) // logged out user
387+
388+
restrictedUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 29, IsRestricted: true})
389+
require.True(t, restrictedUser.IsRestricted)
390+
assert.True(t, organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), restrictedUser))
391+
defer test.MockVariableValue(&setting.Service.RequireSignInViewStrict, true)()
392+
assert.False(t, organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), restrictedUser))
385393
}
386394

387395
func TestHasOrgVisibleTypeLimited(t *testing.T) {

models/repo/repo_list_test.go

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ import (
1010
"code.gitea.io/gitea/models/db"
1111
repo_model "code.gitea.io/gitea/models/repo"
1212
"code.gitea.io/gitea/models/unittest"
13+
user_model "code.gitea.io/gitea/models/user"
1314
"code.gitea.io/gitea/modules/optional"
15+
"code.gitea.io/gitea/modules/setting"
16+
"code.gitea.io/gitea/modules/structs"
17+
"code.gitea.io/gitea/modules/test"
1418

1519
"github.com/stretchr/testify/assert"
20+
"github.com/stretchr/testify/require"
1621
)
1722

1823
func getTestCases() []struct {
@@ -182,7 +187,16 @@ func getTestCases() []struct {
182187

183188
func TestSearchRepository(t *testing.T) {
184189
assert.NoError(t, unittest.PrepareTestDatabase())
190+
t.Run("SearchRepositoryPublic", testSearchRepositoryPublic)
191+
t.Run("SearchRepositoryPublicRestricted", testSearchRepositoryRestricted)
192+
t.Run("SearchRepositoryPrivate", testSearchRepositoryPrivate)
193+
t.Run("SearchRepositoryNonExistingOwner", testSearchRepositoryNonExistingOwner)
194+
t.Run("SearchRepositoryWithInDescription", testSearchRepositoryWithInDescription)
195+
t.Run("SearchRepositoryNotInDescription", testSearchRepositoryNotInDescription)
196+
t.Run("SearchRepositoryCases", testSearchRepositoryCases)
197+
}
185198

199+
func testSearchRepositoryPublic(t *testing.T) {
186200
// test search public repository on explore page
187201
repos, count, err := repo_model.SearchRepositoryByName(t.Context(), repo_model.SearchRepoOptions{
188202
ListOptions: db.ListOptions{
@@ -211,9 +225,42 @@ func TestSearchRepository(t *testing.T) {
211225
assert.NoError(t, err)
212226
assert.Equal(t, int64(2), count)
213227
assert.Len(t, repos, 2)
228+
}
229+
230+
func testSearchRepositoryRestricted(t *testing.T) {
231+
defer test.MockVariableValue(&setting.Service.RequireSignInViewStrict, true)()
232+
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
233+
restrictedUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 29, IsRestricted: true})
234+
235+
performSearch := func(t *testing.T, user *user_model.User) (publicRepoIDs []int64, totalCount int) {
236+
repos, count, err := repo_model.SearchRepositoryByName(t.Context(), repo_model.SearchRepoOptions{
237+
ListOptions: db.ListOptions{Page: 1, PageSize: 10000},
238+
Actor: user,
239+
})
240+
require.Nil(t, err)
241+
totalCount = int(count)
242+
assert.Len(t, repos, totalCount)
243+
for _, repo := range repos {
244+
require.NoError(t, repo.LoadOwner(t.Context()))
245+
if repo.Owner.Visibility == structs.VisibleTypePublic && !repo.IsPrivate {
246+
publicRepoIDs = append(publicRepoIDs, repo.ID)
247+
}
248+
}
249+
return publicRepoIDs, totalCount
250+
}
251+
252+
normalUserPublicRepoIDs, totalCount := performSearch(t, user2)
253+
assert.Positive(t, totalCount)
254+
assert.Greater(t, len(normalUserPublicRepoIDs), 1) // quite a lot
214255

256+
restrictedUserPublicRepoIDs, totalCount := performSearch(t, restrictedUser)
257+
assert.Equal(t, 1, totalCount) // restricted user can see only their own repo
258+
assert.Equal(t, []int64{4}, restrictedUserPublicRepoIDs)
259+
}
260+
261+
func testSearchRepositoryPrivate(t *testing.T) {
215262
// test search private repository on explore page
216-
repos, count, err = repo_model.SearchRepositoryByName(t.Context(), repo_model.SearchRepoOptions{
263+
repos, count, err := repo_model.SearchRepositoryByName(t.Context(), repo_model.SearchRepoOptions{
217264
ListOptions: db.ListOptions{
218265
Page: 1,
219266
PageSize: 10,
@@ -242,16 +289,18 @@ func TestSearchRepository(t *testing.T) {
242289
assert.NoError(t, err)
243290
assert.Equal(t, int64(3), count)
244291
assert.Len(t, repos, 3)
292+
}
245293

246-
// Test non existing owner
247-
repos, count, err = repo_model.SearchRepositoryByName(t.Context(), repo_model.SearchRepoOptions{OwnerID: unittest.NonexistentID})
294+
func testSearchRepositoryNonExistingOwner(t *testing.T) {
295+
repos, count, err := repo_model.SearchRepositoryByName(t.Context(), repo_model.SearchRepoOptions{OwnerID: unittest.NonexistentID})
248296

249297
assert.NoError(t, err)
250298
assert.Empty(t, repos)
251299
assert.Equal(t, int64(0), count)
300+
}
252301

253-
// Test search within description
254-
repos, count, err = repo_model.SearchRepository(t.Context(), repo_model.SearchRepoOptions{
302+
func testSearchRepositoryWithInDescription(t *testing.T) {
303+
repos, count, err := repo_model.SearchRepository(t.Context(), repo_model.SearchRepoOptions{
255304
ListOptions: db.ListOptions{
256305
Page: 1,
257306
PageSize: 10,
@@ -266,9 +315,10 @@ func TestSearchRepository(t *testing.T) {
266315
assert.Equal(t, "test_repo_14", repos[0].Name)
267316
}
268317
assert.Equal(t, int64(1), count)
318+
}
269319

270-
// Test NOT search within description
271-
repos, count, err = repo_model.SearchRepository(t.Context(), repo_model.SearchRepoOptions{
320+
func testSearchRepositoryNotInDescription(t *testing.T) {
321+
repos, count, err := repo_model.SearchRepository(t.Context(), repo_model.SearchRepoOptions{
272322
ListOptions: db.ListOptions{
273323
Page: 1,
274324
PageSize: 10,
@@ -281,7 +331,9 @@ func TestSearchRepository(t *testing.T) {
281331
assert.NoError(t, err)
282332
assert.Empty(t, repos)
283333
assert.Equal(t, int64(0), count)
334+
}
284335

336+
func testSearchRepositoryCases(t *testing.T) {
285337
testCases := getTestCases()
286338

287339
for _, testCase := range testCases {

0 commit comments

Comments
 (0)