MCPcopy Create free account
hub / github.com/dropbox/dbxcli / TestPutJSONRecursiveWarnsForSkippedSymlink

Function TestPutJSONRecursiveWarnsForSkippedSymlink

cmd/put_test.go:982–1037  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

980}
981
982func TestPutJSONRecursiveWarnsForSkippedSymlink(t *testing.T) {
983 dir := t.TempDir()
984 realPath := filepath.Join(dir, "real.txt")
985 linkPath := filepath.Join(dir, "link.txt")
986 if err := os.WriteFile(realPath, []byte("real"), 0644); err != nil {
987 t.Fatal(err)
988 }
989 if err := os.Symlink(realPath, linkPath); err != nil {
990 t.Fatal(err)
991 }
992
993 mock := &mockFilesClient{
994 uploadFn: func(arg *files.UploadArg, content io.Reader) (*files.FileMetadata, error) {
995 if arg.Path != "/remote/real.txt" {
996 t.Fatalf("upload path = %q, want /remote/real.txt", arg.Path)
997 }
998 if _, err := io.ReadAll(content); err != nil {
999 t.Fatal(err)
1000 }
1001 return putFileMetadata(arg.Path, 4), nil
1002 },
1003 createFolderV2Fn: func(arg *files.CreateFolderArg) (*files.CreateFolderResult, error) {
1004 return files.NewCreateFolderResult(putFolderMetadata(arg.Path)), nil
1005 },
1006 }
1007 stubFilesClient(t, mock)
1008
1009 var stdout bytes.Buffer
1010 cmd := testPutJSONCmd(&stdout, nil)
1011 if err := cmd.Flags().Set("recursive", "true"); err != nil {
1012 t.Fatal(err)
1013 }
1014 if err := put(cmd, []string{dir, "/remote"}); err != nil {
1015 t.Fatalf("put error: %v", err)
1016 }
1017
1018 got := decodePutOutputWithWarnings(t, &stdout)
1019 if len(got.Warnings) != 1 {
1020 t.Fatalf("warnings = %+v, want one skipped symlink warning", got.Warnings)
1021 }
1022 warning := got.Warnings[0]
1023 if warning.Code != jsonWarningCodeSkippedSymlink || warning.Path != linkPath {
1024 t.Fatalf("warning = %+v, want skipped symlink at %s", warning, linkPath)
1025 }
1026 if !strings.Contains(warning.Message, "skipped symlink") {
1027 t.Fatalf("warning message = %q, want skipped symlink", warning.Message)
1028 }
1029 for _, result := range got.Results {
1030 if result.Input.Source == linkPath || result.Input.Target == "/remote/link.txt" {
1031 t.Fatalf("symlink should not be uploaded: %+v", result)
1032 }
1033 }
1034 if !json.Valid(stdout.Bytes()) {
1035 t.Fatalf("stdout is not valid JSON: %s", stdout.String())
1036 }
1037}
1038
1039func TestPutJSONRecursiveFailsWhenDirectoryTargetIsExistingFile(t *testing.T) {

Callers

nothing calls this directly

Calls 6

putFileMetadataFunction · 0.85
putFolderMetadataFunction · 0.85
stubFilesClientFunction · 0.85
testPutJSONCmdFunction · 0.85
putFunction · 0.85

Tested by

no test coverage detected