imguploader_test.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package imguploader
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/setting"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. func TestImageUploaderFactory(t *testing.T) {
  8. Convey("Can create image uploader for ", t, func() {
  9. Convey("S3ImageUploader config", func() {
  10. setting.NewConfigContext(&setting.CommandLineArgs{
  11. HomePath: "../../../",
  12. })
  13. setting.ImageUploadProvider = "s3"
  14. Convey("with bucket url https://foo.bar.baz.s3-us-east-2.amazonaws.com", func() {
  15. s3sec, err := setting.Cfg.GetSection("external_image_storage.s3")
  16. s3sec.NewKey("bucket_url", "https://foo.bar.baz.s3-us-east-2.amazonaws.com")
  17. s3sec.NewKey("access_key", "access_key")
  18. s3sec.NewKey("secret_key", "secret_key")
  19. uploader, err := NewImageUploader()
  20. So(err, ShouldBeNil)
  21. original, ok := uploader.(*S3Uploader)
  22. So(ok, ShouldBeTrue)
  23. So(original.region, ShouldEqual, "us-east-2")
  24. So(original.bucket, ShouldEqual, "foo.bar.baz")
  25. So(original.accessKey, ShouldEqual, "access_key")
  26. So(original.secretKey, ShouldEqual, "secret_key")
  27. })
  28. Convey("with bucket url https://s3.amazonaws.com/mybucket", func() {
  29. s3sec, err := setting.Cfg.GetSection("external_image_storage.s3")
  30. s3sec.NewKey("bucket_url", "https://s3.amazonaws.com/my.bucket.com")
  31. s3sec.NewKey("access_key", "access_key")
  32. s3sec.NewKey("secret_key", "secret_key")
  33. uploader, err := NewImageUploader()
  34. So(err, ShouldBeNil)
  35. original, ok := uploader.(*S3Uploader)
  36. So(ok, ShouldBeTrue)
  37. So(original.region, ShouldEqual, "us-east-1")
  38. So(original.bucket, ShouldEqual, "my.bucket.com")
  39. So(original.accessKey, ShouldEqual, "access_key")
  40. So(original.secretKey, ShouldEqual, "secret_key")
  41. })
  42. Convey("with bucket url https://s3-us-west-2.amazonaws.com/mybucket", func() {
  43. s3sec, err := setting.Cfg.GetSection("external_image_storage.s3")
  44. s3sec.NewKey("bucket_url", "https://s3-us-west-2.amazonaws.com/my.bucket.com")
  45. s3sec.NewKey("access_key", "access_key")
  46. s3sec.NewKey("secret_key", "secret_key")
  47. uploader, err := NewImageUploader()
  48. So(err, ShouldBeNil)
  49. original, ok := uploader.(*S3Uploader)
  50. So(ok, ShouldBeTrue)
  51. So(original.region, ShouldEqual, "us-west-2")
  52. So(original.bucket, ShouldEqual, "my.bucket.com")
  53. So(original.accessKey, ShouldEqual, "access_key")
  54. So(original.secretKey, ShouldEqual, "secret_key")
  55. })
  56. })
  57. Convey("Webdav uploader", func() {
  58. var err error
  59. setting.NewConfigContext(&setting.CommandLineArgs{
  60. HomePath: "../../../",
  61. })
  62. setting.ImageUploadProvider = "webdav"
  63. webdavSec, err := setting.Cfg.GetSection("external_image_storage.webdav")
  64. webdavSec.NewKey("url", "webdavUrl")
  65. webdavSec.NewKey("username", "username")
  66. webdavSec.NewKey("password", "password")
  67. uploader, err := NewImageUploader()
  68. So(err, ShouldBeNil)
  69. original, ok := uploader.(*WebdavUploader)
  70. So(ok, ShouldBeTrue)
  71. So(original.url, ShouldEqual, "webdavUrl")
  72. So(original.username, ShouldEqual, "username")
  73. So(original.password, ShouldEqual, "password")
  74. })
  75. Convey("GCS uploader", func() {
  76. var err error
  77. setting.NewConfigContext(&setting.CommandLineArgs{
  78. HomePath: "../../../",
  79. })
  80. setting.ImageUploadProvider = "gcs"
  81. gcpSec, err := setting.Cfg.GetSection("external_image_storage.gcs")
  82. gcpSec.NewKey("key_file", "/etc/secrets/project-79a52befa3f6.json")
  83. gcpSec.NewKey("bucket", "project-grafana-east")
  84. uploader, err := NewImageUploader()
  85. So(err, ShouldBeNil)
  86. original, ok := uploader.(*GCSUploader)
  87. So(ok, ShouldBeTrue)
  88. So(original.keyFile, ShouldEqual, "/etc/secrets/project-79a52befa3f6.json")
  89. So(original.bucket, ShouldEqual, "project-grafana-east")
  90. })
  91. Convey("AzureBlobUploader config", func() {
  92. setting.NewConfigContext(&setting.CommandLineArgs{
  93. HomePath: "../../../",
  94. })
  95. setting.ImageUploadProvider = "azure_blob"
  96. Convey("with container name", func() {
  97. azureBlobSec, err := setting.Cfg.GetSection("external_image_storage.azure_blob")
  98. azureBlobSec.NewKey("account_name", "account_name")
  99. azureBlobSec.NewKey("account_key", "account_key")
  100. azureBlobSec.NewKey("container_name", "container_name")
  101. uploader, err := NewImageUploader()
  102. So(err, ShouldBeNil)
  103. original, ok := uploader.(*AzureBlobUploader)
  104. So(ok, ShouldBeTrue)
  105. So(original.account_name, ShouldEqual, "account_name")
  106. So(original.account_key, ShouldEqual, "account_key")
  107. So(original.container_name, ShouldEqual, "container_name")
  108. })
  109. })
  110. })
  111. }