* use config file for backup create Now that corso stores its prior connection details in a config file, that file should get used to retrieve storage details as needed.
72 lines
1.9 KiB
Go
72 lines
1.9 KiB
Go
package config_test
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"path"
|
|
"testing"
|
|
|
|
"github.com/spf13/viper"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/suite"
|
|
|
|
"github.com/alcionai/corso/cli/config"
|
|
"github.com/alcionai/corso/pkg/repository"
|
|
"github.com/alcionai/corso/pkg/storage"
|
|
)
|
|
|
|
const (
|
|
configFileTemplate = `
|
|
bucket = '%s'
|
|
endpoint = 's3.amazonaws.com'
|
|
prefix = 'test-prefix'
|
|
provider = 'S3'
|
|
tenantid = '%s'
|
|
`
|
|
)
|
|
|
|
type ConfigSuite struct {
|
|
suite.Suite
|
|
}
|
|
|
|
func TestConfigSuite(t *testing.T) {
|
|
suite.Run(t, new(ConfigSuite))
|
|
}
|
|
|
|
func (suite *ConfigSuite) TestReadRepoConfigBasic() {
|
|
// Generate test config file
|
|
b := "read-repo-config-basic-bucket"
|
|
tID := "6f34ac30-8196-469b-bf8f-d83deadbbbba"
|
|
testConfigData := fmt.Sprintf(configFileTemplate, b, tID)
|
|
testConfigFilePath := path.Join(suite.T().TempDir(), "corso.toml")
|
|
err := ioutil.WriteFile(testConfigFilePath, []byte(testConfigData), 0700)
|
|
assert.NoError(suite.T(), err)
|
|
|
|
// Configure viper to read test config file
|
|
viper.SetConfigFile(testConfigFilePath)
|
|
|
|
// Read and validate config
|
|
s3Cfg, account, err := config.ReadRepoConfig()
|
|
assert.NoError(suite.T(), err)
|
|
assert.Equal(suite.T(), b, s3Cfg.Bucket)
|
|
assert.Equal(suite.T(), tID, account.TenantID)
|
|
}
|
|
|
|
func (suite *ConfigSuite) TestWriteReadConfig() {
|
|
// Configure viper to read test config file
|
|
tempDir := suite.T().TempDir()
|
|
testConfigFilePath := path.Join(tempDir, "corso.toml")
|
|
err := config.InitConfig(testConfigFilePath)
|
|
assert.NoError(suite.T(), err)
|
|
|
|
s3Cfg := storage.S3Config{Bucket: "write-read-config-bucket"}
|
|
account := repository.Account{TenantID: "6f34ac30-8196-469b-bf8f-d83deadbbbbd"}
|
|
err = config.WriteRepoConfig(s3Cfg, account)
|
|
assert.NoError(suite.T(), err)
|
|
|
|
readS3Cfg, readAccount, err := config.ReadRepoConfig()
|
|
assert.NoError(suite.T(), err)
|
|
assert.Equal(suite.T(), s3Cfg, readS3Cfg)
|
|
assert.Equal(suite.T(), account, readAccount)
|
|
}
|