gitea源码

api_user_secrets_test.go 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. // Copyright 2023 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. )
  11. func TestAPIUserSecrets(t *testing.T) {
  12. defer tests.PrepareTestEnv(t)()
  13. session := loginUser(t, "user1")
  14. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser)
  15. t.Run("Create", func(t *testing.T) {
  16. cases := []struct {
  17. Name string
  18. ExpectedStatus int
  19. }{
  20. {
  21. Name: "",
  22. ExpectedStatus: http.StatusNotFound,
  23. },
  24. {
  25. Name: "-",
  26. ExpectedStatus: http.StatusBadRequest,
  27. },
  28. {
  29. Name: "_",
  30. ExpectedStatus: http.StatusCreated,
  31. },
  32. {
  33. Name: "secret",
  34. ExpectedStatus: http.StatusCreated,
  35. },
  36. {
  37. Name: "2secret",
  38. ExpectedStatus: http.StatusBadRequest,
  39. },
  40. {
  41. Name: "GITEA_secret",
  42. ExpectedStatus: http.StatusBadRequest,
  43. },
  44. {
  45. Name: "GITHUB_secret",
  46. ExpectedStatus: http.StatusBadRequest,
  47. },
  48. }
  49. for _, c := range cases {
  50. req := NewRequestWithJSON(t, "PUT", "/api/v1/user/actions/secrets/"+c.Name, api.CreateOrUpdateSecretOption{
  51. Data: "data",
  52. }).AddTokenAuth(token)
  53. MakeRequest(t, req, c.ExpectedStatus)
  54. }
  55. })
  56. t.Run("Update", func(t *testing.T) {
  57. name := "update_secret"
  58. url := "/api/v1/user/actions/secrets/" + name
  59. req := NewRequestWithJSON(t, "PUT", url, api.CreateOrUpdateSecretOption{
  60. Data: "initial",
  61. }).AddTokenAuth(token)
  62. MakeRequest(t, req, http.StatusCreated)
  63. req = NewRequestWithJSON(t, "PUT", url, api.CreateOrUpdateSecretOption{
  64. Data: "changed",
  65. }).AddTokenAuth(token)
  66. MakeRequest(t, req, http.StatusNoContent)
  67. })
  68. t.Run("Delete", func(t *testing.T) {
  69. name := "delete_secret"
  70. url := "/api/v1/user/actions/secrets/" + name
  71. req := NewRequestWithJSON(t, "PUT", url, api.CreateOrUpdateSecretOption{
  72. Data: "initial",
  73. }).AddTokenAuth(token)
  74. MakeRequest(t, req, http.StatusCreated)
  75. req = NewRequest(t, "DELETE", url).
  76. AddTokenAuth(token)
  77. MakeRequest(t, req, http.StatusNoContent)
  78. req = NewRequest(t, "DELETE", url).
  79. AddTokenAuth(token)
  80. MakeRequest(t, req, http.StatusNotFound)
  81. req = NewRequest(t, "DELETE", "/api/v1/user/actions/secrets/000").
  82. AddTokenAuth(token)
  83. MakeRequest(t, req, http.StatusBadRequest)
  84. })
  85. }