|
1 | 1 | import { Hash } from "@aws-sdk/types"; |
2 | | -import { Readable, Writable, WritableOptions } from "stream"; |
| 2 | +import { createReadStream } from "fs"; |
| 3 | +import { Readable, Writable } from "stream"; |
3 | 4 |
|
| 5 | +import { fsCreateReadStream } from "./fsCreateReadStream"; |
4 | 6 | import { HashCalculator } from "./HashCalculator"; |
| 7 | +import { isFileStream } from "./isFileStream"; |
5 | 8 | import { readableStreamHasher } from "./readableStreamHasher"; |
6 | 9 |
|
| 10 | +jest.mock("./fsCreateReadStream"); |
7 | 11 | jest.mock("./HashCalculator"); |
| 12 | +jest.mock("./isFileStream"); |
| 13 | +jest.mock("fs"); |
8 | 14 |
|
9 | 15 | describe(readableStreamHasher.name, () => { |
10 | 16 | const mockDigest = jest.fn(); |
@@ -38,13 +44,29 @@ describe(readableStreamHasher.name, () => { |
38 | 44 | (HashCalculator as unknown as jest.Mock).mockImplementation( |
39 | 45 | (hash) => new MockHashCalculator(hash, mockHashCalculatorWrite, mockHashCalculatorEnd) |
40 | 46 | ); |
| 47 | + (isFileStream as unknown as jest.Mock).mockReturnValue(false); |
41 | 48 | mockDigest.mockResolvedValue(mockHash); |
42 | 49 | }); |
43 | 50 |
|
44 | 51 | afterEach(() => { |
45 | 52 | jest.clearAllMocks(); |
46 | 53 | }); |
47 | 54 |
|
| 55 | + it("creates a copy in case of fileStream", () => { |
| 56 | + (fsCreateReadStream as jest.Mock).mockReturnValue( |
| 57 | + new Readable({ |
| 58 | + read: (size) => {}, |
| 59 | + }) |
| 60 | + ); |
| 61 | + (isFileStream as unknown as jest.Mock).mockReturnValue(true); |
| 62 | + |
| 63 | + const fsReadStream = createReadStream(__filename); |
| 64 | + readableStreamHasher(mockHashCtor, fsReadStream); |
| 65 | + |
| 66 | + expect(isFileStream).toHaveBeenCalledWith(fsReadStream); |
| 67 | + expect(fsCreateReadStream).toHaveBeenCalledWith(fsReadStream); |
| 68 | + }); |
| 69 | + |
48 | 70 | it("computes hash for a readable stream", async () => { |
49 | 71 | const readableStream = new Readable({ |
50 | 72 | read: (size) => {}, |
|
0 commit comments