gitea源码

storage_test.go 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. // Copyright 2020 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. )
  9. func Test_getStorageMultipleName(t *testing.T) {
  10. iniStr := `
  11. [lfs]
  12. MINIO_BUCKET = gitea-lfs
  13. [attachment]
  14. MINIO_BUCKET = gitea-attachment
  15. [storage]
  16. STORAGE_TYPE = minio
  17. MINIO_BUCKET = gitea-storage
  18. `
  19. cfg, err := NewConfigProviderFromData(iniStr)
  20. assert.NoError(t, err)
  21. assert.NoError(t, loadAttachmentFrom(cfg))
  22. assert.Equal(t, "gitea-attachment", Attachment.Storage.MinioConfig.Bucket)
  23. assert.Equal(t, "attachments/", Attachment.Storage.MinioConfig.BasePath)
  24. assert.NoError(t, loadLFSFrom(cfg))
  25. assert.Equal(t, "gitea-lfs", LFS.Storage.MinioConfig.Bucket)
  26. assert.Equal(t, "lfs/", LFS.Storage.MinioConfig.BasePath)
  27. assert.NoError(t, loadAvatarsFrom(cfg))
  28. assert.Equal(t, "gitea-storage", Avatar.Storage.MinioConfig.Bucket)
  29. assert.Equal(t, "avatars/", Avatar.Storage.MinioConfig.BasePath)
  30. }
  31. func Test_getStorageUseOtherNameAsType(t *testing.T) {
  32. iniStr := `
  33. [attachment]
  34. STORAGE_TYPE = lfs
  35. [storage.lfs]
  36. STORAGE_TYPE = minio
  37. MINIO_BUCKET = gitea-storage
  38. `
  39. cfg, err := NewConfigProviderFromData(iniStr)
  40. assert.NoError(t, err)
  41. assert.NoError(t, loadAttachmentFrom(cfg))
  42. assert.Equal(t, "gitea-storage", Attachment.Storage.MinioConfig.Bucket)
  43. assert.Equal(t, "attachments/", Attachment.Storage.MinioConfig.BasePath)
  44. assert.NoError(t, loadLFSFrom(cfg))
  45. assert.Equal(t, "gitea-storage", LFS.Storage.MinioConfig.Bucket)
  46. assert.Equal(t, "lfs/", LFS.Storage.MinioConfig.BasePath)
  47. }
  48. func Test_getStorageInheritStorageType(t *testing.T) {
  49. iniStr := `
  50. [storage]
  51. STORAGE_TYPE = minio
  52. `
  53. cfg, err := NewConfigProviderFromData(iniStr)
  54. assert.NoError(t, err)
  55. assert.NoError(t, loadPackagesFrom(cfg))
  56. assert.EqualValues(t, "minio", Packages.Storage.Type)
  57. assert.Equal(t, "gitea", Packages.Storage.MinioConfig.Bucket)
  58. assert.Equal(t, "packages/", Packages.Storage.MinioConfig.BasePath)
  59. assert.NoError(t, loadRepoArchiveFrom(cfg))
  60. assert.EqualValues(t, "minio", RepoArchive.Storage.Type)
  61. assert.Equal(t, "gitea", RepoArchive.Storage.MinioConfig.Bucket)
  62. assert.Equal(t, "repo-archive/", RepoArchive.Storage.MinioConfig.BasePath)
  63. assert.NoError(t, loadActionsFrom(cfg))
  64. assert.EqualValues(t, "minio", Actions.LogStorage.Type)
  65. assert.Equal(t, "gitea", Actions.LogStorage.MinioConfig.Bucket)
  66. assert.Equal(t, "actions_log/", Actions.LogStorage.MinioConfig.BasePath)
  67. assert.EqualValues(t, "minio", Actions.ArtifactStorage.Type)
  68. assert.Equal(t, "gitea", Actions.ArtifactStorage.MinioConfig.Bucket)
  69. assert.Equal(t, "actions_artifacts/", Actions.ArtifactStorage.MinioConfig.BasePath)
  70. assert.NoError(t, loadAvatarsFrom(cfg))
  71. assert.EqualValues(t, "minio", Avatar.Storage.Type)
  72. assert.Equal(t, "gitea", Avatar.Storage.MinioConfig.Bucket)
  73. assert.Equal(t, "avatars/", Avatar.Storage.MinioConfig.BasePath)
  74. assert.NoError(t, loadRepoAvatarFrom(cfg))
  75. assert.EqualValues(t, "minio", RepoAvatar.Storage.Type)
  76. assert.Equal(t, "gitea", RepoAvatar.Storage.MinioConfig.Bucket)
  77. assert.Equal(t, "repo-avatars/", RepoAvatar.Storage.MinioConfig.BasePath)
  78. }
  79. func Test_getStorageInheritStorageTypeAzureBlob(t *testing.T) {
  80. iniStr := `
  81. [storage]
  82. STORAGE_TYPE = azureblob
  83. `
  84. cfg, err := NewConfigProviderFromData(iniStr)
  85. assert.NoError(t, err)
  86. assert.NoError(t, loadPackagesFrom(cfg))
  87. assert.EqualValues(t, "azureblob", Packages.Storage.Type)
  88. assert.Equal(t, "gitea", Packages.Storage.AzureBlobConfig.Container)
  89. assert.Equal(t, "packages/", Packages.Storage.AzureBlobConfig.BasePath)
  90. assert.NoError(t, loadRepoArchiveFrom(cfg))
  91. assert.EqualValues(t, "azureblob", RepoArchive.Storage.Type)
  92. assert.Equal(t, "gitea", RepoArchive.Storage.AzureBlobConfig.Container)
  93. assert.Equal(t, "repo-archive/", RepoArchive.Storage.AzureBlobConfig.BasePath)
  94. assert.NoError(t, loadActionsFrom(cfg))
  95. assert.EqualValues(t, "azureblob", Actions.LogStorage.Type)
  96. assert.Equal(t, "gitea", Actions.LogStorage.AzureBlobConfig.Container)
  97. assert.Equal(t, "actions_log/", Actions.LogStorage.AzureBlobConfig.BasePath)
  98. assert.EqualValues(t, "azureblob", Actions.ArtifactStorage.Type)
  99. assert.Equal(t, "gitea", Actions.ArtifactStorage.AzureBlobConfig.Container)
  100. assert.Equal(t, "actions_artifacts/", Actions.ArtifactStorage.AzureBlobConfig.BasePath)
  101. assert.NoError(t, loadAvatarsFrom(cfg))
  102. assert.EqualValues(t, "azureblob", Avatar.Storage.Type)
  103. assert.Equal(t, "gitea", Avatar.Storage.AzureBlobConfig.Container)
  104. assert.Equal(t, "avatars/", Avatar.Storage.AzureBlobConfig.BasePath)
  105. assert.NoError(t, loadRepoAvatarFrom(cfg))
  106. assert.EqualValues(t, "azureblob", RepoAvatar.Storage.Type)
  107. assert.Equal(t, "gitea", RepoAvatar.Storage.AzureBlobConfig.Container)
  108. assert.Equal(t, "repo-avatars/", RepoAvatar.Storage.AzureBlobConfig.BasePath)
  109. }
  110. type testLocalStoragePathCase struct {
  111. loader func(rootCfg ConfigProvider) error
  112. storagePtr **Storage
  113. expectedPath string
  114. }
  115. func testLocalStoragePath(t *testing.T, appDataPath, iniStr string, cases []testLocalStoragePathCase) {
  116. cfg, err := NewConfigProviderFromData(iniStr)
  117. assert.NoError(t, err)
  118. AppDataPath = appDataPath
  119. for _, c := range cases {
  120. assert.NoError(t, c.loader(cfg))
  121. storage := *c.storagePtr
  122. assert.EqualValues(t, "local", storage.Type)
  123. assert.True(t, filepath.IsAbs(storage.Path))
  124. assert.Equal(t, filepath.Clean(c.expectedPath), filepath.Clean(storage.Path))
  125. }
  126. }
  127. func Test_getStorageInheritStorageTypeLocal(t *testing.T) {
  128. testLocalStoragePath(t, "/appdata", `
  129. [storage]
  130. STORAGE_TYPE = local
  131. `, []testLocalStoragePathCase{
  132. {loadAttachmentFrom, &Attachment.Storage, "/appdata/attachments"},
  133. {loadLFSFrom, &LFS.Storage, "/appdata/lfs"},
  134. {loadActionsFrom, &Actions.ArtifactStorage, "/appdata/actions_artifacts"},
  135. {loadPackagesFrom, &Packages.Storage, "/appdata/packages"},
  136. {loadRepoArchiveFrom, &RepoArchive.Storage, "/appdata/repo-archive"},
  137. {loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"},
  138. {loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"},
  139. {loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"},
  140. })
  141. }
  142. func Test_getStorageInheritStorageTypeLocalPath(t *testing.T) {
  143. testLocalStoragePath(t, "/appdata", `
  144. [storage]
  145. STORAGE_TYPE = local
  146. PATH = /data/gitea
  147. `, []testLocalStoragePathCase{
  148. {loadAttachmentFrom, &Attachment.Storage, "/data/gitea/attachments"},
  149. {loadLFSFrom, &LFS.Storage, "/data/gitea/lfs"},
  150. {loadActionsFrom, &Actions.ArtifactStorage, "/data/gitea/actions_artifacts"},
  151. {loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"},
  152. {loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/repo-archive"},
  153. {loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"},
  154. {loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"},
  155. {loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"},
  156. })
  157. }
  158. func Test_getStorageInheritStorageTypeLocalRelativePath(t *testing.T) {
  159. testLocalStoragePath(t, "/appdata", `
  160. [storage]
  161. STORAGE_TYPE = local
  162. PATH = storages
  163. `, []testLocalStoragePathCase{
  164. {loadAttachmentFrom, &Attachment.Storage, "/appdata/storages/attachments"},
  165. {loadLFSFrom, &LFS.Storage, "/appdata/storages/lfs"},
  166. {loadActionsFrom, &Actions.ArtifactStorage, "/appdata/storages/actions_artifacts"},
  167. {loadPackagesFrom, &Packages.Storage, "/appdata/storages/packages"},
  168. {loadRepoArchiveFrom, &RepoArchive.Storage, "/appdata/storages/repo-archive"},
  169. {loadActionsFrom, &Actions.LogStorage, "/appdata/storages/actions_log"},
  170. {loadAvatarsFrom, &Avatar.Storage, "/appdata/storages/avatars"},
  171. {loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/storages/repo-avatars"},
  172. })
  173. }
  174. func Test_getStorageInheritStorageTypeLocalPathOverride(t *testing.T) {
  175. testLocalStoragePath(t, "/appdata", `
  176. [storage]
  177. STORAGE_TYPE = local
  178. PATH = /data/gitea
  179. [repo-archive]
  180. PATH = /data/gitea/the-archives-dir
  181. `, []testLocalStoragePathCase{
  182. {loadAttachmentFrom, &Attachment.Storage, "/data/gitea/attachments"},
  183. {loadLFSFrom, &LFS.Storage, "/data/gitea/lfs"},
  184. {loadActionsFrom, &Actions.ArtifactStorage, "/data/gitea/actions_artifacts"},
  185. {loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"},
  186. {loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/the-archives-dir"},
  187. {loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"},
  188. {loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"},
  189. {loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"},
  190. })
  191. }
  192. func Test_getStorageInheritStorageTypeLocalPathOverrideEmpty(t *testing.T) {
  193. testLocalStoragePath(t, "/appdata", `
  194. [storage]
  195. STORAGE_TYPE = local
  196. PATH = /data/gitea
  197. [repo-archive]
  198. `, []testLocalStoragePathCase{
  199. {loadAttachmentFrom, &Attachment.Storage, "/data/gitea/attachments"},
  200. {loadLFSFrom, &LFS.Storage, "/data/gitea/lfs"},
  201. {loadActionsFrom, &Actions.ArtifactStorage, "/data/gitea/actions_artifacts"},
  202. {loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"},
  203. {loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/repo-archive"},
  204. {loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"},
  205. {loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"},
  206. {loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"},
  207. })
  208. }
  209. func Test_getStorageInheritStorageTypeLocalRelativePathOverride(t *testing.T) {
  210. testLocalStoragePath(t, "/appdata", `
  211. [storage]
  212. STORAGE_TYPE = local
  213. PATH = /data/gitea
  214. [repo-archive]
  215. PATH = the-archives-dir
  216. `, []testLocalStoragePathCase{
  217. {loadAttachmentFrom, &Attachment.Storage, "/data/gitea/attachments"},
  218. {loadLFSFrom, &LFS.Storage, "/data/gitea/lfs"},
  219. {loadActionsFrom, &Actions.ArtifactStorage, "/data/gitea/actions_artifacts"},
  220. {loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"},
  221. {loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/the-archives-dir"},
  222. {loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"},
  223. {loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"},
  224. {loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"},
  225. })
  226. }
  227. func Test_getStorageInheritStorageTypeLocalPathOverride3(t *testing.T) {
  228. testLocalStoragePath(t, "/appdata", `
  229. [storage.repo-archive]
  230. STORAGE_TYPE = local
  231. PATH = /data/gitea/archives
  232. `, []testLocalStoragePathCase{
  233. {loadAttachmentFrom, &Attachment.Storage, "/appdata/attachments"},
  234. {loadLFSFrom, &LFS.Storage, "/appdata/lfs"},
  235. {loadActionsFrom, &Actions.ArtifactStorage, "/appdata/actions_artifacts"},
  236. {loadPackagesFrom, &Packages.Storage, "/appdata/packages"},
  237. {loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/archives"},
  238. {loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"},
  239. {loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"},
  240. {loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"},
  241. })
  242. }
  243. func Test_getStorageInheritStorageTypeLocalPathOverride3_5(t *testing.T) {
  244. testLocalStoragePath(t, "/appdata", `
  245. [storage.repo-archive]
  246. STORAGE_TYPE = local
  247. PATH = a-relative-path
  248. `, []testLocalStoragePathCase{
  249. {loadAttachmentFrom, &Attachment.Storage, "/appdata/attachments"},
  250. {loadLFSFrom, &LFS.Storage, "/appdata/lfs"},
  251. {loadActionsFrom, &Actions.ArtifactStorage, "/appdata/actions_artifacts"},
  252. {loadPackagesFrom, &Packages.Storage, "/appdata/packages"},
  253. {loadRepoArchiveFrom, &RepoArchive.Storage, "/appdata/a-relative-path"},
  254. {loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"},
  255. {loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"},
  256. {loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"},
  257. })
  258. }
  259. func Test_getStorageInheritStorageTypeLocalPathOverride4(t *testing.T) {
  260. testLocalStoragePath(t, "/appdata", `
  261. [storage.repo-archive]
  262. STORAGE_TYPE = local
  263. PATH = /data/gitea/archives
  264. [repo-archive]
  265. PATH = /tmp/gitea/archives
  266. `, []testLocalStoragePathCase{
  267. {loadAttachmentFrom, &Attachment.Storage, "/appdata/attachments"},
  268. {loadLFSFrom, &LFS.Storage, "/appdata/lfs"},
  269. {loadActionsFrom, &Actions.ArtifactStorage, "/appdata/actions_artifacts"},
  270. {loadPackagesFrom, &Packages.Storage, "/appdata/packages"},
  271. {loadRepoArchiveFrom, &RepoArchive.Storage, "/tmp/gitea/archives"},
  272. {loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"},
  273. {loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"},
  274. {loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"},
  275. })
  276. }
  277. func Test_getStorageInheritStorageTypeLocalPathOverride5(t *testing.T) {
  278. testLocalStoragePath(t, "/appdata", `
  279. [storage.repo-archive]
  280. STORAGE_TYPE = local
  281. PATH = /data/gitea/archives
  282. [repo-archive]
  283. `, []testLocalStoragePathCase{
  284. {loadAttachmentFrom, &Attachment.Storage, "/appdata/attachments"},
  285. {loadLFSFrom, &LFS.Storage, "/appdata/lfs"},
  286. {loadActionsFrom, &Actions.ArtifactStorage, "/appdata/actions_artifacts"},
  287. {loadPackagesFrom, &Packages.Storage, "/appdata/packages"},
  288. {loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/archives"},
  289. {loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"},
  290. {loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"},
  291. {loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"},
  292. })
  293. }
  294. func Test_getStorageInheritStorageTypeLocalPathOverride72(t *testing.T) {
  295. testLocalStoragePath(t, "/appdata", `
  296. [repo-archive]
  297. STORAGE_TYPE = local
  298. PATH = archives
  299. `, []testLocalStoragePathCase{
  300. {loadRepoArchiveFrom, &RepoArchive.Storage, "/appdata/archives"},
  301. })
  302. }
  303. func Test_getStorageConfiguration20(t *testing.T) {
  304. cfg, err := NewConfigProviderFromData(`
  305. [repo-archive]
  306. STORAGE_TYPE = my_storage
  307. PATH = archives
  308. `)
  309. assert.NoError(t, err)
  310. assert.Error(t, loadRepoArchiveFrom(cfg))
  311. }
  312. func Test_getStorageConfiguration21(t *testing.T) {
  313. testLocalStoragePath(t, "/appdata", `
  314. [storage.repo-archive]
  315. `, []testLocalStoragePathCase{
  316. {loadRepoArchiveFrom, &RepoArchive.Storage, "/appdata/repo-archive"},
  317. })
  318. }
  319. func Test_getStorageConfiguration22(t *testing.T) {
  320. testLocalStoragePath(t, "/appdata", `
  321. [storage.repo-archive]
  322. PATH = archives
  323. `, []testLocalStoragePathCase{
  324. {loadRepoArchiveFrom, &RepoArchive.Storage, "/appdata/archives"},
  325. })
  326. }
  327. func Test_getStorageConfiguration23(t *testing.T) {
  328. cfg, err := NewConfigProviderFromData(`
  329. [repo-archive]
  330. STORAGE_TYPE = minio
  331. MINIO_ACCESS_KEY_ID = my_access_key
  332. MINIO_SECRET_ACCESS_KEY = my_secret_key
  333. `)
  334. assert.NoError(t, err)
  335. _, err = getStorage(cfg, "", "", nil)
  336. assert.Error(t, err)
  337. assert.NoError(t, loadRepoArchiveFrom(cfg))
  338. cp := RepoArchive.Storage.ToShadowCopy()
  339. assert.Equal(t, "******", cp.MinioConfig.AccessKeyID)
  340. assert.Equal(t, "******", cp.MinioConfig.SecretAccessKey)
  341. }
  342. func Test_getStorageConfiguration24(t *testing.T) {
  343. cfg, err := NewConfigProviderFromData(`
  344. [repo-archive]
  345. STORAGE_TYPE = my_archive
  346. [storage.my_archive]
  347. ; unsupported, storage type should be defined explicitly
  348. PATH = archives
  349. `)
  350. assert.NoError(t, err)
  351. assert.Error(t, loadRepoArchiveFrom(cfg))
  352. }
  353. func Test_getStorageConfiguration25(t *testing.T) {
  354. cfg, err := NewConfigProviderFromData(`
  355. [repo-archive]
  356. STORAGE_TYPE = my_archive
  357. [storage.my_archive]
  358. ; unsupported, storage type should be known type
  359. STORAGE_TYPE = unknown // should be local or minio
  360. PATH = archives
  361. `)
  362. assert.NoError(t, err)
  363. assert.Error(t, loadRepoArchiveFrom(cfg))
  364. }
  365. func Test_getStorageConfiguration26(t *testing.T) {
  366. cfg, err := NewConfigProviderFromData(`
  367. [repo-archive]
  368. STORAGE_TYPE = minio
  369. MINIO_ACCESS_KEY_ID = my_access_key
  370. MINIO_SECRET_ACCESS_KEY = my_secret_key
  371. ; wrong configuration
  372. MINIO_USE_SSL = abc
  373. `)
  374. assert.NoError(t, err)
  375. // assert.Error(t, loadRepoArchiveFrom(cfg))
  376. // FIXME: this should return error but now ini package's MapTo() doesn't check type
  377. assert.NoError(t, loadRepoArchiveFrom(cfg))
  378. }
  379. func Test_getStorageConfiguration27(t *testing.T) {
  380. cfg, err := NewConfigProviderFromData(`
  381. [storage.repo-archive]
  382. STORAGE_TYPE = minio
  383. MINIO_ACCESS_KEY_ID = my_access_key
  384. MINIO_SECRET_ACCESS_KEY = my_secret_key
  385. MINIO_USE_SSL = true
  386. `)
  387. assert.NoError(t, err)
  388. assert.NoError(t, loadRepoArchiveFrom(cfg))
  389. assert.Equal(t, "my_access_key", RepoArchive.Storage.MinioConfig.AccessKeyID)
  390. assert.Equal(t, "my_secret_key", RepoArchive.Storage.MinioConfig.SecretAccessKey)
  391. assert.True(t, RepoArchive.Storage.MinioConfig.UseSSL)
  392. assert.Equal(t, "repo-archive/", RepoArchive.Storage.MinioConfig.BasePath)
  393. }
  394. func Test_getStorageConfiguration28(t *testing.T) {
  395. cfg, err := NewConfigProviderFromData(`
  396. [storage]
  397. STORAGE_TYPE = minio
  398. MINIO_ACCESS_KEY_ID = my_access_key
  399. MINIO_SECRET_ACCESS_KEY = my_secret_key
  400. MINIO_USE_SSL = true
  401. MINIO_BASE_PATH = /prefix
  402. `)
  403. assert.NoError(t, err)
  404. assert.NoError(t, loadRepoArchiveFrom(cfg))
  405. assert.Equal(t, "my_access_key", RepoArchive.Storage.MinioConfig.AccessKeyID)
  406. assert.Equal(t, "my_secret_key", RepoArchive.Storage.MinioConfig.SecretAccessKey)
  407. assert.True(t, RepoArchive.Storage.MinioConfig.UseSSL)
  408. assert.Equal(t, "/prefix/repo-archive/", RepoArchive.Storage.MinioConfig.BasePath)
  409. cfg, err = NewConfigProviderFromData(`
  410. [storage]
  411. STORAGE_TYPE = minio
  412. MINIO_IAM_ENDPOINT = 127.0.0.1
  413. MINIO_USE_SSL = true
  414. MINIO_BASE_PATH = /prefix
  415. `)
  416. assert.NoError(t, err)
  417. assert.NoError(t, loadRepoArchiveFrom(cfg))
  418. assert.Equal(t, "127.0.0.1", RepoArchive.Storage.MinioConfig.IamEndpoint)
  419. assert.True(t, RepoArchive.Storage.MinioConfig.UseSSL)
  420. assert.Equal(t, "/prefix/repo-archive/", RepoArchive.Storage.MinioConfig.BasePath)
  421. cfg, err = NewConfigProviderFromData(`
  422. [storage]
  423. STORAGE_TYPE = minio
  424. MINIO_ACCESS_KEY_ID = my_access_key
  425. MINIO_SECRET_ACCESS_KEY = my_secret_key
  426. MINIO_USE_SSL = true
  427. MINIO_BASE_PATH = /prefix
  428. [lfs]
  429. MINIO_BASE_PATH = /lfs
  430. `)
  431. assert.NoError(t, err)
  432. assert.NoError(t, loadLFSFrom(cfg))
  433. assert.Equal(t, "my_access_key", LFS.Storage.MinioConfig.AccessKeyID)
  434. assert.Equal(t, "my_secret_key", LFS.Storage.MinioConfig.SecretAccessKey)
  435. assert.True(t, LFS.Storage.MinioConfig.UseSSL)
  436. assert.Equal(t, "/lfs", LFS.Storage.MinioConfig.BasePath)
  437. cfg, err = NewConfigProviderFromData(`
  438. [storage]
  439. STORAGE_TYPE = minio
  440. MINIO_ACCESS_KEY_ID = my_access_key
  441. MINIO_SECRET_ACCESS_KEY = my_secret_key
  442. MINIO_USE_SSL = true
  443. MINIO_BASE_PATH = /prefix
  444. [storage.lfs]
  445. MINIO_BASE_PATH = /lfs
  446. `)
  447. assert.NoError(t, err)
  448. assert.NoError(t, loadLFSFrom(cfg))
  449. assert.Equal(t, "my_access_key", LFS.Storage.MinioConfig.AccessKeyID)
  450. assert.Equal(t, "my_secret_key", LFS.Storage.MinioConfig.SecretAccessKey)
  451. assert.True(t, LFS.Storage.MinioConfig.UseSSL)
  452. assert.Equal(t, "/lfs", LFS.Storage.MinioConfig.BasePath)
  453. }
  454. func Test_getStorageConfiguration29(t *testing.T) {
  455. cfg, err := NewConfigProviderFromData(`
  456. [repo-archive]
  457. STORAGE_TYPE = azureblob
  458. AZURE_BLOB_ACCOUNT_NAME = my_account_name
  459. AZURE_BLOB_ACCOUNT_KEY = my_account_key
  460. `)
  461. assert.NoError(t, err)
  462. // assert.Error(t, loadRepoArchiveFrom(cfg))
  463. // FIXME: this should return error but now ini package's MapTo() doesn't check type
  464. assert.NoError(t, loadRepoArchiveFrom(cfg))
  465. }
  466. func Test_getStorageConfiguration30(t *testing.T) {
  467. cfg, err := NewConfigProviderFromData(`
  468. [storage.repo-archive]
  469. STORAGE_TYPE = azureblob
  470. AZURE_BLOB_ACCOUNT_NAME = my_account_name
  471. AZURE_BLOB_ACCOUNT_KEY = my_account_key
  472. `)
  473. assert.NoError(t, err)
  474. assert.NoError(t, loadRepoArchiveFrom(cfg))
  475. assert.Equal(t, "my_account_name", RepoArchive.Storage.AzureBlobConfig.AccountName)
  476. assert.Equal(t, "my_account_key", RepoArchive.Storage.AzureBlobConfig.AccountKey)
  477. assert.Equal(t, "repo-archive/", RepoArchive.Storage.AzureBlobConfig.BasePath)
  478. }
  479. func Test_getStorageConfiguration31(t *testing.T) {
  480. cfg, err := NewConfigProviderFromData(`
  481. [storage]
  482. STORAGE_TYPE = azureblob
  483. AZURE_BLOB_ACCOUNT_NAME = my_account_name
  484. AZURE_BLOB_ACCOUNT_KEY = my_account_key
  485. AZURE_BLOB_BASE_PATH = /prefix
  486. `)
  487. assert.NoError(t, err)
  488. assert.NoError(t, loadRepoArchiveFrom(cfg))
  489. assert.Equal(t, "my_account_name", RepoArchive.Storage.AzureBlobConfig.AccountName)
  490. assert.Equal(t, "my_account_key", RepoArchive.Storage.AzureBlobConfig.AccountKey)
  491. assert.Equal(t, "/prefix/repo-archive/", RepoArchive.Storage.AzureBlobConfig.BasePath)
  492. cfg, err = NewConfigProviderFromData(`
  493. [storage]
  494. STORAGE_TYPE = azureblob
  495. AZURE_BLOB_ACCOUNT_NAME = my_account_name
  496. AZURE_BLOB_ACCOUNT_KEY = my_account_key
  497. AZURE_BLOB_BASE_PATH = /prefix
  498. [lfs]
  499. AZURE_BLOB_BASE_PATH = /lfs
  500. `)
  501. assert.NoError(t, err)
  502. assert.NoError(t, loadLFSFrom(cfg))
  503. assert.Equal(t, "my_account_name", LFS.Storage.AzureBlobConfig.AccountName)
  504. assert.Equal(t, "my_account_key", LFS.Storage.AzureBlobConfig.AccountKey)
  505. assert.Equal(t, "/lfs", LFS.Storage.AzureBlobConfig.BasePath)
  506. cfg, err = NewConfigProviderFromData(`
  507. [storage]
  508. STORAGE_TYPE = azureblob
  509. AZURE_BLOB_ACCOUNT_NAME = my_account_name
  510. AZURE_BLOB_ACCOUNT_KEY = my_account_key
  511. AZURE_BLOB_BASE_PATH = /prefix
  512. [storage.lfs]
  513. AZURE_BLOB_BASE_PATH = /lfs
  514. `)
  515. assert.NoError(t, err)
  516. assert.NoError(t, loadLFSFrom(cfg))
  517. assert.Equal(t, "my_account_name", LFS.Storage.AzureBlobConfig.AccountName)
  518. assert.Equal(t, "my_account_key", LFS.Storage.AzureBlobConfig.AccountKey)
  519. assert.Equal(t, "/lfs", LFS.Storage.AzureBlobConfig.BasePath)
  520. }