2016-08-10 10:27:39 -05:00
|
|
|
package imguploader
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2020-10-26 14:35:12 -05:00
|
|
|
"github.com/grafana/grafana/pkg/components/imguploader/gcs"
|
2016-08-10 10:27:39 -05:00
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
|
|
|
|
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestImageUploaderFactory(t *testing.T) {
|
|
|
|
Convey("Can create image uploader for ", t, func() {
|
2017-03-20 08:10:44 -05:00
|
|
|
Convey("S3ImageUploader config", func() {
|
2018-04-30 09:21:04 -05:00
|
|
|
cfg := setting.NewCfg()
|
2019-10-10 02:06:55 -05:00
|
|
|
err := cfg.Load(&setting.CommandLineArgs{
|
2016-08-10 10:27:39 -05:00
|
|
|
HomePath: "../../../",
|
|
|
|
})
|
2019-10-10 02:06:55 -05:00
|
|
|
So(err, ShouldBeNil)
|
2016-08-10 10:27:39 -05:00
|
|
|
|
|
|
|
setting.ImageUploadProvider = "s3"
|
|
|
|
|
2017-03-20 08:10:44 -05:00
|
|
|
Convey("with bucket url https://foo.bar.baz.s3-us-east-2.amazonaws.com", func() {
|
2018-04-30 09:21:04 -05:00
|
|
|
s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
|
2018-04-23 13:03:57 -05:00
|
|
|
So(err, ShouldBeNil)
|
2019-10-10 02:06:55 -05:00
|
|
|
_, err = s3sec.NewKey("bucket_url", "https://foo.bar.baz.s3-us-east-2.amazonaws.com")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = s3sec.NewKey("access_key", "access_key")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = s3sec.NewKey("secret_key", "secret_key")
|
|
|
|
So(err, ShouldBeNil)
|
2016-08-10 10:27:39 -05:00
|
|
|
|
2017-03-20 08:10:44 -05:00
|
|
|
uploader, err := NewImageUploader()
|
|
|
|
So(err, ShouldBeNil)
|
2016-09-07 03:04:16 -05:00
|
|
|
|
2019-10-10 02:06:55 -05:00
|
|
|
original, ok := uploader.(*S3Uploader)
|
2017-03-20 08:10:44 -05:00
|
|
|
So(ok, ShouldBeTrue)
|
|
|
|
So(original.region, ShouldEqual, "us-east-2")
|
|
|
|
So(original.bucket, ShouldEqual, "foo.bar.baz")
|
|
|
|
So(original.accessKey, ShouldEqual, "access_key")
|
|
|
|
So(original.secretKey, ShouldEqual, "secret_key")
|
|
|
|
})
|
|
|
|
|
|
|
|
Convey("with bucket url https://s3.amazonaws.com/mybucket", func() {
|
2018-04-30 09:21:04 -05:00
|
|
|
s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
|
2018-04-23 13:03:57 -05:00
|
|
|
So(err, ShouldBeNil)
|
2019-10-10 02:06:55 -05:00
|
|
|
_, err = s3sec.NewKey("bucket_url", "https://s3.amazonaws.com/my.bucket.com")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = s3sec.NewKey("access_key", "access_key")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = s3sec.NewKey("secret_key", "secret_key")
|
|
|
|
So(err, ShouldBeNil)
|
2017-03-20 08:10:44 -05:00
|
|
|
|
|
|
|
uploader, err := NewImageUploader()
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
2019-10-10 02:06:55 -05:00
|
|
|
original, ok := uploader.(*S3Uploader)
|
2017-03-20 08:10:44 -05:00
|
|
|
So(ok, ShouldBeTrue)
|
|
|
|
So(original.region, ShouldEqual, "us-east-1")
|
|
|
|
So(original.bucket, ShouldEqual, "my.bucket.com")
|
|
|
|
So(original.accessKey, ShouldEqual, "access_key")
|
|
|
|
So(original.secretKey, ShouldEqual, "secret_key")
|
|
|
|
})
|
|
|
|
|
|
|
|
Convey("with bucket url https://s3-us-west-2.amazonaws.com/mybucket", func() {
|
2018-04-30 09:21:04 -05:00
|
|
|
s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
|
2018-04-23 13:03:57 -05:00
|
|
|
So(err, ShouldBeNil)
|
2019-10-10 02:06:55 -05:00
|
|
|
_, err = s3sec.NewKey("bucket_url", "https://s3-us-west-2.amazonaws.com/my.bucket.com")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = s3sec.NewKey("access_key", "access_key")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = s3sec.NewKey("secret_key", "secret_key")
|
|
|
|
So(err, ShouldBeNil)
|
2017-03-20 08:10:44 -05:00
|
|
|
|
|
|
|
uploader, err := NewImageUploader()
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
2018-04-23 13:03:57 -05:00
|
|
|
original, ok := uploader.(*S3Uploader)
|
2017-03-20 08:10:44 -05:00
|
|
|
So(ok, ShouldBeTrue)
|
|
|
|
So(original.region, ShouldEqual, "us-west-2")
|
|
|
|
So(original.bucket, ShouldEqual, "my.bucket.com")
|
|
|
|
So(original.accessKey, ShouldEqual, "access_key")
|
|
|
|
So(original.secretKey, ShouldEqual, "secret_key")
|
|
|
|
})
|
2016-08-10 10:27:39 -05:00
|
|
|
})
|
|
|
|
|
|
|
|
Convey("Webdav uploader", func() {
|
2018-04-30 09:21:04 -05:00
|
|
|
cfg := setting.NewCfg()
|
2019-10-10 02:06:55 -05:00
|
|
|
err := cfg.Load(&setting.CommandLineArgs{
|
2016-08-10 10:27:39 -05:00
|
|
|
HomePath: "../../../",
|
|
|
|
})
|
2019-10-10 02:06:55 -05:00
|
|
|
So(err, ShouldBeNil)
|
2016-08-10 10:27:39 -05:00
|
|
|
|
|
|
|
setting.ImageUploadProvider = "webdav"
|
|
|
|
|
2018-04-30 09:21:04 -05:00
|
|
|
webdavSec, err := cfg.Raw.GetSection("external_image_storage.webdav")
|
2018-04-23 13:03:57 -05:00
|
|
|
So(err, ShouldBeNil)
|
2019-10-10 02:06:55 -05:00
|
|
|
_, err = webdavSec.NewKey("url", "webdavUrl")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = webdavSec.NewKey("username", "username")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = webdavSec.NewKey("password", "password")
|
|
|
|
So(err, ShouldBeNil)
|
2016-08-10 10:27:39 -05:00
|
|
|
|
|
|
|
uploader, err := NewImageUploader()
|
|
|
|
So(err, ShouldBeNil)
|
2016-09-07 03:04:16 -05:00
|
|
|
original, ok := uploader.(*WebdavUploader)
|
|
|
|
|
|
|
|
So(ok, ShouldBeTrue)
|
|
|
|
So(original.url, ShouldEqual, "webdavUrl")
|
|
|
|
So(original.username, ShouldEqual, "username")
|
|
|
|
So(original.password, ShouldEqual, "password")
|
2016-08-10 10:27:39 -05:00
|
|
|
})
|
2017-08-04 16:46:26 -05:00
|
|
|
|
2017-08-06 10:04:38 -05:00
|
|
|
Convey("GCS uploader", func() {
|
2018-04-30 09:21:04 -05:00
|
|
|
cfg := setting.NewCfg()
|
2019-10-10 02:06:55 -05:00
|
|
|
err := cfg.Load(&setting.CommandLineArgs{
|
2017-08-04 16:46:26 -05:00
|
|
|
HomePath: "../../../",
|
|
|
|
})
|
2019-10-10 02:06:55 -05:00
|
|
|
So(err, ShouldBeNil)
|
2017-08-04 16:46:26 -05:00
|
|
|
|
2017-08-06 10:04:38 -05:00
|
|
|
setting.ImageUploadProvider = "gcs"
|
2017-08-04 16:46:26 -05:00
|
|
|
|
2018-04-30 09:21:04 -05:00
|
|
|
gcpSec, err := cfg.Raw.GetSection("external_image_storage.gcs")
|
2018-04-23 13:03:57 -05:00
|
|
|
So(err, ShouldBeNil)
|
2019-10-10 02:06:55 -05:00
|
|
|
_, err = gcpSec.NewKey("key_file", "/etc/secrets/project-79a52befa3f6.json")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = gcpSec.NewKey("bucket", "project-grafana-east")
|
|
|
|
So(err, ShouldBeNil)
|
2017-08-04 16:46:26 -05:00
|
|
|
|
|
|
|
uploader, err := NewImageUploader()
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
2020-10-26 14:35:12 -05:00
|
|
|
original, ok := uploader.(*gcs.Uploader)
|
2017-08-04 16:46:26 -05:00
|
|
|
So(ok, ShouldBeTrue)
|
2020-10-26 14:35:12 -05:00
|
|
|
So(original.KeyFile, ShouldEqual, "/etc/secrets/project-79a52befa3f6.json")
|
|
|
|
So(original.Bucket, ShouldEqual, "project-grafana-east")
|
2017-08-04 16:46:26 -05:00
|
|
|
})
|
2017-07-29 21:31:28 -05:00
|
|
|
|
|
|
|
Convey("AzureBlobUploader config", func() {
|
2018-04-30 09:21:04 -05:00
|
|
|
cfg := setting.NewCfg()
|
2019-10-10 02:06:55 -05:00
|
|
|
err := cfg.Load(&setting.CommandLineArgs{
|
2017-07-29 21:31:28 -05:00
|
|
|
HomePath: "../../../",
|
|
|
|
})
|
2019-10-10 02:06:55 -05:00
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
2017-07-29 21:31:28 -05:00
|
|
|
setting.ImageUploadProvider = "azure_blob"
|
|
|
|
|
|
|
|
Convey("with container name", func() {
|
2018-04-30 09:21:04 -05:00
|
|
|
azureBlobSec, err := cfg.Raw.GetSection("external_image_storage.azure_blob")
|
2018-04-23 13:03:57 -05:00
|
|
|
So(err, ShouldBeNil)
|
2019-10-10 02:06:55 -05:00
|
|
|
_, err = azureBlobSec.NewKey("account_name", "account_name")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = azureBlobSec.NewKey("account_key", "account_key")
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = azureBlobSec.NewKey("container_name", "container_name")
|
|
|
|
So(err, ShouldBeNil)
|
2017-07-29 21:31:28 -05:00
|
|
|
|
|
|
|
uploader, err := NewImageUploader()
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
2018-04-23 13:03:57 -05:00
|
|
|
original, ok := uploader.(*AzureBlobUploader)
|
2017-07-29 21:31:28 -05:00
|
|
|
So(ok, ShouldBeTrue)
|
|
|
|
So(original.account_name, ShouldEqual, "account_name")
|
|
|
|
So(original.account_key, ShouldEqual, "account_key")
|
|
|
|
So(original.container_name, ShouldEqual, "container_name")
|
|
|
|
})
|
|
|
|
})
|
2017-12-30 16:01:51 -06:00
|
|
|
|
|
|
|
Convey("Local uploader", func() {
|
2018-04-30 09:21:04 -05:00
|
|
|
cfg := setting.NewCfg()
|
2019-10-10 02:06:55 -05:00
|
|
|
err := cfg.Load(&setting.CommandLineArgs{
|
2017-12-30 16:01:51 -06:00
|
|
|
HomePath: "../../../",
|
|
|
|
})
|
2019-10-10 02:06:55 -05:00
|
|
|
So(err, ShouldBeNil)
|
2017-12-30 16:01:51 -06:00
|
|
|
|
|
|
|
setting.ImageUploadProvider = "local"
|
|
|
|
|
|
|
|
uploader, err := NewImageUploader()
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
2019-10-10 02:06:55 -05:00
|
|
|
original, ok := uploader.(*LocalUploader)
|
2017-12-30 16:01:51 -06:00
|
|
|
So(ok, ShouldBeTrue)
|
|
|
|
So(original, ShouldNotBeNil)
|
|
|
|
})
|
2016-08-10 10:27:39 -05:00
|
|
|
})
|
|
|
|
}
|