MM-53877: fix export config settings (#24167)

* wip test

* test and use Export* config correctly
This commit is contained in:
Jesse Hallam 2023-08-02 10:24:52 -03:00 committed by GitHub
parent 0b3457c672
commit 933b0eb89c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 119 additions and 4 deletions

View File

@ -102,10 +102,10 @@ func NewExportFileBackendSettingsFromConfig(fileSettings *model.FileSettings, en
AmazonS3PathPrefix: *fileSettings.ExportAmazonS3PathPrefix,
AmazonS3Region: *fileSettings.ExportAmazonS3Region,
AmazonS3Endpoint: *fileSettings.ExportAmazonS3Endpoint,
AmazonS3SSL: fileSettings.ExportAmazonS3SSL == nil || *fileSettings.AmazonS3SSL,
AmazonS3SignV2: fileSettings.ExportAmazonS3SignV2 != nil && *fileSettings.AmazonS3SignV2,
AmazonS3SSE: fileSettings.ExportAmazonS3SSE != nil && *fileSettings.AmazonS3SSE && enableComplianceFeature,
AmazonS3Trace: fileSettings.ExportAmazonS3Trace != nil && *fileSettings.AmazonS3Trace,
AmazonS3SSL: fileSettings.ExportAmazonS3SSL == nil || *fileSettings.ExportAmazonS3SSL,
AmazonS3SignV2: fileSettings.ExportAmazonS3SignV2 != nil && *fileSettings.ExportAmazonS3SignV2,
AmazonS3SSE: fileSettings.ExportAmazonS3SSE != nil && *fileSettings.ExportAmazonS3SSE && enableComplianceFeature,
AmazonS3Trace: fileSettings.ExportAmazonS3Trace != nil && *fileSettings.ExportAmazonS3Trace,
AmazonS3RequestTimeoutMilliseconds: *fileSettings.ExportAmazonS3RequestTimeoutMilliseconds,
AmazonS3PresignExpiresSeconds: *fileSettings.ExportAmazonS3PresignExpiresSeconds,
SkipVerify: skipVerify,

View File

@ -18,6 +18,7 @@ import (
"github.com/stretchr/testify/suite"
"github.com/xtgo/uuid"
"github.com/mattermost/mattermost/server/public/model"
"github.com/mattermost/mattermost/server/public/shared/mlog"
)
@ -618,3 +619,117 @@ func BenchmarkS3WriteFile(b *testing.B) {
b.StopTimer()
}
func TestNewExportFileBackendSettingsFromConfig(t *testing.T) {
t.Run("local filestore", func(t *testing.T) {
skipVerify := false
enableComplianceFeature := false
expected := FileBackendSettings{
DriverName: driverLocal,
Directory: "directory",
AmazonS3AccessKeyId: "",
AmazonS3SecretAccessKey: "",
AmazonS3Bucket: "",
AmazonS3PathPrefix: "",
AmazonS3Region: "",
AmazonS3Endpoint: "",
AmazonS3SSL: false,
AmazonS3SignV2: false,
AmazonS3SSE: false,
AmazonS3Trace: false,
SkipVerify: false,
AmazonS3RequestTimeoutMilliseconds: 0,
AmazonS3PresignExpiresSeconds: 0,
}
actual := NewExportFileBackendSettingsFromConfig(&model.FileSettings{
ExportDriverName: model.NewString(driverLocal),
ExportDirectory: model.NewString("directory"),
}, enableComplianceFeature, skipVerify)
require.Equal(t, expected, actual)
})
t.Run("s3 filestore, disable compliance", func(t *testing.T) {
skipVerify := true
enableComplianceFeature := false
expected := FileBackendSettings{
DriverName: driverS3,
Directory: "",
AmazonS3AccessKeyId: "minioaccesskey",
AmazonS3SecretAccessKey: "miniosecretkey",
AmazonS3Bucket: "mattermost-test",
AmazonS3PathPrefix: "prefix",
AmazonS3Region: "region",
AmazonS3Endpoint: "s3.example.com",
AmazonS3SSL: true,
AmazonS3SignV2: true,
AmazonS3SSE: false,
AmazonS3Trace: true,
SkipVerify: true,
AmazonS3RequestTimeoutMilliseconds: 1000,
AmazonS3PresignExpiresSeconds: 60000,
}
actual := NewExportFileBackendSettingsFromConfig(&model.FileSettings{
ExportDriverName: model.NewString(driverS3),
ExportAmazonS3AccessKeyId: model.NewString("minioaccesskey"),
ExportAmazonS3SecretAccessKey: model.NewString("miniosecretkey"),
ExportAmazonS3Bucket: model.NewString("mattermost-test"),
ExportAmazonS3Region: model.NewString("region"),
ExportAmazonS3Endpoint: model.NewString("s3.example.com"),
ExportAmazonS3PathPrefix: model.NewString("prefix"),
ExportAmazonS3SSL: model.NewBool(true),
ExportAmazonS3SignV2: model.NewBool(true),
ExportAmazonS3SSE: model.NewBool(true),
ExportAmazonS3Trace: model.NewBool(true),
ExportAmazonS3RequestTimeoutMilliseconds: model.NewInt64(1000),
ExportAmazonS3PresignExpiresSeconds: model.NewInt64(60000),
}, enableComplianceFeature, skipVerify)
require.Equal(t, expected, actual)
})
t.Run("s3 filestore, enable compliance", func(t *testing.T) {
skipVerify := true
enableComplianceFeature := true
expected := FileBackendSettings{
DriverName: driverS3,
Directory: "",
AmazonS3AccessKeyId: "minioaccesskey",
AmazonS3SecretAccessKey: "miniosecretkey",
AmazonS3Bucket: "mattermost-test",
AmazonS3PathPrefix: "prefix",
AmazonS3Region: "region",
AmazonS3Endpoint: "s3.example.com",
AmazonS3SSL: true,
AmazonS3SignV2: true,
AmazonS3SSE: true,
AmazonS3Trace: true,
SkipVerify: true,
AmazonS3RequestTimeoutMilliseconds: 1000,
AmazonS3PresignExpiresSeconds: 60000,
}
actual := NewExportFileBackendSettingsFromConfig(&model.FileSettings{
ExportDriverName: model.NewString(driverS3),
ExportAmazonS3AccessKeyId: model.NewString("minioaccesskey"),
ExportAmazonS3SecretAccessKey: model.NewString("miniosecretkey"),
ExportAmazonS3Bucket: model.NewString("mattermost-test"),
ExportAmazonS3Region: model.NewString("region"),
ExportAmazonS3Endpoint: model.NewString("s3.example.com"),
ExportAmazonS3PathPrefix: model.NewString("prefix"),
ExportAmazonS3SSL: model.NewBool(true),
ExportAmazonS3SignV2: model.NewBool(true),
ExportAmazonS3SSE: model.NewBool(true),
ExportAmazonS3Trace: model.NewBool(true),
ExportAmazonS3RequestTimeoutMilliseconds: model.NewInt64(1000),
ExportAmazonS3PresignExpiresSeconds: model.NewInt64(60000),
}, enableComplianceFeature, skipVerify)
require.Equal(t, expected, actual)
})
}