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.

org_test.go 2.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright 2017 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package models
  4. import (
  5. "testing"
  6. "code.gitea.io/gitea/models/db"
  7. "code.gitea.io/gitea/models/organization"
  8. "code.gitea.io/gitea/models/unittest"
  9. user_model "code.gitea.io/gitea/models/user"
  10. "github.com/stretchr/testify/assert"
  11. )
  12. func TestUser_RemoveMember(t *testing.T) {
  13. assert.NoError(t, unittest.PrepareTestDatabase())
  14. org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
  15. user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
  16. user5 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 5})
  17. // remove a user that is a member
  18. unittest.AssertExistsAndLoadBean(t, &organization.OrgUser{UID: user4.ID, OrgID: org.ID})
  19. prevNumMembers := org.NumMembers
  20. assert.NoError(t, RemoveOrgUser(db.DefaultContext, org, user4))
  21. unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: user4.ID, OrgID: org.ID})
  22. org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: org.ID})
  23. assert.Equal(t, prevNumMembers-1, org.NumMembers)
  24. // remove a user that is not a member
  25. unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: user5.ID, OrgID: org.ID})
  26. prevNumMembers = org.NumMembers
  27. assert.NoError(t, RemoveOrgUser(db.DefaultContext, org, user5))
  28. unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: user5.ID, OrgID: org.ID})
  29. org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: org.ID})
  30. assert.Equal(t, prevNumMembers, org.NumMembers)
  31. unittest.CheckConsistencyFor(t, &user_model.User{}, &organization.Team{})
  32. }
  33. func TestRemoveOrgUser(t *testing.T) {
  34. assert.NoError(t, unittest.PrepareTestDatabase())
  35. testSuccess := func(org *organization.Organization, user *user_model.User) {
  36. expectedNumMembers := org.NumMembers
  37. if unittest.BeanExists(t, &organization.OrgUser{OrgID: org.ID, UID: user.ID}) {
  38. expectedNumMembers--
  39. }
  40. assert.NoError(t, RemoveOrgUser(db.DefaultContext, org, user))
  41. unittest.AssertNotExistsBean(t, &organization.OrgUser{OrgID: org.ID, UID: user.ID})
  42. org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: org.ID})
  43. assert.EqualValues(t, expectedNumMembers, org.NumMembers)
  44. }
  45. org3 := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
  46. org7 := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 7})
  47. user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
  48. user5 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 5})
  49. testSuccess(org3, user4)
  50. org3 = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
  51. testSuccess(org3, user4)
  52. err := RemoveOrgUser(db.DefaultContext, org7, user5)
  53. assert.Error(t, err)
  54. assert.True(t, organization.IsErrLastOrgOwner(err))
  55. unittest.AssertExistsAndLoadBean(t, &organization.OrgUser{OrgID: org7.ID, UID: user5.ID})
  56. unittest.CheckConsistencyFor(t, &user_model.User{}, &organization.Team{})
  57. }