diff --git a/src/__test__/utils/valid.test.ts b/src/__test__/utils/valid.test.ts new file mode 100644 index 0000000..540fbf3 --- /dev/null +++ b/src/__test__/utils/valid.test.ts @@ -0,0 +1,55 @@ +import { makeStandardFetcher } from "@/fetchers/standardFetch"; +import { makeProviders } from "@/main/builder"; +import { targets } from "@/main/targets"; +import { isValidStream } from "@/utils/valid"; +import fetch from "node-fetch"; +import { describe, it, expect } from "vitest"; + +describe('isValidStream()', () => { + it('should pass valid streams', () => { + expect(isValidStream({ + type: "file", + flags: [], + qualities: { + "1080": { + type: "mp4", + url: "hello-world" + } + } + })).toBe(true); + expect(isValidStream({ + type: "hls", + flags: [], + playlist: "hello-world" + })).toBe(true); + }); + + it('should detect empty qualities', () => { + expect(isValidStream({ + type: "file", + flags: [], + qualities: {} + })).toBe(false); + }); + + it('should detect empty stream urls', () => { + expect(isValidStream({ + type: "file", + flags: [], + qualities: { + "1080": { + type: "mp4", + url: "", + } + } + })).toBe(false); + }); + + it('should detect emtpy HLS playlists', () => { + expect(isValidStream({ + type: "hls", + flags: [], + playlist: "", + })).toBe(false); + }); +}); diff --git a/src/main/runner.ts b/src/main/runner.ts index 866ffb9..700dbe4 100644 --- a/src/main/runner.ts +++ b/src/main/runner.ts @@ -80,7 +80,7 @@ export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOpt ...contextBase, media: ops.media, }); - if (!isValidStream(output?.stream)) { + if (output?.stream && !isValidStream(output?.stream)) { throw new NotFoundError('stream is incomplete'); } if (output?.stream && !flagsAllowedInFeatures(ops.features, output.stream.flags)) {