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_org_avatar_test.go 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 TestAPIUpdateOrgAvatar(t *testing.T) {
  15. defer tests.PrepareTestEnv(t)()
  16. session := loginUser(t, "user1")
  17. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteOrganization)
  18. // Test what happens if you use a valid image
  19. avatar, err := os.ReadFile("tests/integration/avatar.png")
  20. assert.NoError(t, err)
  21. if err != nil {
  22. assert.FailNow(t, "Unable to open avatar.png")
  23. }
  24. opts := api.UpdateUserAvatarOption{
  25. Image: base64.StdEncoding.EncodeToString(avatar),
  26. }
  27. req := NewRequestWithJSON(t, "POST", "/api/v1/orgs/org3/avatar", &opts).
  28. AddTokenAuth(token)
  29. MakeRequest(t, req, http.StatusNoContent)
  30. // Test what happens if you don't have a valid Base64 string
  31. opts = api.UpdateUserAvatarOption{
  32. Image: "Invalid",
  33. }
  34. req = NewRequestWithJSON(t, "POST", "/api/v1/orgs/org3/avatar", &opts).
  35. AddTokenAuth(token)
  36. MakeRequest(t, req, http.StatusBadRequest)
  37. // Test what happens if you use a file that is not an image
  38. text, err := os.ReadFile("tests/integration/README.md")
  39. assert.NoError(t, err)
  40. if err != nil {
  41. assert.FailNow(t, "Unable to open README.md")
  42. }
  43. opts = api.UpdateUserAvatarOption{
  44. Image: base64.StdEncoding.EncodeToString(text),
  45. }
  46. req = NewRequestWithJSON(t, "POST", "/api/v1/orgs/org3/avatar", &opts).
  47. AddTokenAuth(token)
  48. MakeRequest(t, req, http.StatusInternalServerError)
  49. }
  50. func TestAPIDeleteOrgAvatar(t *testing.T) {
  51. defer tests.PrepareTestEnv(t)()
  52. session := loginUser(t, "user1")
  53. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteOrganization)
  54. req := NewRequest(t, "DELETE", "/api/v1/orgs/org3/avatar").
  55. AddTokenAuth(token)
  56. MakeRequest(t, req, http.StatusNoContent)
  57. }