pkg/components: Check errors (#19703)

* pkg/components: Check errors
This commit is contained in:
Arve Knudsen
2019-10-10 09:06:55 +02:00
committed by GitHub
parent 9b483e765b
commit fe8d0d27d2
5 changed files with 104 additions and 53 deletions
@@ -162,7 +162,9 @@ func (c *StorageClient) FileUpload(container, blobName string, body io.Reader) (
extension := strings.ToLower(path.Ext(blobName))
contentType := mime.TypeByExtension(extension)
buf := new(bytes.Buffer)
buf.ReadFrom(body)
if _, err := buf.ReadFrom(body); err != nil {
return nil, err
}
req, err := http.NewRequest(
"PUT",
c.absUrl("%s/%s", container, blobName),
@@ -181,7 +183,9 @@ func (c *StorageClient) FileUpload(container, blobName string, body io.Reader) (
"Content-Length": strconv.Itoa(buf.Len()),
})
c.Auth.SignRequest(req)
if err := c.Auth.SignRequest(req); err != nil {
return nil, err
}
return c.transport().RoundTrip(req)
}
@@ -201,7 +205,7 @@ type Auth struct {
Key string
}
func (a *Auth) SignRequest(req *http.Request) {
func (a *Auth) SignRequest(req *http.Request) error {
strToSign := fmt.Sprintf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s",
strings.ToUpper(req.Method),
tryget(req.Header, "Content-Encoding"),
@@ -221,13 +225,17 @@ func (a *Auth) SignRequest(req *http.Request) {
decodedKey, _ := base64.StdEncoding.DecodeString(a.Key)
sha256 := hmac.New(sha256.New, decodedKey)
sha256.Write([]byte(strToSign))
if _, err := sha256.Write([]byte(strToSign)); err != nil {
return err
}
signature := base64.StdEncoding.EncodeToString(sha256.Sum(nil))
copyHeadersToRequest(req, map[string]string{
"Authorization": fmt.Sprintf("SharedKey %s:%s", a.Account, signature),
})
return nil
}
func tryget(headers map[string][]string, key string) string {
@@ -11,9 +11,10 @@ import (
func TestUploadToGCS(t *testing.T) {
SkipConvey("[Integration test] for external_image_store.gcs", t, func() {
cfg := setting.NewCfg()
cfg.Load(&setting.CommandLineArgs{
err := cfg.Load(&setting.CommandLineArgs{
HomePath: "../../../",
})
So(err, ShouldBeNil)
gcsUploader, _ := NewImageUploader()
+48 -35
View File
@@ -12,24 +12,27 @@ func TestImageUploaderFactory(t *testing.T) {
Convey("Can create image uploader for ", t, func() {
Convey("S3ImageUploader config", func() {
cfg := setting.NewCfg()
cfg.Load(&setting.CommandLineArgs{
err := cfg.Load(&setting.CommandLineArgs{
HomePath: "../../../",
})
So(err, ShouldBeNil)
setting.ImageUploadProvider = "s3"
Convey("with bucket url https://foo.bar.baz.s3-us-east-2.amazonaws.com", func() {
s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
So(err, ShouldBeNil)
s3sec.NewKey("bucket_url", "https://foo.bar.baz.s3-us-east-2.amazonaws.com")
s3sec.NewKey("access_key", "access_key")
s3sec.NewKey("secret_key", "secret_key")
_, 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)
uploader, err := NewImageUploader()
So(err, ShouldBeNil)
original, ok := uploader.(*S3Uploader)
original, ok := uploader.(*S3Uploader)
So(ok, ShouldBeTrue)
So(original.region, ShouldEqual, "us-east-2")
So(original.bucket, ShouldEqual, "foo.bar.baz")
@@ -40,15 +43,17 @@ func TestImageUploaderFactory(t *testing.T) {
Convey("with bucket url https://s3.amazonaws.com/mybucket", func() {
s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
So(err, ShouldBeNil)
s3sec.NewKey("bucket_url", "https://s3.amazonaws.com/my.bucket.com")
s3sec.NewKey("access_key", "access_key")
s3sec.NewKey("secret_key", "secret_key")
_, 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)
uploader, err := NewImageUploader()
So(err, ShouldBeNil)
original, ok := uploader.(*S3Uploader)
original, ok := uploader.(*S3Uploader)
So(ok, ShouldBeTrue)
So(original.region, ShouldEqual, "us-east-1")
So(original.bucket, ShouldEqual, "my.bucket.com")
@@ -59,9 +64,12 @@ func TestImageUploaderFactory(t *testing.T) {
Convey("with bucket url https://s3-us-west-2.amazonaws.com/mybucket", func() {
s3sec, err := setting.Raw.GetSection("external_image_storage.s3")
So(err, ShouldBeNil)
s3sec.NewKey("bucket_url", "https://s3-us-west-2.amazonaws.com/my.bucket.com")
s3sec.NewKey("access_key", "access_key")
s3sec.NewKey("secret_key", "secret_key")
_, 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)
uploader, err := NewImageUploader()
So(err, ShouldBeNil)
@@ -76,23 +84,24 @@ func TestImageUploaderFactory(t *testing.T) {
})
Convey("Webdav uploader", func() {
var err error
cfg := setting.NewCfg()
cfg.Load(&setting.CommandLineArgs{
err := cfg.Load(&setting.CommandLineArgs{
HomePath: "../../../",
})
So(err, ShouldBeNil)
setting.ImageUploadProvider = "webdav"
webdavSec, err := cfg.Raw.GetSection("external_image_storage.webdav")
So(err, ShouldBeNil)
webdavSec.NewKey("url", "webdavUrl")
webdavSec.NewKey("username", "username")
webdavSec.NewKey("password", "password")
_, err = webdavSec.NewKey("url", "webdavUrl")
So(err, ShouldBeNil)
_, err = webdavSec.NewKey("username", "username")
So(err, ShouldBeNil)
_, err = webdavSec.NewKey("password", "password")
So(err, ShouldBeNil)
uploader, err := NewImageUploader()
So(err, ShouldBeNil)
original, ok := uploader.(*WebdavUploader)
@@ -103,19 +112,20 @@ func TestImageUploaderFactory(t *testing.T) {
})
Convey("GCS uploader", func() {
var err error
cfg := setting.NewCfg()
cfg.Load(&setting.CommandLineArgs{
err := cfg.Load(&setting.CommandLineArgs{
HomePath: "../../../",
})
So(err, ShouldBeNil)
setting.ImageUploadProvider = "gcs"
gcpSec, err := cfg.Raw.GetSection("external_image_storage.gcs")
So(err, ShouldBeNil)
gcpSec.NewKey("key_file", "/etc/secrets/project-79a52befa3f6.json")
gcpSec.NewKey("bucket", "project-grafana-east")
_, err = gcpSec.NewKey("key_file", "/etc/secrets/project-79a52befa3f6.json")
So(err, ShouldBeNil)
_, err = gcpSec.NewKey("bucket", "project-grafana-east")
So(err, ShouldBeNil)
uploader, err := NewImageUploader()
So(err, ShouldBeNil)
@@ -128,17 +138,22 @@ func TestImageUploaderFactory(t *testing.T) {
Convey("AzureBlobUploader config", func() {
cfg := setting.NewCfg()
cfg.Load(&setting.CommandLineArgs{
err := cfg.Load(&setting.CommandLineArgs{
HomePath: "../../../",
})
So(err, ShouldBeNil)
setting.ImageUploadProvider = "azure_blob"
Convey("with container name", func() {
azureBlobSec, err := cfg.Raw.GetSection("external_image_storage.azure_blob")
So(err, ShouldBeNil)
azureBlobSec.NewKey("account_name", "account_name")
azureBlobSec.NewKey("account_key", "account_key")
azureBlobSec.NewKey("container_name", "container_name")
_, 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)
uploader, err := NewImageUploader()
So(err, ShouldBeNil)
@@ -152,20 +167,18 @@ func TestImageUploaderFactory(t *testing.T) {
})
Convey("Local uploader", func() {
var err error
cfg := setting.NewCfg()
cfg.Load(&setting.CommandLineArgs{
err := cfg.Load(&setting.CommandLineArgs{
HomePath: "../../../",
})
So(err, ShouldBeNil)
setting.ImageUploadProvider = "local"
uploader, err := NewImageUploader()
So(err, ShouldBeNil)
original, ok := uploader.(*LocalUploader)
original, ok := uploader.(*LocalUploader)
So(ok, ShouldBeTrue)
So(original, ShouldNotBeNil)
})
@@ -11,14 +11,15 @@ import (
func TestUploadToS3(t *testing.T) {
SkipConvey("[Integration test] for external_image_store.s3", t, func() {
cfg := setting.NewCfg()
cfg.Load(&setting.CommandLineArgs{
err := cfg.Load(&setting.CommandLineArgs{
HomePath: "../../../",
})
So(err, ShouldBeNil)
s3Uploader, _ := NewImageUploader()
s3Uploader, err := NewImageUploader()
So(err, ShouldBeNil)
path, err := s3Uploader.Upload(context.Background(), "../../../public/img/logo_transparent_400x.png")
So(err, ShouldBeNil)
So(path, ShouldNotEqual, "")
})