aboutsummaryrefslogtreecommitdiffstats
path: root/routers/repo/settings_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/repo/settings_test.go')
-rw-r--r--routers/repo/settings_test.go102
1 files changed, 102 insertions, 0 deletions
diff --git a/routers/repo/settings_test.go b/routers/repo/settings_test.go
index 392c05f773..a8cc645075 100644
--- a/routers/repo/settings_test.go
+++ b/routers/repo/settings_test.go
@@ -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)
+}