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

Function TestPutJSONRecursiveOutputsDirectoryAndFileResults

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

Source from the content-addressed store, hash-verified

917}
918
919func TestPutJSONRecursiveOutputsDirectoryAndFileResults(t *testing.T) {
920 dir := t.TempDir()
921 if err := os.MkdirAll(filepath.Join(dir, "empty"), 0755); err != nil {
922 t.Fatal(err)
923 }
924 if err := os.WriteFile(filepath.Join(dir, "file.txt"), []byte("file"), 0644); err != nil {
925 t.Fatal(err)
926 }
927
928 mock := &mockFilesClient{
929 uploadFn: func(arg *files.UploadArg, content io.Reader) (*files.FileMetadata, error) {
930 if _, err := io.ReadAll(content); err != nil {
931 t.Fatal(err)
932 }
933 return putFileMetadata(arg.Path, 4), nil
934 },
935 createFolderV2Fn: func(arg *files.CreateFolderArg) (*files.CreateFolderResult, error) {
936 return files.NewCreateFolderResult(putFolderMetadata(arg.Path)), nil
937 },
938 }
939 stubFilesClient(t, mock)
940
941 var stdout, stderr bytes.Buffer
942 cmd := testPutJSONCmd(&stdout, &stderr)
943 if err := cmd.Flags().Set("recursive", "true"); err != nil {
944 t.Fatal(err)
945 }
946 if err := put(cmd, []string{dir, "/remote"}); err != nil {
947 t.Fatalf("put error: %v", err)
948 }
949
950 got := decodePutOutput(t, &stdout)
951 if !got.Input.Recursive || got.Input.Source != dir || got.Input.Target != "/remote" {
952 t.Fatalf("input = %+v", got.Input)
953 }
954 want := map[string]string{
955 "/remote/file.txt": putStatusUploaded,
956 "/remote": putStatusCreated,
957 "/remote/empty": putStatusCreated,
958 }
959 if len(got.Results) != len(want) {
960 t.Fatalf("results len = %d, want %d: %+v", len(got.Results), len(want), got.Results)
961 }
962 for _, result := range got.Results {
963 wantStatus, ok := want[result.Input.Target]
964 if !ok {
965 t.Fatalf("unexpected result target %q", result.Input.Target)
966 }
967 if result.Status != wantStatus {
968 t.Fatalf("status for %s = %s, want %s", result.Input.Target, result.Status, wantStatus)
969 }
970 if result.Result == nil {
971 t.Fatalf("result metadata for %s is nil", result.Input.Target)
972 }
973 }
974 if !strings.Contains(stderr.String(), "Processing ") || !strings.Contains(stderr.String(), "Creating directory ") {
975 t.Fatalf("stderr = %q, want recursive status", stderr.String())
976 }

Callers

nothing calls this directly

Calls 6

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

Tested by

no test coverage detected