mirror of
https://github.com/kopia/kopia.git
synced 2025-12-23 22:57:50 -05:00
64 lines
2.2 KiB
Go
64 lines
2.2 KiB
Go
package cli_test
|
|
|
|
import (
|
|
"os"
|
|
"path"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/kopia/kopia/repo"
|
|
"github.com/kopia/kopia/repo/blob"
|
|
"github.com/kopia/kopia/repo/blob/filesystem"
|
|
"github.com/kopia/kopia/tests/testenv"
|
|
)
|
|
|
|
func TestRepositoryCreateWithConfigFile(t *testing.T) {
|
|
env := testenv.NewCLITest(t, nil, testenv.NewInProcRunner(t))
|
|
|
|
_, stderr := env.RunAndExpectFailure(t, "repo", "create", "from-config", "--file", path.Join(env.ConfigDir, "does_not_exist.config"))
|
|
require.Contains(t, stderr, "can't connect to storage: one of --token-file, --token-stdin or --token must be provided")
|
|
|
|
_, stderr = env.RunAndExpectFailure(t, "repo", "connect", "from-config")
|
|
require.Contains(t, stderr, "can't connect to storage: one of --file, --token-file, --token-stdin or --token must be provided")
|
|
|
|
_, stderr = env.RunAndExpectFailure(t, "repo", "create", "from-config", "--token", "bad-token")
|
|
require.Contains(t, stderr, "can't connect to storage: invalid token: unable to decode token")
|
|
|
|
storageCfgFName := path.Join(env.ConfigDir, "storage-config.json")
|
|
ci := blob.ConnectionInfo{
|
|
Type: "filesystem",
|
|
Config: filesystem.Options{Path: env.RepoDir},
|
|
}
|
|
token, err := repo.EncodeToken("12345678", ci)
|
|
require.NoError(t, err)
|
|
|
|
// expect failure before writing to file
|
|
_, stderr = env.RunAndExpectFailure(t, "repo", "create", "from-config", "--token-file", storageCfgFName)
|
|
require.Contains(t, strings.Join(stderr, "\n"), "can't connect to storage: unable to open token file")
|
|
|
|
require.NoError(t, os.WriteFile(storageCfgFName, []byte(token), 0o600))
|
|
|
|
defer os.Remove(storageCfgFName) //nolint:errcheck,gosec
|
|
|
|
env.RunAndExpectSuccess(t, "repo", "create", "from-config", "--token-file", storageCfgFName)
|
|
}
|
|
|
|
func TestRepositoryCreateWithConfigFromStdin(t *testing.T) {
|
|
runner := testenv.NewInProcRunner(t)
|
|
env := testenv.NewCLITest(t, nil, runner)
|
|
|
|
ci := blob.ConnectionInfo{
|
|
Type: "filesystem",
|
|
Config: filesystem.Options{Path: env.RepoDir},
|
|
}
|
|
token, err := repo.EncodeToken("12345678", ci)
|
|
require.NoError(t, err)
|
|
|
|
// set stdin
|
|
runner.SetNextStdin(strings.NewReader(token))
|
|
|
|
env.RunAndExpectSuccess(t, "repo", "create", "from-config", "--token-stdin")
|
|
}
|