imguploader_test.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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. cfg := setting.NewCfg()
  11. cfg.Load(&setting.CommandLineArgs{
  12. HomePath: "../../../",
  13. })
  14. setting.ImageUploadProvider = "s3"
  15. Convey("with bucket url https://foo.bar.baz.s3-us-east-2.amazonaws.com", func() {
  16. s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
  17. So(err, ShouldBeNil)
  18. s3sec.NewKey("bucket_url", "https://foo.bar.baz.s3-us-east-2.amazonaws.com")
  19. s3sec.NewKey("access_key", "access_key")
  20. s3sec.NewKey("secret_key", "secret_key")
  21. uploader, err := NewImageUploader()
  22. So(err, ShouldBeNil)
  23. original, ok := uploader.(*S3Uploader)
  24. So(ok, ShouldBeTrue)
  25. So(original.region, ShouldEqual, "us-east-2")
  26. So(original.bucket, ShouldEqual, "foo.bar.baz")
  27. So(original.accessKey, ShouldEqual, "access_key")
  28. So(original.secretKey, ShouldEqual, "secret_key")
  29. })
  30. Convey("with bucket url https://s3.amazonaws.com/mybucket", func() {
  31. s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
  32. So(err, ShouldBeNil)
  33. s3sec.NewKey("bucket_url", "https://s3.amazonaws.com/my.bucket.com")
  34. s3sec.NewKey("access_key", "access_key")
  35. s3sec.NewKey("secret_key", "secret_key")
  36. uploader, err := NewImageUploader()
  37. So(err, ShouldBeNil)
  38. original, ok := uploader.(*S3Uploader)
  39. So(ok, ShouldBeTrue)
  40. So(original.region, ShouldEqual, "us-east-1")
  41. So(original.bucket, ShouldEqual, "my.bucket.com")
  42. So(original.accessKey, ShouldEqual, "access_key")
  43. So(original.secretKey, ShouldEqual, "secret_key")
  44. })
  45. Convey("with bucket url https://s3-us-west-2.amazonaws.com/mybucket", func() {
  46. s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
  47. So(err, ShouldBeNil)
  48. s3sec.NewKey("bucket_url", "https://s3-us-west-2.amazonaws.com/my.bucket.com")
  49. s3sec.NewKey("access_key", "access_key")
  50. s3sec.NewKey("secret_key", "secret_key")
  51. uploader, err := NewImageUploader()
  52. So(err, ShouldBeNil)
  53. original, ok := uploader.(*S3Uploader)
  54. So(ok, ShouldBeTrue)
  55. So(original.region, ShouldEqual, "us-west-2")
  56. So(original.bucket, ShouldEqual, "my.bucket.com")
  57. So(original.accessKey, ShouldEqual, "access_key")
  58. So(original.secretKey, ShouldEqual, "secret_key")
  59. })
  60. })
  61. Convey("Webdav uploader", func() {
  62. var err error
  63. cfg := setting.NewCfg()
  64. cfg.Load(&setting.CommandLineArgs{
  65. HomePath: "../../../",
  66. })
  67. setting.ImageUploadProvider = "webdav"
  68. webdavSec, err := cfg.Raw.GetSection("external_image_storage.webdav")
  69. So(err, ShouldBeNil)
  70. webdavSec.NewKey("url", "webdavUrl")
  71. webdavSec.NewKey("username", "username")
  72. webdavSec.NewKey("password", "password")
  73. uploader, err := NewImageUploader()
  74. So(err, ShouldBeNil)
  75. original, ok := uploader.(*WebdavUploader)
  76. So(ok, ShouldBeTrue)
  77. So(original.url, ShouldEqual, "webdavUrl")
  78. So(original.username, ShouldEqual, "username")
  79. So(original.password, ShouldEqual, "password")
  80. })
  81. Convey("GCS uploader", func() {
  82. var err error
  83. cfg := setting.NewCfg()
  84. cfg.Load(&setting.CommandLineArgs{
  85. HomePath: "../../../",
  86. })
  87. setting.ImageUploadProvider = "gcs"
  88. gcpSec, err := cfg.Raw.GetSection("external_image_storage.gcs")
  89. So(err, ShouldBeNil)
  90. gcpSec.NewKey("key_file", "/etc/secrets/project-79a52befa3f6.json")
  91. gcpSec.NewKey("bucket", "project-grafana-east")
  92. uploader, err := NewImageUploader()
  93. So(err, ShouldBeNil)
  94. original, ok := uploader.(*GCSUploader)
  95. So(ok, ShouldBeTrue)
  96. So(original.keyFile, ShouldEqual, "/etc/secrets/project-79a52befa3f6.json")
  97. So(original.bucket, ShouldEqual, "project-grafana-east")
  98. })
  99. Convey("AzureBlobUploader config", func() {
  100. cfg := setting.NewCfg()
  101. cfg.Load(&setting.CommandLineArgs{
  102. HomePath: "../../../",
  103. })
  104. setting.ImageUploadProvider = "azure_blob"
  105. Convey("with container name", func() {
  106. azureBlobSec, err := cfg.Raw.GetSection("external_image_storage.azure_blob")
  107. So(err, ShouldBeNil)
  108. azureBlobSec.NewKey("account_name", "account_name")
  109. azureBlobSec.NewKey("account_key", "account_key")
  110. azureBlobSec.NewKey("container_name", "container_name")
  111. uploader, err := NewImageUploader()
  112. So(err, ShouldBeNil)
  113. original, ok := uploader.(*AzureBlobUploader)
  114. So(ok, ShouldBeTrue)
  115. So(original.account_name, ShouldEqual, "account_name")
  116. So(original.account_key, ShouldEqual, "account_key")
  117. So(original.container_name, ShouldEqual, "container_name")
  118. })
  119. })
  120. Convey("Local uploader", func() {
  121. var err error
  122. cfg := setting.NewCfg()
  123. cfg.Load(&setting.CommandLineArgs{
  124. HomePath: "../../../",
  125. })
  126. setting.ImageUploadProvider = "local"
  127. uploader, err := NewImageUploader()
  128. So(err, ShouldBeNil)
  129. original, ok := uploader.(*LocalUploader)
  130. So(ok, ShouldBeTrue)
  131. So(original, ShouldNotBeNil)
  132. })
  133. })
  134. }