(t *testing.T)
| 138 | } |
| 139 | |
| 140 | func TestRestoreJSONOutputsInputAndMetadata(t *testing.T) { |
| 141 | cmd, stdout := testRestoreCmd() |
| 142 | setRestoreOutputJSON(t, cmd) |
| 143 | var restoreArg *files.RestoreArg |
| 144 | clientModified := time.Date(2026, 6, 16, 10, 0, 0, 0, time.UTC) |
| 145 | serverModified := time.Date(2026, 6, 17, 12, 30, 0, 0, time.UTC) |
| 146 | mock := &mockFilesClient{ |
| 147 | restoreFn: func(arg *files.RestoreArg) (*files.FileMetadata, error) { |
| 148 | restoreArg = arg |
| 149 | return &files.FileMetadata{ |
| 150 | Metadata: files.Metadata{ |
| 151 | PathDisplay: "/Reports/old.pdf", |
| 152 | PathLower: "/reports/old.pdf", |
| 153 | }, |
| 154 | Id: "id:abc", |
| 155 | Rev: "current-rev", |
| 156 | Size: 123, |
| 157 | ClientModified: dropbox.DBXTime(clientModified), |
| 158 | ServerModified: dropbox.DBXTime(serverModified), |
| 159 | }, nil |
| 160 | }, |
| 161 | } |
| 162 | stubFilesClient(t, mock) |
| 163 | |
| 164 | if err := restore(cmd, []string{"/Reports/old.pdf", "target-rev"}); err != nil { |
| 165 | t.Fatalf("restore error: %v", err) |
| 166 | } |
| 167 | if restoreArg == nil || restoreArg.Path != "/Reports/old.pdf" || restoreArg.Rev != "target-rev" { |
| 168 | t.Fatalf("restore arg = %#v, want path /Reports/old.pdf and rev target-rev", restoreArg) |
| 169 | } |
| 170 | |
| 171 | got := decodeRestoreOutput(t, stdout) |
| 172 | if got.Input.Path != "/Reports/old.pdf" || got.Input.Revision != "target-rev" { |
| 173 | t.Fatalf("input = %#v, want path and target revision", got.Input) |
| 174 | } |
| 175 | result := got.Results[0] |
| 176 | if result.Status != restoreStatusRestored || result.Kind != restoreKindFile { |
| 177 | t.Fatalf("status/kind = %s/%s, want restored/file", result.Status, result.Kind) |
| 178 | } |
| 179 | if result.Input.Path != "/Reports/old.pdf" || result.Input.Revision != "target-rev" { |
| 180 | t.Fatalf("result input = %#v, want path and target revision", result.Input) |
| 181 | } |
| 182 | if result.Result.Type != "file" || result.Result.PathDisplay != "/Reports/old.pdf" || result.Result.PathLower != "/reports/old.pdf" { |
| 183 | t.Fatalf("metadata = %#v, want file path metadata", result.Result) |
| 184 | } |
| 185 | if result.Result.ID != "id:abc" || result.Result.Rev != "current-rev" { |
| 186 | t.Fatalf("metadata = %#v, want returned id and current revision", result.Result) |
| 187 | } |
| 188 | if result.Result.Size == nil || *result.Result.Size != 123 { |
| 189 | t.Fatalf("size = %v, want 123", result.Result.Size) |
| 190 | } |
| 191 | if result.Result.ServerModified == nil || *result.Result.ServerModified != "2026-06-17T12:30:00Z" { |
| 192 | t.Fatalf("server modified = %v, want 2026-06-17T12:30:00Z", result.Result.ServerModified) |
| 193 | } |
| 194 | if result.Result.ClientModified == nil || *result.Result.ClientModified != "2026-06-16T10:00:00Z" { |
| 195 | t.Fatalf("client modified = %v, want 2026-06-16T10:00:00Z", result.Result.ClientModified) |
| 196 | } |
| 197 | } |
nothing calls this directly
no test coverage detected