gitea源码

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package setting
  4. import (
  5. "path/filepath"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/stretchr/testify/require"
  9. )
  10. func Test_getStorageInheritNameSectionTypeForActions(t *testing.T) {
  11. iniStr := `
  12. [storage]
  13. STORAGE_TYPE = minio
  14. `
  15. cfg, err := NewConfigProviderFromData(iniStr)
  16. assert.NoError(t, err)
  17. assert.NoError(t, loadActionsFrom(cfg))
  18. assert.EqualValues(t, "minio", Actions.LogStorage.Type)
  19. assert.Equal(t, "actions_log/", Actions.LogStorage.MinioConfig.BasePath)
  20. assert.EqualValues(t, "minio", Actions.ArtifactStorage.Type)
  21. assert.Equal(t, "actions_artifacts/", Actions.ArtifactStorage.MinioConfig.BasePath)
  22. iniStr = `
  23. [storage.actions_log]
  24. STORAGE_TYPE = minio
  25. `
  26. cfg, err = NewConfigProviderFromData(iniStr)
  27. assert.NoError(t, err)
  28. assert.NoError(t, loadActionsFrom(cfg))
  29. assert.EqualValues(t, "minio", Actions.LogStorage.Type)
  30. assert.Equal(t, "actions_log/", Actions.LogStorage.MinioConfig.BasePath)
  31. assert.EqualValues(t, "local", Actions.ArtifactStorage.Type)
  32. assert.Equal(t, "actions_artifacts", filepath.Base(Actions.ArtifactStorage.Path))
  33. iniStr = `
  34. [storage.actions_log]
  35. STORAGE_TYPE = my_storage
  36. [storage.my_storage]
  37. STORAGE_TYPE = minio
  38. `
  39. cfg, err = NewConfigProviderFromData(iniStr)
  40. assert.NoError(t, err)
  41. assert.NoError(t, loadActionsFrom(cfg))
  42. assert.EqualValues(t, "minio", Actions.LogStorage.Type)
  43. assert.Equal(t, "actions_log/", Actions.LogStorage.MinioConfig.BasePath)
  44. assert.EqualValues(t, "local", Actions.ArtifactStorage.Type)
  45. assert.Equal(t, "actions_artifacts", filepath.Base(Actions.ArtifactStorage.Path))
  46. iniStr = `
  47. [storage.actions_artifacts]
  48. STORAGE_TYPE = my_storage
  49. [storage.my_storage]
  50. STORAGE_TYPE = minio
  51. `
  52. cfg, err = NewConfigProviderFromData(iniStr)
  53. assert.NoError(t, err)
  54. assert.NoError(t, loadActionsFrom(cfg))
  55. assert.EqualValues(t, "local", Actions.LogStorage.Type)
  56. assert.Equal(t, "actions_log", filepath.Base(Actions.LogStorage.Path))
  57. assert.EqualValues(t, "minio", Actions.ArtifactStorage.Type)
  58. assert.Equal(t, "actions_artifacts/", Actions.ArtifactStorage.MinioConfig.BasePath)
  59. iniStr = `
  60. [storage.actions_artifacts]
  61. STORAGE_TYPE = my_storage
  62. [storage.my_storage]
  63. STORAGE_TYPE = minio
  64. `
  65. cfg, err = NewConfigProviderFromData(iniStr)
  66. assert.NoError(t, err)
  67. assert.NoError(t, loadActionsFrom(cfg))
  68. assert.EqualValues(t, "local", Actions.LogStorage.Type)
  69. assert.Equal(t, "actions_log", filepath.Base(Actions.LogStorage.Path))
  70. assert.EqualValues(t, "minio", Actions.ArtifactStorage.Type)
  71. assert.Equal(t, "actions_artifacts/", Actions.ArtifactStorage.MinioConfig.BasePath)
  72. iniStr = ``
  73. cfg, err = NewConfigProviderFromData(iniStr)
  74. assert.NoError(t, err)
  75. assert.NoError(t, loadActionsFrom(cfg))
  76. assert.EqualValues(t, "local", Actions.LogStorage.Type)
  77. assert.Equal(t, "actions_log", filepath.Base(Actions.LogStorage.Path))
  78. assert.EqualValues(t, "local", Actions.ArtifactStorage.Type)
  79. assert.Equal(t, "actions_artifacts", filepath.Base(Actions.ArtifactStorage.Path))
  80. }
  81. func Test_getDefaultActionsURLForActions(t *testing.T) {
  82. oldActions := Actions
  83. oldAppURL := AppURL
  84. defer func() {
  85. Actions = oldActions
  86. AppURL = oldAppURL
  87. }()
  88. AppURL = "http://test_get_default_actions_url_for_actions:3000/"
  89. tests := []struct {
  90. name string
  91. iniStr string
  92. wantErr assert.ErrorAssertionFunc
  93. wantURL string
  94. }{
  95. {
  96. name: "default",
  97. iniStr: `
  98. [actions]
  99. `,
  100. wantErr: assert.NoError,
  101. wantURL: "https://github.com",
  102. },
  103. {
  104. name: "github",
  105. iniStr: `
  106. [actions]
  107. DEFAULT_ACTIONS_URL = github
  108. `,
  109. wantErr: assert.NoError,
  110. wantURL: "https://github.com",
  111. },
  112. {
  113. name: "self",
  114. iniStr: `
  115. [actions]
  116. DEFAULT_ACTIONS_URL = self
  117. `,
  118. wantErr: assert.NoError,
  119. wantURL: "http://test_get_default_actions_url_for_actions:3000",
  120. },
  121. {
  122. name: "custom url",
  123. iniStr: `
  124. [actions]
  125. DEFAULT_ACTIONS_URL = https://gitea.com
  126. `,
  127. wantErr: assert.NoError,
  128. wantURL: "https://github.com",
  129. },
  130. {
  131. name: "custom urls",
  132. iniStr: `
  133. [actions]
  134. DEFAULT_ACTIONS_URL = https://gitea.com,https://github.com
  135. `,
  136. wantErr: assert.NoError,
  137. wantURL: "https://github.com",
  138. },
  139. {
  140. name: "invalid",
  141. iniStr: `
  142. [actions]
  143. DEFAULT_ACTIONS_URL = gitea
  144. `,
  145. wantErr: assert.Error,
  146. wantURL: "https://github.com",
  147. },
  148. }
  149. for _, tt := range tests {
  150. t.Run(tt.name, func(t *testing.T) {
  151. cfg, err := NewConfigProviderFromData(tt.iniStr)
  152. require.NoError(t, err)
  153. if !tt.wantErr(t, loadActionsFrom(cfg)) {
  154. return
  155. }
  156. assert.Equal(t, tt.wantURL, Actions.DefaultActionsURL.URL())
  157. })
  158. }
  159. }