Skip to content

Commit 97cd6c4

Browse files
committed
Adjust tests
1 parent f548f2e commit 97cd6c4

File tree

4 files changed

+78
-46
lines changed

4 files changed

+78
-46
lines changed

models/fixtures/project.yml

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,3 @@
6969
type: 2
7070
created_unix: 1688973000
7171
updated_unix: 1688973000
72-
73-
-
74-
id: 7
75-
title: project in an org
76-
owner_id: 3
77-
repo_id: 0
78-
is_closed: false
79-
creator_id: 2
80-
board_type: 1
81-
type: 2
82-
created_unix: 1688973000
83-
updated_unix: 1688973000

models/fixtures/project_issue.yml

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,3 @@
2121
issue_id: 5
2222
project_id: 1
2323
project_board_id: 3
24-
25-
-
26-
id: 5
27-
issue_id: 1
28-
project_id: 4
29-
project_board_id: 4
30-
31-
-
32-
id: 6
33-
issue_id: 4
34-
project_id: 4
35-
project_board_id: 4

models/issues/issue_search.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,13 @@ func applyConditions(sess *xorm.Session, opts *IssuesOptions) {
274274

275275
applyLabelsCondition(sess, opts)
276276

277-
if opts.AccessUser != nil {
277+
if opts.Org != nil {
278+
sess.And(repo_model.UserOwnedRepoCond(opts.Org.ID))
279+
} else if opts.Owner != nil {
280+
sess.And(repo_model.UserOwnedRepoCond(opts.Owner.ID))
281+
}
282+
283+
if opts.AccessUser != nil && !opts.AccessUser.IsAdmin {
278284
sess.And(issuePullAccessibleRepoCond("issue.repo_id", opts.AccessUser.ID, opts.Org, opts.Owner, opts.Team, opts.IsPull.Value()))
279285
}
280286
}
@@ -340,9 +346,6 @@ func issuePullAccessibleRepoCond(repoIDstr string, userID int64, org *organizati
340346
)
341347
}
342348
} else {
343-
if owner != nil {
344-
cond = cond.And(repo_model.UserOwnedRepoCond(owner.ID)) // owned repos
345-
}
346349
cond = cond.And(
347350
builder.Or(
348351
repo_model.UserOwnedRepoCond(userID), // owned repos

services/projects/issue_test.go

Lines changed: 71 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,26 @@ import (
2020
func Test_Projects(t *testing.T) {
2121
assert.NoError(t, unittest.PrepareTestDatabase())
2222

23+
userAdmin := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
2324
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
2425
org3 := unittest.AssertExistsAndLoadBean(t, &org_model.Organization{ID: 3})
2526
user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
2627

2728
t.Run("User projects", func(t *testing.T) {
29+
err := db.Insert(db.DefaultContext, &project_model.ProjectIssue{
30+
ProjectID: 4,
31+
IssueID: 1,
32+
ProjectColumnID: 4,
33+
})
34+
assert.NoError(t, err)
35+
36+
err = db.Insert(db.DefaultContext, &project_model.ProjectIssue{
37+
ProjectID: 4,
38+
IssueID: 4,
39+
ProjectColumnID: 4,
40+
})
41+
assert.NoError(t, err)
42+
2843
projects, err := db.Find[project_model.Project](db.DefaultContext, project_model.SearchOptions{
2944
OwnerID: user2.ID,
3045
})
@@ -63,21 +78,54 @@ func Test_Projects(t *testing.T) {
6378
})
6479

6580
t.Run("Org projects", func(t *testing.T) {
81+
project1 := project_model.Project{
82+
Title: "project in an org",
83+
OwnerID: org3.ID,
84+
Type: project_model.TypeOrganization,
85+
TemplateType: project_model.TemplateTypeBasicKanban,
86+
}
87+
err := project_model.NewProject(db.DefaultContext, &project1)
88+
assert.NoError(t, err)
89+
90+
column1 := project_model.Column{
91+
Title: "column 1",
92+
ProjectID: project1.ID,
93+
}
94+
err = project_model.NewColumn(db.DefaultContext, &column1)
95+
assert.NoError(t, err)
96+
97+
column2 := project_model.Column{
98+
Title: "column 2",
99+
ProjectID: project1.ID,
100+
}
101+
err = project_model.NewColumn(db.DefaultContext, &column2)
102+
assert.NoError(t, err)
103+
104+
// issue 6 belongs to private repo 3 under org 3
105+
issue6 := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 6})
106+
err = issues_model.IssueAssignOrRemoveProject(db.DefaultContext, issue6, user2, project1.ID, column1.ID)
107+
assert.NoError(t, err)
108+
109+
// issue 16 belongs to public repo 16 under org 3
110+
issue16 := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 16})
111+
err = issues_model.IssueAssignOrRemoveProject(db.DefaultContext, issue16, user2, project1.ID, column1.ID)
112+
assert.NoError(t, err)
113+
66114
projects, err := db.Find[project_model.Project](db.DefaultContext, project_model.SearchOptions{
67115
OwnerID: org3.ID,
68116
})
69117
assert.NoError(t, err)
70118
assert.Len(t, projects, 1)
71-
assert.EqualValues(t, 7, projects[0].ID)
119+
assert.EqualValues(t, project1.ID, projects[0].ID)
72120

73121
t.Run("Authenticated user", func(t *testing.T) {
74122
columnIssues, err := LoadIssuesFromProject(db.DefaultContext, projects[0], &issues_model.IssuesOptions{
75123
Org: org3,
76-
AccessUser: user2,
124+
AccessUser: userAdmin,
77125
})
78126
assert.NoError(t, err)
79-
assert.Len(t, columnIssues, 1) // 4 has 2 issues, 6 will not contains here because 0 issues
80-
assert.Len(t, columnIssues[4], 2) // user2 can visit both issues, one from public repository one from private repository
127+
assert.Len(t, columnIssues, 1) // column1 has 2 issues, 6 will not contains here because 0 issues
128+
assert.Len(t, columnIssues[column1.ID], 2) // user2 can visit both issues, one from public repository one from private repository
81129
})
82130

83131
t.Run("Anonymous user", func(t *testing.T) {
@@ -86,23 +134,23 @@ func Test_Projects(t *testing.T) {
86134
})
87135
assert.NoError(t, err)
88136
assert.Len(t, columnIssues, 1)
89-
assert.Len(t, columnIssues[4], 1) // anonymous user can only visit public repo issues
137+
assert.Len(t, columnIssues[column1.ID], 1) // anonymous user can only visit public repo issues
90138
})
91139

92140
t.Run("Authenticated user with no permission to the private repo", func(t *testing.T) {
93141
columnIssues, err := LoadIssuesFromProject(db.DefaultContext, projects[0], &issues_model.IssuesOptions{
94142
Org: org3,
95-
AccessUser: user4,
143+
AccessUser: user2,
96144
})
97145
assert.NoError(t, err)
98146
assert.Len(t, columnIssues, 1)
99-
assert.Len(t, columnIssues[4], 1) // user4 can only visit public repo issues
147+
assert.Len(t, columnIssues[column1.ID], 1) // user4 can only visit public repo issues
100148
})
101149
})
102150

103-
repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
104-
105151
t.Run("Repository projects", func(t *testing.T) {
152+
repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
153+
106154
projects, err := db.Find[project_model.Project](db.DefaultContext, project_model.SearchOptions{
107155
RepoID: repo1.ID,
108156
})
@@ -113,31 +161,36 @@ func Test_Projects(t *testing.T) {
113161
t.Run("Authenticated user", func(t *testing.T) {
114162
columnIssues, err := LoadIssuesFromProject(db.DefaultContext, projects[0], &issues_model.IssuesOptions{
115163
RepoIDs: []int64{repo1.ID},
116-
AccessUser: user2,
164+
AccessUser: userAdmin,
117165
})
118166
assert.NoError(t, err)
119-
assert.Len(t, columnIssues, 1) // 4 has 2 issues, 6 will not contains here because 0 issues
120-
assert.Len(t, columnIssues[4], 2) // user2 can visit both issues, one from public repository one from private repository
167+
assert.Len(t, columnIssues, 3)
168+
assert.Len(t, columnIssues[1], 2)
169+
assert.Len(t, columnIssues[2], 1)
170+
assert.Len(t, columnIssues[3], 1)
121171
})
122172

123173
t.Run("Anonymous user", func(t *testing.T) {
124174
columnIssues, err := LoadIssuesFromProject(db.DefaultContext, projects[0], &issues_model.IssuesOptions{
125-
RepoIDs: []int64{repo1.ID},
126175
AllPublic: true,
127176
})
128177
assert.NoError(t, err)
129-
assert.Len(t, columnIssues, 1)
130-
assert.Len(t, columnIssues[4], 1) // anonymous user can only visit public repo issues
178+
assert.Len(t, columnIssues, 3)
179+
assert.Len(t, columnIssues[1], 2)
180+
assert.Len(t, columnIssues[2], 1)
181+
assert.Len(t, columnIssues[3], 1)
131182
})
132183

133184
t.Run("Authenticated user with no permission to the private repo", func(t *testing.T) {
134185
columnIssues, err := LoadIssuesFromProject(db.DefaultContext, projects[0], &issues_model.IssuesOptions{
135186
RepoIDs: []int64{repo1.ID},
136-
AccessUser: user4,
187+
AccessUser: user2,
137188
})
138189
assert.NoError(t, err)
139-
assert.Len(t, columnIssues, 1)
140-
assert.Len(t, columnIssues[4], 1) // user4 can only visit public repo issues
190+
assert.Len(t, columnIssues, 3)
191+
assert.Len(t, columnIssues[1], 2)
192+
assert.Len(t, columnIssues[2], 1)
193+
assert.Len(t, columnIssues[3], 1)
141194
})
142195
})
143196
}

0 commit comments

Comments
 (0)