From db4402c40dca7724416f1f6a38e4e256e871c302 Mon Sep 17 00:00:00 2001 From: Carlos Tadeu Panato Junior Date: Tue, 13 Mar 2018 17:26:56 +0100 Subject: remove s3 region to be mandatory and fix when user call test s3 when the config is saved (#8454) --- api4/system.go | 4 ++++ api4/system_test.go | 17 ++++------------- utils/file_backend_s3.go | 7 ++----- utils/file_backend_s3_test.go | 10 +++++----- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/api4/system.go b/api4/system.go index c1541f0b5..7b63afc0b 100644 --- a/api4/system.go +++ b/api4/system.go @@ -395,6 +395,10 @@ func testS3(c *Context, w http.ResponseWriter, r *http.Request) { return } + if cfg.FileSettings.AmazonS3SecretAccessKey == model.FAKE_SETTING { + cfg.FileSettings.AmazonS3SecretAccessKey = c.App.Config().FileSettings.AmazonS3SecretAccessKey + } + license := c.App.License() backend, appErr := utils.NewFileBackend(&cfg.FileSettings, license != nil && *license.Features.Compliance) if appErr == nil { diff --git a/api4/system_test.go b/api4/system_test.go index 136c11774..6ef02cbfe 100644 --- a/api4/system_test.go +++ b/api4/system_test.go @@ -497,7 +497,7 @@ func TestS3TestConnection(t *testing.T) { AmazonS3AccessKeyId: model.MINIO_ACCESS_KEY, AmazonS3SecretAccessKey: model.MINIO_SECRET_KEY, AmazonS3Bucket: "", - AmazonS3Endpoint: "", + AmazonS3Endpoint: s3Endpoint, AmazonS3SSL: model.NewBool(false), }, } @@ -512,20 +512,11 @@ func TestS3TestConnection(t *testing.T) { } config.FileSettings.AmazonS3Bucket = model.MINIO_BUCKET + config.FileSettings.AmazonS3Region = "us-east-1" _, resp = th.SystemAdminClient.TestS3Connection(&config) - CheckBadRequestStatus(t, resp) - if resp.Error.Message != "S3 Endpoint is required" { - t.Fatal("should return error - missing s3 endpoint") - } - - config.FileSettings.AmazonS3Endpoint = s3Endpoint - _, resp = th.SystemAdminClient.TestS3Connection(&config) - CheckBadRequestStatus(t, resp) - if resp.Error.Message != "S3 Region is required" { - t.Fatal("should return error - missing s3 region") - } + CheckOKStatus(t, resp) - config.FileSettings.AmazonS3Region = "us-east-1" + config.FileSettings.AmazonS3Region = "" _, resp = th.SystemAdminClient.TestS3Connection(&config) CheckOKStatus(t, resp) diff --git a/utils/file_backend_s3.go b/utils/file_backend_s3.go index b0601bc8a..75282897f 100644 --- a/utils/file_backend_s3.go +++ b/utils/file_backend_s3.go @@ -253,12 +253,9 @@ func CheckMandatoryS3Fields(settings *model.FileSettings) *model.AppError { return model.NewAppError("S3File", "api.admin.test_s3.missing_s3_bucket", nil, "", http.StatusBadRequest) } + // if S3 endpoint is not set call the set defaults to set that if len(settings.AmazonS3Endpoint) == 0 { - return model.NewAppError("S3File", "api.admin.test_s3.missing_s3_endpoint", nil, "", http.StatusBadRequest) - } - - if len(settings.AmazonS3Region) == 0 { - return model.NewAppError("S3File", "api.admin.test_s3.missing_s3_region", nil, "", http.StatusBadRequest) + settings.SetDefaults() } return nil diff --git a/utils/file_backend_s3_test.go b/utils/file_backend_s3_test.go index ff42a4d19..a8834f226 100644 --- a/utils/file_backend_s3_test.go +++ b/utils/file_backend_s3_test.go @@ -19,14 +19,14 @@ func TestCheckMandatoryS3Fields(t *testing.T) { cfg.AmazonS3Bucket = "test-mm" err = CheckMandatoryS3Fields(&cfg) - if err == nil || err.Message != "api.admin.test_s3.missing_s3_endpoint" { - t.Fatal("should've failed with missing s3 endpoint") + if err != nil { + t.Fatal("should've not failed") } - cfg.AmazonS3Endpoint = "s3.newendpoint.com" + cfg.AmazonS3Endpoint = "" err = CheckMandatoryS3Fields(&cfg) - if err == nil || err.Message != "api.admin.test_s3.missing_s3_region" { - t.Fatal("should've failed with missing s3 region") + if err != nil || cfg.AmazonS3Endpoint != "s3.amazonaws.com" { + t.Fatal("should've not failed because it should set the endpoint to the default") } } -- cgit v1.2.3-1-g7c22