You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

repo_collaboration_test.go 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. // Copyright 2017 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package models
  5. import (
  6. "testing"
  7. "code.gitea.io/gitea/models/db"
  8. "code.gitea.io/gitea/models/perm"
  9. repo_model "code.gitea.io/gitea/models/repo"
  10. "code.gitea.io/gitea/models/unittest"
  11. user_model "code.gitea.io/gitea/models/user"
  12. "github.com/stretchr/testify/assert"
  13. )
  14. func TestRepository_AddCollaborator(t *testing.T) {
  15. assert.NoError(t, unittest.PrepareTestDatabase())
  16. testSuccess := func(repoID, userID int64) {
  17. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repoID}).(*repo_model.Repository)
  18. assert.NoError(t, repo.GetOwner(db.DefaultContext))
  19. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: userID}).(*user_model.User)
  20. assert.NoError(t, AddCollaborator(repo, user))
  21. unittest.CheckConsistencyFor(t, &repo_model.Repository{ID: repoID}, &user_model.User{ID: userID})
  22. }
  23. testSuccess(1, 4)
  24. testSuccess(1, 4)
  25. testSuccess(3, 4)
  26. }
  27. func TestRepository_GetCollaborators(t *testing.T) {
  28. assert.NoError(t, unittest.PrepareTestDatabase())
  29. test := func(repoID int64) {
  30. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repoID}).(*repo_model.Repository)
  31. collaborators, err := GetCollaborators(repo.ID, db.ListOptions{})
  32. assert.NoError(t, err)
  33. expectedLen, err := db.GetEngine(db.DefaultContext).Count(&Collaboration{RepoID: repoID})
  34. assert.NoError(t, err)
  35. assert.Len(t, collaborators, int(expectedLen))
  36. for _, collaborator := range collaborators {
  37. assert.EqualValues(t, collaborator.User.ID, collaborator.Collaboration.UserID)
  38. assert.EqualValues(t, repoID, collaborator.Collaboration.RepoID)
  39. }
  40. }
  41. test(1)
  42. test(2)
  43. test(3)
  44. test(4)
  45. }
  46. func TestRepository_IsCollaborator(t *testing.T) {
  47. assert.NoError(t, unittest.PrepareTestDatabase())
  48. test := func(repoID, userID int64, expected bool) {
  49. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repoID}).(*repo_model.Repository)
  50. actual, err := IsCollaborator(repo.ID, userID)
  51. assert.NoError(t, err)
  52. assert.Equal(t, expected, actual)
  53. }
  54. test(3, 2, true)
  55. test(3, unittest.NonexistentID, false)
  56. test(4, 2, false)
  57. test(4, 4, true)
  58. }
  59. func TestRepository_ChangeCollaborationAccessMode(t *testing.T) {
  60. assert.NoError(t, unittest.PrepareTestDatabase())
  61. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 4}).(*repo_model.Repository)
  62. assert.NoError(t, ChangeCollaborationAccessMode(repo, 4, perm.AccessModeAdmin))
  63. collaboration := unittest.AssertExistsAndLoadBean(t, &Collaboration{RepoID: repo.ID, UserID: 4}).(*Collaboration)
  64. assert.EqualValues(t, perm.AccessModeAdmin, collaboration.Mode)
  65. access := unittest.AssertExistsAndLoadBean(t, &Access{UserID: 4, RepoID: repo.ID}).(*Access)
  66. assert.EqualValues(t, perm.AccessModeAdmin, access.Mode)
  67. assert.NoError(t, ChangeCollaborationAccessMode(repo, 4, perm.AccessModeAdmin))
  68. assert.NoError(t, ChangeCollaborationAccessMode(repo, unittest.NonexistentID, perm.AccessModeAdmin))
  69. unittest.CheckConsistencyFor(t, &repo_model.Repository{ID: repo.ID})
  70. }
  71. func TestRepository_DeleteCollaboration(t *testing.T) {
  72. assert.NoError(t, unittest.PrepareTestDatabase())
  73. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 4}).(*repo_model.Repository)
  74. assert.NoError(t, repo.GetOwner(db.DefaultContext))
  75. assert.NoError(t, DeleteCollaboration(repo, 4))
  76. unittest.AssertNotExistsBean(t, &Collaboration{RepoID: repo.ID, UserID: 4})
  77. assert.NoError(t, DeleteCollaboration(repo, 4))
  78. unittest.AssertNotExistsBean(t, &Collaboration{RepoID: repo.ID, UserID: 4})
  79. unittest.CheckConsistencyFor(t, &repo_model.Repository{ID: repo.ID})
  80. }