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.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. "code.gitea.io/gitea/models/unittest"
  10. user_model "code.gitea.io/gitea/models/user"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func TestRepository_AddCollaborator(t *testing.T) {
  14. assert.NoError(t, unittest.PrepareTestDatabase())
  15. testSuccess := func(repoID, userID int64) {
  16. repo := unittest.AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
  17. assert.NoError(t, repo.GetOwner())
  18. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: userID}).(*user_model.User)
  19. assert.NoError(t, repo.AddCollaborator(user))
  20. unittest.CheckConsistencyFor(t, &Repository{ID: repoID}, &user_model.User{ID: userID})
  21. }
  22. testSuccess(1, 4)
  23. testSuccess(1, 4)
  24. testSuccess(3, 4)
  25. }
  26. func TestRepository_GetCollaborators(t *testing.T) {
  27. assert.NoError(t, unittest.PrepareTestDatabase())
  28. test := func(repoID int64) {
  29. repo := unittest.AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
  30. collaborators, err := repo.GetCollaborators(db.ListOptions{})
  31. assert.NoError(t, err)
  32. expectedLen, err := db.GetEngine(db.DefaultContext).Count(&Collaboration{RepoID: repoID})
  33. assert.NoError(t, err)
  34. assert.Len(t, collaborators, int(expectedLen))
  35. for _, collaborator := range collaborators {
  36. assert.EqualValues(t, collaborator.User.ID, collaborator.Collaboration.UserID)
  37. assert.EqualValues(t, repoID, collaborator.Collaboration.RepoID)
  38. }
  39. }
  40. test(1)
  41. test(2)
  42. test(3)
  43. test(4)
  44. }
  45. func TestRepository_IsCollaborator(t *testing.T) {
  46. assert.NoError(t, unittest.PrepareTestDatabase())
  47. test := func(repoID, userID int64, expected bool) {
  48. repo := unittest.AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
  49. actual, err := repo.IsCollaborator(userID)
  50. assert.NoError(t, err)
  51. assert.Equal(t, expected, actual)
  52. }
  53. test(3, 2, true)
  54. test(3, unittest.NonexistentID, false)
  55. test(4, 2, false)
  56. test(4, 4, true)
  57. }
  58. func TestRepository_ChangeCollaborationAccessMode(t *testing.T) {
  59. assert.NoError(t, unittest.PrepareTestDatabase())
  60. repo := unittest.AssertExistsAndLoadBean(t, &Repository{ID: 4}).(*Repository)
  61. assert.NoError(t, repo.ChangeCollaborationAccessMode(4, perm.AccessModeAdmin))
  62. collaboration := unittest.AssertExistsAndLoadBean(t, &Collaboration{RepoID: repo.ID, UserID: 4}).(*Collaboration)
  63. assert.EqualValues(t, perm.AccessModeAdmin, collaboration.Mode)
  64. access := unittest.AssertExistsAndLoadBean(t, &Access{UserID: 4, RepoID: repo.ID}).(*Access)
  65. assert.EqualValues(t, perm.AccessModeAdmin, access.Mode)
  66. assert.NoError(t, repo.ChangeCollaborationAccessMode(4, perm.AccessModeAdmin))
  67. assert.NoError(t, repo.ChangeCollaborationAccessMode(unittest.NonexistentID, perm.AccessModeAdmin))
  68. unittest.CheckConsistencyFor(t, &Repository{ID: repo.ID})
  69. }
  70. func TestRepository_DeleteCollaboration(t *testing.T) {
  71. assert.NoError(t, unittest.PrepareTestDatabase())
  72. repo := unittest.AssertExistsAndLoadBean(t, &Repository{ID: 4}).(*Repository)
  73. assert.NoError(t, repo.GetOwner())
  74. assert.NoError(t, repo.DeleteCollaboration(4))
  75. unittest.AssertNotExistsBean(t, &Collaboration{RepoID: repo.ID, UserID: 4})
  76. assert.NoError(t, repo.DeleteCollaboration(4))
  77. unittest.AssertNotExistsBean(t, &Collaboration{RepoID: repo.ID, UserID: 4})
  78. unittest.CheckConsistencyFor(t, &Repository{ID: repo.ID})
  79. }