gitea源码

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. // Copyright 2021 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "net/http"
  6. "testing"
  7. auth_model "code.gitea.io/gitea/models/auth"
  8. api "code.gitea.io/gitea/modules/structs"
  9. "code.gitea.io/gitea/tests"
  10. "github.com/stretchr/testify/assert"
  11. )
  12. func TestAPIListEmails(t *testing.T) {
  13. defer tests.PrepareTestEnv(t)()
  14. normalUsername := "user2"
  15. session := loginUser(t, normalUsername)
  16. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadUser)
  17. req := NewRequest(t, "GET", "/api/v1/user/emails").
  18. AddTokenAuth(token)
  19. resp := MakeRequest(t, req, http.StatusOK)
  20. var emails []*api.Email
  21. DecodeJSON(t, resp, &emails)
  22. assert.Equal(t, []*api.Email{
  23. {
  24. Email: "user2@example.com",
  25. Verified: true,
  26. Primary: true,
  27. },
  28. {
  29. Email: "user2-2@example.com",
  30. Verified: false,
  31. Primary: false,
  32. },
  33. }, emails)
  34. }
  35. func TestAPIAddEmail(t *testing.T) {
  36. defer tests.PrepareTestEnv(t)()
  37. normalUsername := "user2"
  38. session := loginUser(t, normalUsername)
  39. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser)
  40. opts := api.CreateEmailOption{
  41. Emails: []string{"user101@example.com"},
  42. }
  43. req := NewRequestWithJSON(t, "POST", "/api/v1/user/emails", &opts).
  44. AddTokenAuth(token)
  45. MakeRequest(t, req, http.StatusUnprocessableEntity)
  46. opts = api.CreateEmailOption{
  47. Emails: []string{"user2-3@example.com"},
  48. }
  49. req = NewRequestWithJSON(t, "POST", "/api/v1/user/emails", &opts).
  50. AddTokenAuth(token)
  51. resp := MakeRequest(t, req, http.StatusCreated)
  52. var emails []*api.Email
  53. DecodeJSON(t, resp, &emails)
  54. assert.Equal(t, []*api.Email{
  55. {
  56. Email: "user2@example.com",
  57. Verified: true,
  58. Primary: true,
  59. },
  60. {
  61. Email: "user2-2@example.com",
  62. Verified: false,
  63. Primary: false,
  64. },
  65. {
  66. Email: "user2-3@example.com",
  67. Verified: true,
  68. Primary: false,
  69. },
  70. }, emails)
  71. opts = api.CreateEmailOption{
  72. Emails: []string{"notAEmail"},
  73. }
  74. req = NewRequestWithJSON(t, "POST", "/api/v1/user/emails", &opts).
  75. AddTokenAuth(token)
  76. MakeRequest(t, req, http.StatusUnprocessableEntity)
  77. }
  78. func TestAPIDeleteEmail(t *testing.T) {
  79. defer tests.PrepareTestEnv(t)()
  80. normalUsername := "user2"
  81. session := loginUser(t, normalUsername)
  82. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser)
  83. opts := api.DeleteEmailOption{
  84. Emails: []string{"user2-3@example.com"},
  85. }
  86. req := NewRequestWithJSON(t, "DELETE", "/api/v1/user/emails", &opts).
  87. AddTokenAuth(token)
  88. MakeRequest(t, req, http.StatusNotFound)
  89. opts = api.DeleteEmailOption{
  90. Emails: []string{"user2-2@example.com"},
  91. }
  92. req = NewRequestWithJSON(t, "DELETE", "/api/v1/user/emails", &opts).
  93. AddTokenAuth(token)
  94. MakeRequest(t, req, http.StatusNoContent)
  95. req = NewRequest(t, "GET", "/api/v1/user/emails").
  96. AddTokenAuth(token)
  97. resp := MakeRequest(t, req, http.StatusOK)
  98. var emails []*api.Email
  99. DecodeJSON(t, resp, &emails)
  100. assert.Equal(t, []*api.Email{
  101. {
  102. Email: "user2@example.com",
  103. Verified: true,
  104. Primary: true,
  105. },
  106. }, emails)
  107. }