corso/src/cli/config/config_test.go
Keepers 340d875579
use config file for backup create (#171)
* 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.
2022-06-09 14:28:26 -06:00

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)
}