gitea源码

api_repo_secrets_test.go 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "fmt"
  6. "net/http"
  7. "testing"
  8. auth_model "code.gitea.io/gitea/models/auth"
  9. repo_model "code.gitea.io/gitea/models/repo"
  10. "code.gitea.io/gitea/models/unittest"
  11. user_model "code.gitea.io/gitea/models/user"
  12. api "code.gitea.io/gitea/modules/structs"
  13. "code.gitea.io/gitea/tests"
  14. )
  15. func TestAPIRepoSecrets(t *testing.T) {
  16. defer tests.PrepareTestEnv(t)()
  17. repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
  18. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
  19. session := loginUser(t, user.Name)
  20. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
  21. t.Run("List", func(t *testing.T) {
  22. req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/secrets", repo.FullName())).
  23. AddTokenAuth(token)
  24. MakeRequest(t, req, http.StatusOK)
  25. })
  26. t.Run("Create", func(t *testing.T) {
  27. cases := []struct {
  28. Name string
  29. ExpectedStatus int
  30. }{
  31. {
  32. Name: "",
  33. ExpectedStatus: http.StatusMethodNotAllowed,
  34. },
  35. {
  36. Name: "-",
  37. ExpectedStatus: http.StatusBadRequest,
  38. },
  39. {
  40. Name: "_",
  41. ExpectedStatus: http.StatusCreated,
  42. },
  43. {
  44. Name: "secret",
  45. ExpectedStatus: http.StatusCreated,
  46. },
  47. {
  48. Name: "2secret",
  49. ExpectedStatus: http.StatusBadRequest,
  50. },
  51. {
  52. Name: "GITEA_secret",
  53. ExpectedStatus: http.StatusBadRequest,
  54. },
  55. {
  56. Name: "GITHUB_secret",
  57. ExpectedStatus: http.StatusBadRequest,
  58. },
  59. }
  60. for _, c := range cases {
  61. req := NewRequestWithJSON(t, "PUT", fmt.Sprintf("/api/v1/repos/%s/actions/secrets/%s", repo.FullName(), c.Name), api.CreateOrUpdateSecretOption{
  62. Data: "data",
  63. }).AddTokenAuth(token)
  64. MakeRequest(t, req, c.ExpectedStatus)
  65. }
  66. })
  67. t.Run("CreateWithDescription", func(t *testing.T) {
  68. cases := []struct {
  69. Name string
  70. Description string
  71. ExpectedStatus int
  72. }{
  73. {
  74. Name: "no_description",
  75. Description: "",
  76. ExpectedStatus: http.StatusCreated,
  77. },
  78. {
  79. Name: "description",
  80. Description: "some description",
  81. ExpectedStatus: http.StatusCreated,
  82. },
  83. }
  84. for _, c := range cases {
  85. req := NewRequestWithJSON(t, "PUT", fmt.Sprintf("/api/v1/repos/%s/actions/secrets/%s", repo.FullName(), c.Name), api.CreateOrUpdateSecretOption{
  86. Data: "data",
  87. Description: c.Description,
  88. }).AddTokenAuth(token)
  89. MakeRequest(t, req, c.ExpectedStatus)
  90. }
  91. })
  92. t.Run("Update", func(t *testing.T) {
  93. name := "update_secret"
  94. url := fmt.Sprintf("/api/v1/repos/%s/actions/secrets/%s", repo.FullName(), name)
  95. req := NewRequestWithJSON(t, "PUT", url, api.CreateOrUpdateSecretOption{
  96. Data: "initial",
  97. }).AddTokenAuth(token)
  98. MakeRequest(t, req, http.StatusCreated)
  99. req = NewRequestWithJSON(t, "PUT", url, api.CreateOrUpdateSecretOption{
  100. Data: "changed",
  101. }).AddTokenAuth(token)
  102. MakeRequest(t, req, http.StatusNoContent)
  103. })
  104. t.Run("Delete", func(t *testing.T) {
  105. name := "delete_secret"
  106. url := fmt.Sprintf("/api/v1/repos/%s/actions/secrets/%s", repo.FullName(), name)
  107. req := NewRequestWithJSON(t, "PUT", url, api.CreateOrUpdateSecretOption{
  108. Data: "initial",
  109. }).AddTokenAuth(token)
  110. MakeRequest(t, req, http.StatusCreated)
  111. req = NewRequest(t, "DELETE", url).
  112. AddTokenAuth(token)
  113. MakeRequest(t, req, http.StatusNoContent)
  114. req = NewRequest(t, "DELETE", url).
  115. AddTokenAuth(token)
  116. MakeRequest(t, req, http.StatusNotFound)
  117. req = NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/repos/%s/actions/secrets/000", repo.FullName())).
  118. AddTokenAuth(token)
  119. MakeRequest(t, req, http.StatusBadRequest)
  120. })
  121. }