Test cases for fetching configs from config file and flags (#3727)
<!-- PR description--> Add test-cases to fetch config values from config file or flags #### Does this PR need a docs update or release note? - [ ] ⛔ No #### Type of change <!--- Please check the type of change your PR introduces: ---> - [ ] 🤖 Supportability/Tests #### Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * #<issue> #### Test Plan <!-- How will this be tested prior to merging.--> - [ ] ⚡ Unit test
This commit is contained in:
parent
1ba103523a
commit
ed1f8640fc
@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/alcionai/clues"
|
"github.com/alcionai/clues"
|
||||||
@ -12,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/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/credentials"
|
"github.com/alcionai/corso/src/pkg/credentials"
|
||||||
@ -26,12 +29,14 @@ const (
|
|||||||
` + StorageProviderTypeKey + ` = 'S3'
|
` + StorageProviderTypeKey + ` = 'S3'
|
||||||
` + AccountProviderTypeKey + ` = 'M365'
|
` + AccountProviderTypeKey + ` = 'M365'
|
||||||
` + AzureTenantIDKey + ` = '%s'
|
` + AzureTenantIDKey + ` = '%s'
|
||||||
` + DisableTLSKey + ` = 'false'
|
|
||||||
` + DisableTLSVerificationKey + ` = 'false'
|
|
||||||
` + AccessKey + ` = '%s'
|
` + AccessKey + ` = '%s'
|
||||||
` + SecretAccessKey + ` = '%s'
|
` + SecretAccessKey + ` = '%s'
|
||||||
` + SessionToken + ` = '%s'
|
` + SessionToken + ` = '%s'
|
||||||
` + CorsoPassphrase + ` = '%s'
|
` + CorsoPassphrase + ` = '%s'
|
||||||
|
` + AzureClientID + ` = '%s'
|
||||||
|
` + AzureSecret + ` = '%s'
|
||||||
|
` + DisableTLSKey + ` = '%s'
|
||||||
|
` + DisableTLSVerificationKey + ` = '%s'
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -71,16 +76,23 @@ func (suite *ConfigSuite) TestReadRepoConfigBasic() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
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"
|
||||||
|
azureSecret = "azure-secret-test"
|
||||||
|
endpoint = "s3-test"
|
||||||
|
disableTLS = "true"
|
||||||
|
disableTLSVerification = "true"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Generate test config file
|
// Generate test config file
|
||||||
testConfigData := fmt.Sprintf(configFileTemplate, b, tID, accKey, secret, token, passphrase)
|
testConfigData := fmt.Sprintf(configFileTemplate, b, tID, accKey, secret,
|
||||||
|
token, passphrase, azureClientID, azureSecret,
|
||||||
|
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))
|
||||||
@ -95,6 +107,9 @@ func (suite *ConfigSuite) TestReadRepoConfigBasic() {
|
|||||||
s3Cfg, err := s3ConfigsFromViper(vpr)
|
s3Cfg, err := s3ConfigsFromViper(vpr)
|
||||||
require.NoError(t, err, clues.ToCore(err))
|
require.NoError(t, err, clues.ToCore(err))
|
||||||
assert.Equal(t, b, s3Cfg.Bucket)
|
assert.Equal(t, b, s3Cfg.Bucket)
|
||||||
|
assert.Equal(t, "test-prefix/", s3Cfg.Prefix)
|
||||||
|
assert.Equal(t, disableTLS, strconv.FormatBool(s3Cfg.DoNotUseTLS))
|
||||||
|
assert.Equal(t, disableTLSVerification, strconv.FormatBool(s3Cfg.DoNotVerifyTLS))
|
||||||
|
|
||||||
s3Cfg, err = s3CredsFromViper(vpr, s3Cfg)
|
s3Cfg, err = s3CredsFromViper(vpr, s3Cfg)
|
||||||
require.NoError(t, err, clues.ToCore(err))
|
require.NoError(t, err, clues.ToCore(err))
|
||||||
@ -104,6 +119,8 @@ func (suite *ConfigSuite) TestReadRepoConfigBasic() {
|
|||||||
|
|
||||||
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, azureSecret, m365.AzureClientSecret)
|
||||||
assert.Equal(t, tID, m365.AzureTenantID)
|
assert.Equal(t, tID, m365.AzureTenantID)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,6 +240,106 @@ func (suite *ConfigSuite) TestMustMatchConfig() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (suite *ConfigSuite) TestReadFromFlags() {
|
||||||
|
var (
|
||||||
|
t = suite.T()
|
||||||
|
vpr = viper.New()
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
b = "read-repo-config-basic-bucket"
|
||||||
|
tID = "6f34ac30-8196-469b-bf8f-d83deadbbbba"
|
||||||
|
accKey = "aws-test-access-key"
|
||||||
|
secret = "aws-test-secret-key"
|
||||||
|
token = "aws-test-session-token"
|
||||||
|
passphrase = "passphrase-test"
|
||||||
|
azureClientID = "azure-client-id-test"
|
||||||
|
azureSecret = "azure-secret-test"
|
||||||
|
prefix = "prefix-test"
|
||||||
|
disableTLS = "true"
|
||||||
|
disableTLSVerification = "true"
|
||||||
|
)
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
// reset values
|
||||||
|
flags.AzureClientTenantFV = ""
|
||||||
|
flags.AzureClientIDFV = ""
|
||||||
|
flags.AzureClientSecretFV = ""
|
||||||
|
|
||||||
|
flags.AWSAccessKeyFV = ""
|
||||||
|
flags.AWSSecretAccessKeyFV = ""
|
||||||
|
flags.AWSSessionTokenFV = ""
|
||||||
|
|
||||||
|
flags.CorsoPassphraseFV = ""
|
||||||
|
})
|
||||||
|
|
||||||
|
// Generate test config file
|
||||||
|
testConfigData := fmt.Sprintf(configFileTemplate, b, tID, accKey, secret, token,
|
||||||
|
passphrase, azureClientID, azureSecret,
|
||||||
|
disableTLS, disableTLSVerification)
|
||||||
|
|
||||||
|
testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
|
||||||
|
err := os.WriteFile(testConfigFilePath, []byte(testConfigData), 0o700)
|
||||||
|
require.NoError(t, err, clues.ToCore(err))
|
||||||
|
|
||||||
|
// Configure viper to read test config file
|
||||||
|
vpr.SetConfigFile(testConfigFilePath)
|
||||||
|
|
||||||
|
// Read and validate config
|
||||||
|
err = vpr.ReadInConfig()
|
||||||
|
require.NoError(t, err, "reading repo config", clues.ToCore(err))
|
||||||
|
|
||||||
|
overrides := map[string]string{}
|
||||||
|
flags.AzureClientTenantFV = "6f34ac30-8196-469b-bf8f-d83deadbbbba"
|
||||||
|
flags.AzureClientIDFV = "azure-id-flag-value"
|
||||||
|
flags.AzureClientSecretFV = "azure-secret-flag-value"
|
||||||
|
|
||||||
|
flags.AWSAccessKeyFV = "aws-access-key"
|
||||||
|
flags.AWSSecretAccessKeyFV = "aws-access-secret-flag-value"
|
||||||
|
flags.AWSSessionTokenFV = "aws-access-session-flag-value"
|
||||||
|
|
||||||
|
overrides[storage.Bucket] = "flag-bucket"
|
||||||
|
overrides[storage.Endpoint] = "flag-endpoint"
|
||||||
|
overrides[storage.Prefix] = "flag-prefix"
|
||||||
|
overrides[storage.DoNotUseTLS] = "true"
|
||||||
|
overrides[storage.DoNotVerifyTLS] = "true"
|
||||||
|
overrides[credentials.AWSAccessKeyID] = flags.AWSAccessKeyFV
|
||||||
|
overrides[credentials.AWSSecretAccessKey] = flags.AWSSecretAccessKeyFV
|
||||||
|
overrides[credentials.AWSSessionToken] = flags.AWSSessionTokenFV
|
||||||
|
|
||||||
|
flags.CorsoPassphraseFV = "passphrase-flags"
|
||||||
|
|
||||||
|
repoDetails, err := getStorageAndAccountWithViper(
|
||||||
|
vpr,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
overrides,
|
||||||
|
)
|
||||||
|
|
||||||
|
m365Config, _ := repoDetails.Account.M365Config()
|
||||||
|
s3Cfg, _ := repoDetails.Storage.S3Config()
|
||||||
|
commonConfig, _ := repoDetails.Storage.CommonConfig()
|
||||||
|
pass := commonConfig.Corso.CorsoPassphrase
|
||||||
|
|
||||||
|
require.NoError(t, err, "reading repo config", clues.ToCore(err))
|
||||||
|
|
||||||
|
assert.Equal(t, flags.AWSAccessKeyFV, s3Cfg.AWS.AccessKey)
|
||||||
|
assert.Equal(t, flags.AWSSecretAccessKeyFV, s3Cfg.AWS.SecretKey)
|
||||||
|
assert.Equal(t, flags.AWSSessionTokenFV, s3Cfg.AWS.SessionToken)
|
||||||
|
|
||||||
|
assert.Equal(t, overrides[storage.Bucket], s3Cfg.Bucket)
|
||||||
|
assert.Equal(t, overrides[storage.Endpoint], s3Cfg.Endpoint)
|
||||||
|
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.DoNotVerifyTLS]), s3Cfg.DoNotVerifyTLS)
|
||||||
|
|
||||||
|
assert.Equal(t, flags.AzureClientIDFV, m365Config.AzureClientID)
|
||||||
|
assert.Equal(t, flags.AzureClientSecretFV, m365Config.AzureClientSecret)
|
||||||
|
assert.Equal(t, flags.AzureClientTenantFV, m365Config.AzureTenantID)
|
||||||
|
|
||||||
|
assert.Equal(t, flags.CorsoPassphraseFV, pass)
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
// integration tests
|
// integration tests
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user