grafana/pkg/components/imguploader/imguploader_test.go

187 lines
5.9 KiB
Go
Raw Normal View History

package imguploader
import (
"testing"
"github.com/grafana/grafana/pkg/components/imguploader/gcs"
"github.com/grafana/grafana/pkg/setting"
2021-07-02 06:22:47 -05:00
"github.com/stretchr/testify/require"
)
func TestImageUploaderFactory(t *testing.T) {
2021-07-02 06:22:47 -05:00
t.Run("Can create image uploader for ", func(t *testing.T) {
t.Run("S3ImageUploader config", func(t *testing.T) {
cfg := setting.NewCfg()
err := cfg.Load(setting.CommandLineArgs{
HomePath: "../../../",
})
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
setting.ImageUploadProvider = "s3"
2021-07-02 06:22:47 -05:00
t.Run("with bucket url https://foo.bar.baz.s3-us-east-2.amazonaws.com", func(t *testing.T) {
s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = s3sec.NewKey("bucket_url", "https://foo.bar.baz.s3-us-east-2.amazonaws.com")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = s3sec.NewKey("access_key", "access_key")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = s3sec.NewKey("secret_key", "secret_key")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
uploader, err := NewImageUploader()
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
original, ok := uploader.(*S3Uploader)
2021-07-02 06:22:47 -05:00
require.True(t, ok)
require.Equal(t, "us-east-2", original.region)
require.Equal(t, "foo.bar.baz", original.bucket)
require.Equal(t, "access_key", original.accessKey)
require.Equal(t, "secret_key", original.secretKey)
})
2021-07-02 06:22:47 -05:00
t.Run("with bucket url https://s3.amazonaws.com/mybucket", func(t *testing.T) {
s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = s3sec.NewKey("bucket_url", "https://s3.amazonaws.com/my.bucket.com")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = s3sec.NewKey("access_key", "access_key")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = s3sec.NewKey("secret_key", "secret_key")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
uploader, err := NewImageUploader()
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
original, ok := uploader.(*S3Uploader)
2021-07-02 06:22:47 -05:00
require.True(t, ok)
require.Equal(t, "us-east-1", original.region)
require.Equal(t, "my.bucket.com", original.bucket)
require.Equal(t, "access_key", original.accessKey)
require.Equal(t, "secret_key", original.secretKey)
})
2021-07-02 06:22:47 -05:00
t.Run("with bucket url https://s3-us-west-2.amazonaws.com/mybucket", func(t *testing.T) {
s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = s3sec.NewKey("bucket_url", "https://s3-us-west-2.amazonaws.com/my.bucket.com")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = s3sec.NewKey("access_key", "access_key")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = s3sec.NewKey("secret_key", "secret_key")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
uploader, err := NewImageUploader()
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
2018-04-23 13:03:57 -05:00
original, ok := uploader.(*S3Uploader)
2021-07-02 06:22:47 -05:00
require.True(t, ok)
require.Equal(t, "us-west-2", original.region)
require.Equal(t, "my.bucket.com", original.bucket)
require.Equal(t, "access_key", original.accessKey)
require.Equal(t, "secret_key", original.secretKey)
})
})
2021-07-02 06:22:47 -05:00
t.Run("Webdav uploader", func(t *testing.T) {
cfg := setting.NewCfg()
err := cfg.Load(setting.CommandLineArgs{
HomePath: "../../../",
})
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
setting.ImageUploadProvider = "webdav"
webdavSec, err := cfg.Raw.GetSection("external_image_storage.webdav")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = webdavSec.NewKey("url", "webdavUrl")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = webdavSec.NewKey("username", "username")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = webdavSec.NewKey("password", "password")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
uploader, err := NewImageUploader()
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
original, ok := uploader.(*WebdavUploader)
2021-07-02 06:22:47 -05:00
require.True(t, ok)
require.Equal(t, "webdavUrl", original.url)
require.Equal(t, "username", original.username)
require.Equal(t, "password", original.password)
})
2017-08-04 16:46:26 -05:00
2021-07-02 06:22:47 -05:00
t.Run("GCS uploader", func(t *testing.T) {
cfg := setting.NewCfg()
err := cfg.Load(setting.CommandLineArgs{
2017-08-04 16:46:26 -05:00
HomePath: "../../../",
})
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
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
gcpSec, err := cfg.Raw.GetSection("external_image_storage.gcs")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = gcpSec.NewKey("key_file", "/etc/secrets/project-79a52befa3f6.json")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = gcpSec.NewKey("bucket", "project-grafana-east")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
2017-08-04 16:46:26 -05:00
uploader, err := NewImageUploader()
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
2017-08-04 16:46:26 -05:00
original, ok := uploader.(*gcs.Uploader)
2021-07-02 06:22:47 -05:00
require.True(t, ok)
require.Equal(t, "/etc/secrets/project-79a52befa3f6.json", original.KeyFile)
require.Equal(t, "project-grafana-east", original.Bucket)
2017-08-04 16:46:26 -05:00
})
2021-07-02 06:22:47 -05:00
t.Run("AzureBlobUploader config", func(t *testing.T) {
cfg := setting.NewCfg()
err := cfg.Load(setting.CommandLineArgs{
HomePath: "../../../",
})
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
setting.ImageUploadProvider = "azure_blob"
2021-07-02 06:22:47 -05:00
t.Run("with container name", func(t *testing.T) {
azureBlobSec, err := cfg.Raw.GetSection("external_image_storage.azure_blob")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = azureBlobSec.NewKey("account_name", "account_name")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = azureBlobSec.NewKey("account_key", "account_key")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
_, err = azureBlobSec.NewKey("container_name", "container_name")
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
uploader, err := NewImageUploader()
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
2018-04-23 13:03:57 -05:00
original, ok := uploader.(*AzureBlobUploader)
2021-07-02 06:22:47 -05:00
require.True(t, ok)
require.Equal(t, "account_name", original.account_name)
require.Equal(t, "account_key", original.account_key)
require.Equal(t, "container_name", original.container_name)
})
})
2021-07-02 06:22:47 -05:00
t.Run("Local uploader", func(t *testing.T) {
cfg := setting.NewCfg()
err := cfg.Load(setting.CommandLineArgs{
HomePath: "../../../",
})
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
setting.ImageUploadProvider = "local"
uploader, err := NewImageUploader()
2021-07-02 06:22:47 -05:00
require.NoError(t, err)
original, ok := uploader.(*LocalUploader)
2021-07-02 06:22:47 -05:00
require.True(t, ok)
require.NotNil(t, original)
})
})
}