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.

api_user_avatar_test.go 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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?token="+token, &opts)
  30. MakeRequest(t, req, http.StatusNoContent)
  31. opts = api.UpdateUserAvatarOption{
  32. Image: "Invalid",
  33. }
  34. req = NewRequestWithJSON(t, "POST", "/api/v1/user/avatar?token="+token, &opts)
  35. MakeRequest(t, req, http.StatusBadRequest)
  36. // Test what happens if you use a file that is not an image
  37. text, err := os.ReadFile("tests/integration/README.md")
  38. assert.NoError(t, err)
  39. if err != nil {
  40. assert.FailNow(t, "Unable to open README.md")
  41. }
  42. opts = api.UpdateUserAvatarOption{
  43. Image: base64.StdEncoding.EncodeToString(text),
  44. }
  45. req = NewRequestWithJSON(t, "POST", "/api/v1/user/avatar?token="+token, &opts)
  46. MakeRequest(t, req, http.StatusInternalServerError)
  47. }
  48. func TestAPIDeleteUserAvatar(t *testing.T) {
  49. defer tests.PrepareTestEnv(t)()
  50. normalUsername := "user2"
  51. session := loginUser(t, normalUsername)
  52. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser)
  53. req := NewRequest(t, "DELETE", "/api/v1/user/avatar?token="+token)
  54. MakeRequest(t, req, http.StatusNoContent)
  55. }