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.

minio_test.go 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package storage
  4. import (
  5. "context"
  6. "net/http"
  7. "os"
  8. "testing"
  9. "code.gitea.io/gitea/modules/setting"
  10. "github.com/minio/minio-go/v7"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func TestMinioStorageIterator(t *testing.T) {
  14. if os.Getenv("CI") == "" {
  15. t.Skip("minioStorage not present outside of CI")
  16. return
  17. }
  18. testStorageIterator(t, setting.MinioStorageType, &setting.Storage{
  19. MinioConfig: setting.MinioStorageConfig{
  20. Endpoint: "127.0.0.1:9000",
  21. AccessKeyID: "123456",
  22. SecretAccessKey: "12345678",
  23. Bucket: "gitea",
  24. Location: "us-east-1",
  25. },
  26. })
  27. }
  28. func TestMinioStoragePath(t *testing.T) {
  29. m := &MinioStorage{basePath: ""}
  30. assert.Equal(t, "", m.buildMinioPath("/"))
  31. assert.Equal(t, "", m.buildMinioPath("."))
  32. assert.Equal(t, "a", m.buildMinioPath("/a"))
  33. assert.Equal(t, "a/b", m.buildMinioPath("/a/b/"))
  34. assert.Equal(t, "", m.buildMinioDirPrefix(""))
  35. assert.Equal(t, "a/", m.buildMinioDirPrefix("/a/"))
  36. m = &MinioStorage{basePath: "/"}
  37. assert.Equal(t, "", m.buildMinioPath("/"))
  38. assert.Equal(t, "", m.buildMinioPath("."))
  39. assert.Equal(t, "a", m.buildMinioPath("/a"))
  40. assert.Equal(t, "a/b", m.buildMinioPath("/a/b/"))
  41. assert.Equal(t, "", m.buildMinioDirPrefix(""))
  42. assert.Equal(t, "a/", m.buildMinioDirPrefix("/a/"))
  43. m = &MinioStorage{basePath: "/base"}
  44. assert.Equal(t, "base", m.buildMinioPath("/"))
  45. assert.Equal(t, "base", m.buildMinioPath("."))
  46. assert.Equal(t, "base/a", m.buildMinioPath("/a"))
  47. assert.Equal(t, "base/a/b", m.buildMinioPath("/a/b/"))
  48. assert.Equal(t, "base/", m.buildMinioDirPrefix(""))
  49. assert.Equal(t, "base/a/", m.buildMinioDirPrefix("/a/"))
  50. m = &MinioStorage{basePath: "/base/"}
  51. assert.Equal(t, "base", m.buildMinioPath("/"))
  52. assert.Equal(t, "base", m.buildMinioPath("."))
  53. assert.Equal(t, "base/a", m.buildMinioPath("/a"))
  54. assert.Equal(t, "base/a/b", m.buildMinioPath("/a/b/"))
  55. assert.Equal(t, "base/", m.buildMinioDirPrefix(""))
  56. assert.Equal(t, "base/a/", m.buildMinioDirPrefix("/a/"))
  57. }
  58. func TestS3StorageBadRequest(t *testing.T) {
  59. if os.Getenv("CI") == "" {
  60. t.Skip("S3Storage not present outside of CI")
  61. return
  62. }
  63. cfg := &setting.Storage{
  64. MinioConfig: setting.MinioStorageConfig{
  65. Endpoint: "minio:9000",
  66. AccessKeyID: "123456",
  67. SecretAccessKey: "12345678",
  68. Bucket: "bucket",
  69. Location: "us-east-1",
  70. },
  71. }
  72. message := "ERROR"
  73. old := getBucketVersioning
  74. defer func() { getBucketVersioning = old }()
  75. getBucketVersioning = func(ctx context.Context, minioClient *minio.Client, bucket string) error {
  76. return minio.ErrorResponse{
  77. StatusCode: http.StatusBadRequest,
  78. Code: "FixtureError",
  79. Message: message,
  80. }
  81. }
  82. _, err := NewStorage(setting.MinioStorageType, cfg)
  83. assert.ErrorContains(t, err, message)
  84. }