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_variables_test.go 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. // Copyright 2024 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. api "code.gitea.io/gitea/modules/structs"
  10. "code.gitea.io/gitea/tests"
  11. )
  12. func TestAPIUserVariables(t *testing.T) {
  13. defer tests.PrepareTestEnv(t)()
  14. session := loginUser(t, "user1")
  15. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser)
  16. t.Run("CreateRepoVariable", func(t *testing.T) {
  17. cases := []struct {
  18. Name string
  19. ExpectedStatus int
  20. }{
  21. {
  22. Name: "-",
  23. ExpectedStatus: http.StatusBadRequest,
  24. },
  25. {
  26. Name: "_",
  27. ExpectedStatus: http.StatusNoContent,
  28. },
  29. {
  30. Name: "TEST_VAR",
  31. ExpectedStatus: http.StatusNoContent,
  32. },
  33. {
  34. Name: "test_var",
  35. ExpectedStatus: http.StatusConflict,
  36. },
  37. {
  38. Name: "ci",
  39. ExpectedStatus: http.StatusBadRequest,
  40. },
  41. {
  42. Name: "123var",
  43. ExpectedStatus: http.StatusBadRequest,
  44. },
  45. {
  46. Name: "var@test",
  47. ExpectedStatus: http.StatusBadRequest,
  48. },
  49. {
  50. Name: "github_var",
  51. ExpectedStatus: http.StatusBadRequest,
  52. },
  53. {
  54. Name: "gitea_var",
  55. ExpectedStatus: http.StatusBadRequest,
  56. },
  57. }
  58. for _, c := range cases {
  59. req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/api/v1/user/actions/variables/%s", c.Name), api.CreateVariableOption{
  60. Value: "value",
  61. }).AddTokenAuth(token)
  62. MakeRequest(t, req, c.ExpectedStatus)
  63. }
  64. })
  65. t.Run("UpdateRepoVariable", func(t *testing.T) {
  66. variableName := "test_update_var"
  67. url := fmt.Sprintf("/api/v1/user/actions/variables/%s", variableName)
  68. req := NewRequestWithJSON(t, "POST", url, api.CreateVariableOption{
  69. Value: "initial_val",
  70. }).AddTokenAuth(token)
  71. MakeRequest(t, req, http.StatusNoContent)
  72. cases := []struct {
  73. Name string
  74. UpdateName string
  75. ExpectedStatus int
  76. }{
  77. {
  78. Name: "not_found_var",
  79. ExpectedStatus: http.StatusNotFound,
  80. },
  81. {
  82. Name: variableName,
  83. UpdateName: "1invalid",
  84. ExpectedStatus: http.StatusBadRequest,
  85. },
  86. {
  87. Name: variableName,
  88. UpdateName: "invalid@name",
  89. ExpectedStatus: http.StatusBadRequest,
  90. },
  91. {
  92. Name: variableName,
  93. UpdateName: "ci",
  94. ExpectedStatus: http.StatusBadRequest,
  95. },
  96. {
  97. Name: variableName,
  98. UpdateName: "updated_var_name",
  99. ExpectedStatus: http.StatusNoContent,
  100. },
  101. {
  102. Name: variableName,
  103. ExpectedStatus: http.StatusNotFound,
  104. },
  105. {
  106. Name: "updated_var_name",
  107. ExpectedStatus: http.StatusNoContent,
  108. },
  109. }
  110. for _, c := range cases {
  111. req := NewRequestWithJSON(t, "PUT", fmt.Sprintf("/api/v1/user/actions/variables/%s", c.Name), api.UpdateVariableOption{
  112. Name: c.UpdateName,
  113. Value: "updated_val",
  114. }).AddTokenAuth(token)
  115. MakeRequest(t, req, c.ExpectedStatus)
  116. }
  117. })
  118. t.Run("DeleteRepoVariable", func(t *testing.T) {
  119. variableName := "test_delete_var"
  120. url := fmt.Sprintf("/api/v1/user/actions/variables/%s", variableName)
  121. req := NewRequestWithJSON(t, "POST", url, api.CreateVariableOption{
  122. Value: "initial_val",
  123. }).AddTokenAuth(token)
  124. MakeRequest(t, req, http.StatusNoContent)
  125. req = NewRequest(t, "DELETE", url).AddTokenAuth(token)
  126. MakeRequest(t, req, http.StatusNoContent)
  127. req = NewRequest(t, "DELETE", url).AddTokenAuth(token)
  128. MakeRequest(t, req, http.StatusNotFound)
  129. })
  130. }