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.

packages_test.go 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package setting
  4. import (
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestMustBytes(t *testing.T) {
  9. test := func(value string) int64 {
  10. cfg, err := NewConfigProviderFromData("[test]")
  11. assert.NoError(t, err)
  12. sec := cfg.Section("test")
  13. sec.NewKey("VALUE", value)
  14. return mustBytes(sec, "VALUE")
  15. }
  16. assert.EqualValues(t, -1, test(""))
  17. assert.EqualValues(t, -1, test("-1"))
  18. assert.EqualValues(t, 0, test("0"))
  19. assert.EqualValues(t, 1, test("1"))
  20. assert.EqualValues(t, 10000, test("10000"))
  21. assert.EqualValues(t, 1000000, test("1 mb"))
  22. assert.EqualValues(t, 1048576, test("1mib"))
  23. assert.EqualValues(t, 1782579, test("1.7mib"))
  24. assert.EqualValues(t, -1, test("1 yib")) // too large
  25. }
  26. func Test_getStorageInheritNameSectionTypeForPackages(t *testing.T) {
  27. // packages storage inherits from storage if nothing configured
  28. iniStr := `
  29. [storage]
  30. STORAGE_TYPE = minio
  31. `
  32. cfg, err := NewConfigProviderFromData(iniStr)
  33. assert.NoError(t, err)
  34. assert.NoError(t, loadPackagesFrom(cfg))
  35. assert.EqualValues(t, "minio", Packages.Storage.Type)
  36. assert.EqualValues(t, "packages/", Packages.Storage.MinioConfig.BasePath)
  37. // we can also configure packages storage directly
  38. iniStr = `
  39. [storage.packages]
  40. STORAGE_TYPE = minio
  41. `
  42. cfg, err = NewConfigProviderFromData(iniStr)
  43. assert.NoError(t, err)
  44. assert.NoError(t, loadPackagesFrom(cfg))
  45. assert.EqualValues(t, "minio", Packages.Storage.Type)
  46. assert.EqualValues(t, "packages/", Packages.Storage.MinioConfig.BasePath)
  47. // or we can indicate the storage type in the packages section
  48. iniStr = `
  49. [packages]
  50. STORAGE_TYPE = my_minio
  51. [storage.my_minio]
  52. STORAGE_TYPE = minio
  53. `
  54. cfg, err = NewConfigProviderFromData(iniStr)
  55. assert.NoError(t, err)
  56. assert.NoError(t, loadPackagesFrom(cfg))
  57. assert.EqualValues(t, "minio", Packages.Storage.Type)
  58. assert.EqualValues(t, "packages/", Packages.Storage.MinioConfig.BasePath)
  59. // or we can indicate the storage type and minio base path in the packages section
  60. iniStr = `
  61. [packages]
  62. STORAGE_TYPE = my_minio
  63. MINIO_BASE_PATH = my_packages/
  64. [storage.my_minio]
  65. STORAGE_TYPE = minio
  66. `
  67. cfg, err = NewConfigProviderFromData(iniStr)
  68. assert.NoError(t, err)
  69. assert.NoError(t, loadPackagesFrom(cfg))
  70. assert.EqualValues(t, "minio", Packages.Storage.Type)
  71. assert.EqualValues(t, "my_packages/", Packages.Storage.MinioConfig.BasePath)
  72. }
  73. func Test_PackageStorage1(t *testing.T) {
  74. iniStr := `
  75. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  76. [packages]
  77. MINIO_BASE_PATH = packages/
  78. SERVE_DIRECT = true
  79. [storage]
  80. STORAGE_TYPE = minio
  81. MINIO_ENDPOINT = s3.my-domain.net
  82. MINIO_BUCKET = gitea
  83. MINIO_LOCATION = homenet
  84. MINIO_USE_SSL = true
  85. MINIO_ACCESS_KEY_ID = correct_key
  86. MINIO_SECRET_ACCESS_KEY = correct_key
  87. `
  88. cfg, err := NewConfigProviderFromData(iniStr)
  89. assert.NoError(t, err)
  90. assert.NoError(t, loadPackagesFrom(cfg))
  91. storage := Packages.Storage
  92. assert.EqualValues(t, "minio", storage.Type)
  93. assert.EqualValues(t, "gitea", storage.MinioConfig.Bucket)
  94. assert.EqualValues(t, "packages/", storage.MinioConfig.BasePath)
  95. assert.True(t, storage.MinioConfig.ServeDirect)
  96. }
  97. func Test_PackageStorage2(t *testing.T) {
  98. iniStr := `
  99. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  100. [storage.packages]
  101. MINIO_BASE_PATH = packages/
  102. SERVE_DIRECT = true
  103. [storage]
  104. STORAGE_TYPE = minio
  105. MINIO_ENDPOINT = s3.my-domain.net
  106. MINIO_BUCKET = gitea
  107. MINIO_LOCATION = homenet
  108. MINIO_USE_SSL = true
  109. MINIO_ACCESS_KEY_ID = correct_key
  110. MINIO_SECRET_ACCESS_KEY = correct_key
  111. `
  112. cfg, err := NewConfigProviderFromData(iniStr)
  113. assert.NoError(t, err)
  114. assert.NoError(t, loadPackagesFrom(cfg))
  115. storage := Packages.Storage
  116. assert.EqualValues(t, "minio", storage.Type)
  117. assert.EqualValues(t, "gitea", storage.MinioConfig.Bucket)
  118. assert.EqualValues(t, "packages/", storage.MinioConfig.BasePath)
  119. assert.True(t, storage.MinioConfig.ServeDirect)
  120. }
  121. func Test_PackageStorage3(t *testing.T) {
  122. iniStr := `
  123. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  124. [packages]
  125. STORAGE_TYPE = my_cfg
  126. MINIO_BASE_PATH = my_packages/
  127. SERVE_DIRECT = true
  128. [storage.my_cfg]
  129. STORAGE_TYPE = minio
  130. MINIO_ENDPOINT = s3.my-domain.net
  131. MINIO_BUCKET = gitea
  132. MINIO_LOCATION = homenet
  133. MINIO_USE_SSL = true
  134. MINIO_ACCESS_KEY_ID = correct_key
  135. MINIO_SECRET_ACCESS_KEY = correct_key
  136. `
  137. cfg, err := NewConfigProviderFromData(iniStr)
  138. assert.NoError(t, err)
  139. assert.NoError(t, loadPackagesFrom(cfg))
  140. storage := Packages.Storage
  141. assert.EqualValues(t, "minio", storage.Type)
  142. assert.EqualValues(t, "gitea", storage.MinioConfig.Bucket)
  143. assert.EqualValues(t, "my_packages/", storage.MinioConfig.BasePath)
  144. assert.True(t, storage.MinioConfig.ServeDirect)
  145. }
  146. func Test_PackageStorage4(t *testing.T) {
  147. iniStr := `
  148. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  149. [storage.packages]
  150. STORAGE_TYPE = my_cfg
  151. MINIO_BASE_PATH = my_packages/
  152. SERVE_DIRECT = true
  153. [storage.my_cfg]
  154. STORAGE_TYPE = minio
  155. MINIO_ENDPOINT = s3.my-domain.net
  156. MINIO_BUCKET = gitea
  157. MINIO_LOCATION = homenet
  158. MINIO_USE_SSL = true
  159. MINIO_ACCESS_KEY_ID = correct_key
  160. MINIO_SECRET_ACCESS_KEY = correct_key
  161. `
  162. cfg, err := NewConfigProviderFromData(iniStr)
  163. assert.NoError(t, err)
  164. assert.NoError(t, loadPackagesFrom(cfg))
  165. storage := Packages.Storage
  166. assert.EqualValues(t, "minio", storage.Type)
  167. assert.EqualValues(t, "gitea", storage.MinioConfig.Bucket)
  168. assert.EqualValues(t, "my_packages/", storage.MinioConfig.BasePath)
  169. assert.True(t, storage.MinioConfig.ServeDirect)
  170. }