This commit is contained in:
HiteshRepo 2024-01-29 17:09:23 +05:30
parent 722b0c7157
commit 8956d2642c

View File

@ -1,8 +1,10 @@
package config package config
import ( import (
"fmt"
"os" "os"
"path/filepath" "path/filepath"
"strconv"
"testing" "testing"
"github.com/alcionai/clues" "github.com/alcionai/clues"
@ -11,6 +13,8 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite" "github.com/stretchr/testify/suite"
"github.com/alcionai/corso/src/cli/flags"
"github.com/alcionai/corso/src/internal/common/str"
"github.com/alcionai/corso/src/internal/tester" "github.com/alcionai/corso/src/internal/tester"
"github.com/alcionai/corso/src/internal/tester/tconfig" "github.com/alcionai/corso/src/internal/tester/tconfig"
"github.com/alcionai/corso/src/pkg/account" "github.com/alcionai/corso/src/pkg/account"
@ -68,74 +72,74 @@ func (suite *ConfigSuite) TestRequireProps() {
} }
} }
// func (suite *ConfigSuite) TestReadRepoConfigBasic() { func (suite *ConfigSuite) TestReadRepoConfigBasic() {
// var ( var (
// t = suite.T() t = suite.T()
// vpr = viper.New() vpr = viper.New()
// ) )
// const ( const (
// b = "read-repo-config-basic-bucket" b = "read-repo-config-basic-bucket"
// tID = "6f34ac30-8196-469b-bf8f-d83deadbbbba" tID = "6f34ac30-8196-469b-bf8f-d83deadbbbba"
// accKey = "aws-test-access-key" accKey = "aws-test-access-key"
// secret = "aws-test-secret-key" secret = "aws-test-secret-key"
// token = "aws-test-session-token" token = "aws-test-session-token"
// passphrase = "passphrase-test" passphrase = "passphrase-test"
// azureClientID = "azure-client-id-test" azureClientID = "azure-client-id-test"
// azureSecret = "azure-secret-test" azureSecret = "azure-secret-test"
// endpoint = "s3-test" endpoint = "s3-test"
// disableTLS = "true" disableTLS = "true"
// disableTLSVerification = "true" disableTLSVerification = "true"
// ) )
// // Generate test config file // Generate test config file
// testConfigData := fmt.Sprintf(configFileTemplate, b, tID, accKey, secret, testConfigData := fmt.Sprintf(configFileTemplate, b, tID, accKey, secret,
// token, passphrase, azureClientID, azureSecret, token, passphrase, azureClientID, azureSecret,
// disableTLS, disableTLSVerification) disableTLS, disableTLSVerification)
// testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml") testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
// err := os.WriteFile(testConfigFilePath, []byte(testConfigData), 0o700) err := os.WriteFile(testConfigFilePath, []byte(testConfigData), 0o700)
// require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
// // Configure viper to read test config file // Configure viper to read test config file
// vpr.SetConfigFile(testConfigFilePath) vpr.SetConfigFile(testConfigFilePath)
// // Read and validate config // Read and validate config
// err = vpr.ReadInConfig() err = vpr.ReadInConfig()
// require.NoError(t, err, "reading repo config", clues.ToCore(err)) require.NoError(t, err, "reading repo config", clues.ToCore(err))
// sc, err := storage.NewStorageConfig(storage.ProviderS3) sc, err := storage.NewStorageConfig(storage.ProviderS3)
// require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
// err = sc.ApplyConfigOverrides(vpr, true, true, nil) err = sc.ApplyConfigOverrides(vpr, true, true, nil)
// require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
// s3Cfg := sc.(*storage.S3Config) s3Cfg := sc.(*storage.S3Config)
// assert.Equal(t, b, s3Cfg.Bucket) assert.Equal(t, b, s3Cfg.Bucket)
// assert.Equal(t, "test-prefix/", s3Cfg.Prefix) assert.Equal(t, "test-prefix/", s3Cfg.Prefix)
// assert.Equal(t, disableTLS, strconv.FormatBool(s3Cfg.DoNotUseTLS)) assert.Equal(t, disableTLS, strconv.FormatBool(s3Cfg.DoNotUseTLS))
// assert.Equal(t, disableTLSVerification, strconv.FormatBool(s3Cfg.DoNotVerifyTLS)) assert.Equal(t, disableTLSVerification, strconv.FormatBool(s3Cfg.DoNotVerifyTLS))
// // Config file may or may not be the source of truth for below values. These may be // Config file may or may not be the source of truth for below values. These may be
// // overridden by env vars (and flags but not relevant for this test). // overridden by env vars (and flags but not relevant for this test).
// // //
// // Other alternatives are: // Other alternatives are:
// // 1) unset env vars temporarily so that we can test against config file values. But that // 1) unset env vars temporarily so that we can test against config file values. But that
// // may be problematic if we decide to parallelize tests in future. // may be problematic if we decide to parallelize tests in future.
// // 2) assert against env var values instead of config file values. This can cause issues // 2) assert against env var values instead of config file values. This can cause issues
// // if CI/local env have different config override mechanisms. // if CI/local env have different config override mechanisms.
// // 3) Skip asserts for these keys. They will be validated in other tests. Choosing this // 3) Skip asserts for these keys. They will be validated in other tests. Choosing this
// // option. // option.
// // assert.Equal(t, accKey, s3Cfg.AWS.AccessKey) // assert.Equal(t, accKey, s3Cfg.AWS.AccessKey)
// // assert.Equal(t, secret, s3Cfg.AWS.SecretKey) // assert.Equal(t, secret, s3Cfg.AWS.SecretKey)
// // assert.Equal(t, token, s3Cfg.AWS.SessionToken) // assert.Equal(t, token, s3Cfg.AWS.SessionToken)
// m365, err := m365ConfigsFromViper(vpr) m365, err := m365ConfigsFromViper(vpr)
// require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
// assert.Equal(t, azureClientID, m365.AzureClientID) assert.Equal(t, azureClientID, m365.AzureClientID)
// assert.Equal(t, azureSecret, m365.AzureClientSecret) assert.Equal(t, azureSecret, m365.AzureClientSecret)
// assert.Equal(t, tID, m365.AzureTenantID) assert.Equal(t, tID, m365.AzureTenantID)
// } }
func (suite *ConfigSuite) TestWriteReadConfig() { func (suite *ConfigSuite) TestWriteReadConfig() {
var ( var (
@ -281,113 +285,113 @@ func (suite *ConfigSuite) TestMustMatchConfig() {
} }
} }
// func (suite *ConfigSuite) TestReadFromFlags() { func (suite *ConfigSuite) TestReadFromFlags() {
// var ( var (
// t = suite.T() t = suite.T()
// vpr = viper.New() vpr = viper.New()
// ) )
// ctx, flush := tester.NewContext(t) ctx, flush := tester.NewContext(t)
// defer flush() defer flush()
// const ( const (
// b = "read-repo-config-basic-bucket" b = "read-repo-config-basic-bucket"
// tID = "6f34ac30-8196-469b-bf8f-d83deadbbbba" tID = "6f34ac30-8196-469b-bf8f-d83deadbbbba"
// accKey = "aws-test-access-key" accKey = "aws-test-access-key"
// secret = "aws-test-secret-key" secret = "aws-test-secret-key"
// token = "aws-test-session-token" token = "aws-test-session-token"
// passphrase = "passphrase-test" passphrase = "passphrase-test"
// azureClientID = "azure-client-id-test" azureClientID = "azure-client-id-test"
// azureSecret = "azure-secret-test" azureSecret = "azure-secret-test"
// prefix = "prefix-test" prefix = "prefix-test"
// disableTLS = "true" disableTLS = "true"
// disableTLSVerification = "true" disableTLSVerification = "true"
// ) )
// t.Cleanup(func() { t.Cleanup(func() {
// // reset values // reset values
// flags.AzureClientTenantFV = "" flags.AzureClientTenantFV = ""
// flags.AzureClientIDFV = "" flags.AzureClientIDFV = ""
// flags.AzureClientSecretFV = "" flags.AzureClientSecretFV = ""
// flags.AWSAccessKeyFV = "" flags.AWSAccessKeyFV = ""
// flags.AWSSecretAccessKeyFV = "" flags.AWSSecretAccessKeyFV = ""
// flags.AWSSessionTokenFV = "" flags.AWSSessionTokenFV = ""
// flags.PassphraseFV = "" flags.PassphraseFV = ""
// }) })
// // Generate test config file // Generate test config file
// testConfigData := fmt.Sprintf(configFileTemplate, b, tID, accKey, secret, token, testConfigData := fmt.Sprintf(configFileTemplate, b, tID, accKey, secret, token,
// passphrase, azureClientID, azureSecret, passphrase, azureClientID, azureSecret,
// disableTLS, disableTLSVerification) disableTLS, disableTLSVerification)
// testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml") testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
// err := os.WriteFile(testConfigFilePath, []byte(testConfigData), 0o700) err := os.WriteFile(testConfigFilePath, []byte(testConfigData), 0o700)
// require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
// // Configure viper to read test config file // Configure viper to read test config file
// vpr.SetConfigFile(testConfigFilePath) vpr.SetConfigFile(testConfigFilePath)
// // Read and validate config // Read and validate config
// err = vpr.ReadInConfig() err = vpr.ReadInConfig()
// require.NoError(t, err, "reading repo config", clues.ToCore(err)) require.NoError(t, err, "reading repo config", clues.ToCore(err))
// overrides := map[string]string{} overrides := map[string]string{}
// flags.AzureClientTenantFV = "6f34ac30-8196-469b-bf8f-d83deadbbbba" flags.AzureClientTenantFV = "6f34ac30-8196-469b-bf8f-d83deadbbbba"
// flags.AzureClientIDFV = "azure-id-flag-value" flags.AzureClientIDFV = "azure-id-flag-value"
// flags.AzureClientSecretFV = "azure-secret-flag-value" flags.AzureClientSecretFV = "azure-secret-flag-value"
// flags.AWSAccessKeyFV = "aws-access-key" flags.AWSAccessKeyFV = "aws-access-key"
// flags.AWSSecretAccessKeyFV = "aws-access-secret-flag-value" flags.AWSSecretAccessKeyFV = "aws-access-secret-flag-value"
// flags.AWSSessionTokenFV = "aws-access-session-flag-value" flags.AWSSessionTokenFV = "aws-access-session-flag-value"
// overrides[storage.Bucket] = "flag-bucket" overrides[storage.Bucket] = "flag-bucket"
// overrides[storage.Endpoint] = "flag-endpoint" overrides[storage.Endpoint] = "flag-endpoint"
// overrides[storage.Prefix] = "flag-prefix" overrides[storage.Prefix] = "flag-prefix"
// overrides[storage.DoNotUseTLS] = "true" overrides[storage.DoNotUseTLS] = "true"
// overrides[storage.DoNotVerifyTLS] = "true" overrides[storage.DoNotVerifyTLS] = "true"
// overrides[credentials.AWSAccessKeyID] = flags.AWSAccessKeyFV overrides[credentials.AWSAccessKeyID] = flags.AWSAccessKeyFV
// overrides[credentials.AWSSecretAccessKey] = flags.AWSSecretAccessKeyFV overrides[credentials.AWSSecretAccessKey] = flags.AWSSecretAccessKeyFV
// overrides[credentials.AWSSessionToken] = flags.AWSSessionTokenFV overrides[credentials.AWSSessionToken] = flags.AWSSessionTokenFV
// flags.PassphraseFV = "passphrase-flags" flags.PassphraseFV = "passphrase-flags"
// repoDetails, err := getStorageAndAccountWithViper( repoDetails, err := getStorageAndAccountWithViper(
// ctx, ctx,
// vpr, vpr,
// storage.ProviderS3, storage.ProviderS3,
// true, true,
// false, false,
// overrides) overrides)
// require.NoError(t, err, "getting storage and account from config", clues.ToCore(err)) require.NoError(t, err, "getting storage and account from config", clues.ToCore(err))
// m365Config, _ := repoDetails.Account.M365Config() m365Config, _ := repoDetails.Account.M365Config()
// s3Cfg, err := repoDetails.Storage.ToS3Config() s3Cfg, err := repoDetails.Storage.ToS3Config()
// require.NoError(t, err, "reading s3 config from storage", clues.ToCore(err)) require.NoError(t, err, "reading s3 config from storage", clues.ToCore(err))
// commonConfig, _ := repoDetails.Storage.CommonConfig() commonConfig, _ := repoDetails.Storage.CommonConfig()
// pass := commonConfig.Corso.CorsoPassphrase pass := commonConfig.Corso.CorsoPassphrase
// require.NoError(t, err, "reading repo config", clues.ToCore(err)) require.NoError(t, err, "reading repo config", clues.ToCore(err))
// assert.Equal(t, flags.AWSAccessKeyFV, s3Cfg.AWS.AccessKey) assert.Equal(t, flags.AWSAccessKeyFV, s3Cfg.AWS.AccessKey)
// assert.Equal(t, flags.AWSSecretAccessKeyFV, s3Cfg.AWS.SecretKey) assert.Equal(t, flags.AWSSecretAccessKeyFV, s3Cfg.AWS.SecretKey)
// assert.Equal(t, flags.AWSSessionTokenFV, s3Cfg.AWS.SessionToken) assert.Equal(t, flags.AWSSessionTokenFV, s3Cfg.AWS.SessionToken)
// assert.Equal(t, overrides[storage.Bucket], s3Cfg.Bucket) assert.Equal(t, overrides[storage.Bucket], s3Cfg.Bucket)
// assert.Equal(t, overrides[storage.Endpoint], s3Cfg.Endpoint) assert.Equal(t, overrides[storage.Endpoint], s3Cfg.Endpoint)
// assert.Equal(t, overrides[storage.Prefix], s3Cfg.Prefix) assert.Equal(t, overrides[storage.Prefix], s3Cfg.Prefix)
// assert.Equal(t, str.ParseBool(overrides[storage.DoNotUseTLS]), s3Cfg.DoNotUseTLS) assert.Equal(t, str.ParseBool(overrides[storage.DoNotUseTLS]), s3Cfg.DoNotUseTLS)
// assert.Equal(t, str.ParseBool(overrides[storage.DoNotVerifyTLS]), s3Cfg.DoNotVerifyTLS) assert.Equal(t, str.ParseBool(overrides[storage.DoNotVerifyTLS]), s3Cfg.DoNotVerifyTLS)
// assert.Equal(t, flags.AzureClientIDFV, m365Config.AzureClientID) assert.Equal(t, flags.AzureClientIDFV, m365Config.AzureClientID)
// assert.Equal(t, flags.AzureClientSecretFV, m365Config.AzureClientSecret) assert.Equal(t, flags.AzureClientSecretFV, m365Config.AzureClientSecret)
// assert.Equal(t, flags.AzureClientTenantFV, m365Config.AzureTenantID) assert.Equal(t, flags.AzureClientTenantFV, m365Config.AzureTenantID)
// assert.Equal(t, flags.PassphraseFV, pass) assert.Equal(t, flags.PassphraseFV, pass)
// } }
// ------------------------------------------------------------ // ------------------------------------------------------------
// integration tests // integration tests