gitea源码

api_user_avatar_test.go 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "encoding/base64"
  6. "net/http"
  7. "os"
  8. "testing"
  9. auth_model "code.gitea.io/gitea/models/auth"
  10. api "code.gitea.io/gitea/modules/structs"
  11. "code.gitea.io/gitea/tests"
  12. "github.com/stretchr/testify/assert"
  13. )
  14. func TestAPIUpdateUserAvatar(t *testing.T) {
  15. defer tests.PrepareTestEnv(t)()
  16. normalUsername := "user2"
  17. session := loginUser(t, normalUsername)
  18. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser)
  19. // Test what happens if you use a valid image
  20. avatar, err := os.ReadFile("tests/integration/avatar.png")
  21. assert.NoError(t, err)
  22. if err != nil {
  23. assert.FailNow(t, "Unable to open avatar.png")
  24. }
  25. // Test what happens if you don't have a valid Base64 string
  26. opts := api.UpdateUserAvatarOption{
  27. Image: base64.StdEncoding.EncodeToString(avatar),
  28. }
  29. req := NewRequestWithJSON(t, "POST", "/api/v1/user/avatar", &opts).
  30. AddTokenAuth(token)
  31. MakeRequest(t, req, http.StatusNoContent)
  32. opts = api.UpdateUserAvatarOption{
  33. Image: "Invalid",
  34. }
  35. req = NewRequestWithJSON(t, "POST", "/api/v1/user/avatar", &opts).
  36. AddTokenAuth(token)
  37. MakeRequest(t, req, http.StatusBadRequest)
  38. // Test what happens if you use a file that is not an image
  39. text, err := os.ReadFile("tests/integration/README.md")
  40. assert.NoError(t, err)
  41. if err != nil {
  42. assert.FailNow(t, "Unable to open README.md")
  43. }
  44. opts = api.UpdateUserAvatarOption{
  45. Image: base64.StdEncoding.EncodeToString(text),
  46. }
  47. req = NewRequestWithJSON(t, "POST", "/api/v1/user/avatar", &opts).
  48. AddTokenAuth(token)
  49. MakeRequest(t, req, http.StatusInternalServerError)
  50. }
  51. func TestAPIDeleteUserAvatar(t *testing.T) {
  52. defer tests.PrepareTestEnv(t)()
  53. normalUsername := "user2"
  54. session := loginUser(t, normalUsername)
  55. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser)
  56. req := NewRequest(t, "DELETE", "/api/v1/user/avatar").
  57. AddTokenAuth(token)
  58. MakeRequest(t, req, http.StatusNoContent)
  59. }