Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

org_team_invite_test.go 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "fmt"
  6. "net/http"
  7. "testing"
  8. "code.gitea.io/gitea/models/db"
  9. "code.gitea.io/gitea/models/organization"
  10. "code.gitea.io/gitea/models/unittest"
  11. user_model "code.gitea.io/gitea/models/user"
  12. "code.gitea.io/gitea/modules/setting"
  13. "code.gitea.io/gitea/modules/test"
  14. "code.gitea.io/gitea/tests"
  15. "github.com/stretchr/testify/assert"
  16. )
  17. func TestOrgTeamEmailInvite(t *testing.T) {
  18. if setting.MailService == nil {
  19. t.Skip()
  20. return
  21. }
  22. defer tests.PrepareTestEnv(t)()
  23. org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
  24. team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: 2})
  25. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 5})
  26. isMember, err := organization.IsTeamMember(db.DefaultContext, team.OrgID, team.ID, user.ID)
  27. assert.NoError(t, err)
  28. assert.False(t, isMember)
  29. session := loginUser(t, "user1")
  30. url := fmt.Sprintf("/org/%s/teams/%s", org.Name, team.Name)
  31. csrf := GetCSRF(t, session, url)
  32. req := NewRequestWithValues(t, "POST", url+"/action/add", map[string]string{
  33. "_csrf": csrf,
  34. "uid": "1",
  35. "uname": user.Email,
  36. })
  37. resp := session.MakeRequest(t, req, http.StatusSeeOther)
  38. req = NewRequest(t, "GET", test.RedirectURL(resp))
  39. session.MakeRequest(t, req, http.StatusOK)
  40. // get the invite token
  41. invites, err := organization.GetInvitesByTeamID(db.DefaultContext, team.ID)
  42. assert.NoError(t, err)
  43. assert.Len(t, invites, 1)
  44. session = loginUser(t, user.Name)
  45. // join the team
  46. url = fmt.Sprintf("/org/invite/%s", invites[0].Token)
  47. csrf = GetCSRF(t, session, url)
  48. req = NewRequestWithValues(t, "POST", url, map[string]string{
  49. "_csrf": csrf,
  50. })
  51. resp = session.MakeRequest(t, req, http.StatusSeeOther)
  52. req = NewRequest(t, "GET", test.RedirectURL(resp))
  53. session.MakeRequest(t, req, http.StatusOK)
  54. isMember, err = organization.IsTeamMember(db.DefaultContext, team.OrgID, team.ID, user.ID)
  55. assert.NoError(t, err)
  56. assert.True(t, isMember)
  57. }