|
|
@@ -10,6 +10,7 @@ import ( |
|
|
|
|
|
|
|
"code.gitea.io/gitea/models" |
|
|
|
"code.gitea.io/gitea/modules/auth" |
|
|
|
"code.gitea.io/gitea/modules/context" |
|
|
|
"code.gitea.io/gitea/modules/test" |
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert" |
|
|
@@ -59,3 +60,104 @@ func TestAddReadWriteOnlyDeployKey(t *testing.T) { |
|
|
|
Mode: models.AccessModeWrite, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func TestCollaborationPost(t *testing.T) { |
|
|
|
|
|
|
|
models.PrepareTestEnv(t) |
|
|
|
ctx := test.MockContext(t, "user2/repo1/issues/labels") |
|
|
|
test.LoadUser(t, ctx, 2) |
|
|
|
test.LoadUser(t, ctx, 4) |
|
|
|
test.LoadRepo(t, ctx, 1) |
|
|
|
|
|
|
|
ctx.Req.Form.Set("collaborator", "user4") |
|
|
|
|
|
|
|
u := &models.User{ |
|
|
|
LowerName: "user2", |
|
|
|
Type: models.UserTypeIndividual, |
|
|
|
} |
|
|
|
|
|
|
|
re := &models.Repository{ |
|
|
|
ID: 2, |
|
|
|
Owner: u, |
|
|
|
} |
|
|
|
|
|
|
|
repo := &context.Repository{ |
|
|
|
Owner: u, |
|
|
|
Repository: re, |
|
|
|
} |
|
|
|
|
|
|
|
ctx.Repo = repo |
|
|
|
|
|
|
|
CollaborationPost(ctx) |
|
|
|
|
|
|
|
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) |
|
|
|
|
|
|
|
exists, err := re.IsCollaborator(4) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.True(t, exists) |
|
|
|
} |
|
|
|
|
|
|
|
func TestCollaborationPost_AddCollaboratorTwice(t *testing.T) { |
|
|
|
|
|
|
|
models.PrepareTestEnv(t) |
|
|
|
ctx := test.MockContext(t, "user2/repo1/issues/labels") |
|
|
|
test.LoadUser(t, ctx, 2) |
|
|
|
test.LoadUser(t, ctx, 4) |
|
|
|
test.LoadRepo(t, ctx, 1) |
|
|
|
|
|
|
|
ctx.Req.Form.Set("collaborator", "user4") |
|
|
|
|
|
|
|
u := &models.User{ |
|
|
|
LowerName: "user2", |
|
|
|
Type: models.UserTypeIndividual, |
|
|
|
} |
|
|
|
|
|
|
|
re := &models.Repository{ |
|
|
|
ID: 2, |
|
|
|
Owner: u, |
|
|
|
} |
|
|
|
|
|
|
|
repo := &context.Repository{ |
|
|
|
Owner: u, |
|
|
|
Repository: re, |
|
|
|
} |
|
|
|
|
|
|
|
ctx.Repo = repo |
|
|
|
|
|
|
|
CollaborationPost(ctx) |
|
|
|
|
|
|
|
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) |
|
|
|
|
|
|
|
exists, err := re.IsCollaborator(4) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.True(t, exists) |
|
|
|
|
|
|
|
// Try adding the same collaborator again |
|
|
|
CollaborationPost(ctx) |
|
|
|
|
|
|
|
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) |
|
|
|
assert.NotEmpty(t, ctx.Flash.ErrorMsg) |
|
|
|
} |
|
|
|
|
|
|
|
func TestCollaborationPost_NonExistentUser(t *testing.T) { |
|
|
|
|
|
|
|
models.PrepareTestEnv(t) |
|
|
|
ctx := test.MockContext(t, "user2/repo1/issues/labels") |
|
|
|
test.LoadUser(t, ctx, 2) |
|
|
|
test.LoadRepo(t, ctx, 1) |
|
|
|
|
|
|
|
ctx.Req.Form.Set("collaborator", "user34") |
|
|
|
|
|
|
|
repo := &context.Repository{ |
|
|
|
Owner: &models.User{ |
|
|
|
LowerName: "user2", |
|
|
|
}, |
|
|
|
} |
|
|
|
|
|
|
|
ctx.Repo = repo |
|
|
|
|
|
|
|
CollaborationPost(ctx) |
|
|
|
|
|
|
|
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) |
|
|
|
assert.NotEmpty(t, ctx.Flash.ErrorMsg) |
|
|
|
} |