(t *testing.T)
| 406 | } |
| 407 | |
| 408 | func TestGetRecursive_HandlesPagination(t *testing.T) { |
| 409 | tmpDir := t.TempDir() |
| 410 | dst := filepath.Join(tmpDir, "output") |
| 411 | |
| 412 | mock := &mockFilesClient{ |
| 413 | listFolderFn: func(arg *files.ListFolderArg) (*files.ListFolderResult, error) { |
| 414 | return &files.ListFolderResult{ |
| 415 | Entries: []files.IsMetadata{ |
| 416 | &files.FileMetadata{Metadata: files.Metadata{PathDisplay: "/remote/a.txt"}, Size: 1}, |
| 417 | }, |
| 418 | HasMore: true, |
| 419 | Cursor: "page2", |
| 420 | }, nil |
| 421 | }, |
| 422 | listFolderContinueFn: func(arg *files.ListFolderContinueArg) (*files.ListFolderResult, error) { |
| 423 | if arg.Cursor != "page2" { |
| 424 | t.Errorf("cursor = %q, want page2", arg.Cursor) |
| 425 | } |
| 426 | return &files.ListFolderResult{ |
| 427 | Entries: []files.IsMetadata{ |
| 428 | &files.FileMetadata{Metadata: files.Metadata{PathDisplay: "/remote/b.txt"}, Size: 1}, |
| 429 | }, |
| 430 | HasMore: false, |
| 431 | }, nil |
| 432 | }, |
| 433 | downloadFn: func(arg *files.DownloadArg) (*files.FileMetadata, io.ReadCloser, error) { |
| 434 | meta := &files.FileMetadata{ |
| 435 | Metadata: files.Metadata{PathDisplay: arg.Path}, |
| 436 | Size: 1, |
| 437 | } |
| 438 | return meta, io.NopCloser(strings.NewReader("x")), nil |
| 439 | }, |
| 440 | } |
| 441 | |
| 442 | err := getRecursive(mock, "/remote", dst) |
| 443 | if err != nil { |
| 444 | t.Fatalf("getRecursive error: %v", err) |
| 445 | } |
| 446 | |
| 447 | for _, name := range []string{"a.txt", "b.txt"} { |
| 448 | if _, err := os.Stat(filepath.Join(dst, name)); err != nil { |
| 449 | t.Errorf("file %s not downloaded: %v", name, err) |
| 450 | } |
| 451 | } |
| 452 | } |
| 453 | |
| 454 | func TestGetRecursive_ReportsDownloadErrors(t *testing.T) { |
| 455 | tmpDir := t.TempDir() |
nothing calls this directly
no test coverage detected