rx-player
Version:
Canal+ HTML5 Video Player
136 lines (122 loc) • 4.33 kB
text/typescript
import { describe, afterEach, it, expect, vi } from "vitest";
import type IProbeHDCPPolicy from "../../probers/HDCPPolicy";
describe("MediaCapabilitiesProber probers - HDCPPolicy", () => {
afterEach(() => {
vi.resetModules();
});
it("should throw if no requestMediaKeySystemAccess", async () => {
vi.doMock("../../../../../compat/eme", () => ({
default: () => null,
}));
const probeHDCPPolicy = (await vi.importActual("../../probers/HDCPPolicy"))
.default as typeof IProbeHDCPPolicy;
await probeHDCPPolicy("1.1").then(
() => {
throw new Error("Should not have succeeded");
},
(err: unknown) => {
expect(err).toBeInstanceOf(Error);
},
);
});
it("should reject if MediaKeys creation fails", async () => {
const mockCreateMediaKeys = vi.fn(() => {
return Promise.reject(new Error("NOPE LOL"));
});
const mockRequestMediaKeySystemAcces = vi.fn(() => {
return Promise.resolve({
createMediaKeys: mockCreateMediaKeys,
});
});
vi.doMock("../../../../../compat/eme", () => ({
default: {
requestMediaKeySystemAccess: mockRequestMediaKeySystemAcces,
},
}));
const probeHDCPPolicy = (await vi.importActual("../../probers/HDCPPolicy"))
.default as typeof IProbeHDCPPolicy;
await probeHDCPPolicy("1.1").then(
() => {
throw new Error("Should not have succeeded");
},
(err: unknown) => {
expect(err).toBeInstanceOf(Error);
},
);
});
it("should reject if no getStatusForPolicy API", async () => {
const mockCreateMediaKeys = vi.fn(() => {
return Promise.resolve({});
});
const mockRequestMediaKeySystemAcces = vi.fn(() => {
return Promise.resolve({
createMediaKeys: mockCreateMediaKeys,
});
});
vi.doMock("../../../../../compat/eme", () => ({
default: () => ({
requestMediaKeySystemAccess: mockRequestMediaKeySystemAcces,
}),
}));
const probeHDCPPolicy = (await vi.importActual("../../probers/HDCPPolicy"))
.default as typeof IProbeHDCPPolicy;
await probeHDCPPolicy("1.1").then(
() => {
throw new Error("Should not have succeeded");
},
(err: unknown) => {
expect(err).toBeInstanceOf(Error);
expect(mockCreateMediaKeys).toHaveBeenCalledTimes(1);
expect(mockRequestMediaKeySystemAcces).toHaveBeenCalledTimes(1);
},
);
});
it("should resolve with `Supported` if policy is supported", async () => {
const mockCreateMediaKeys = vi.fn(() => {
return Promise.resolve({
getStatusForPolicy: () => Promise.resolve("usable"),
});
});
const mockRequestMediaKeySystemAcces = vi.fn(() => {
return Promise.resolve({
createMediaKeys: mockCreateMediaKeys,
});
});
vi.doMock("../../../../../compat/eme", () => ({
default: () => ({
requestMediaKeySystemAccess: mockRequestMediaKeySystemAcces,
}),
}));
const probeHDCPPolicy = (await vi.importActual("../../probers/HDCPPolicy"))
.default as typeof IProbeHDCPPolicy;
await probeHDCPPolicy("1.1").then((res: string) => {
expect(res).toEqual("Supported");
expect(mockCreateMediaKeys).toHaveBeenCalledTimes(1);
expect(mockRequestMediaKeySystemAcces).toHaveBeenCalledTimes(1);
});
});
it("should resolve with `NotSupported` if policy is not supported", async () => {
const mockCreateMediaKeys = vi.fn(() => {
return Promise.resolve({
getStatusForPolicy: () => Promise.resolve("not-usable"),
});
});
const mockRequestMediaKeySystemAcces = vi.fn(() => {
return Promise.resolve({
createMediaKeys: mockCreateMediaKeys,
});
});
vi.doMock("../../../../../compat/eme", () => ({
default: () => ({
requestMediaKeySystemAccess: mockRequestMediaKeySystemAcces,
}),
}));
const probeHDCPPolicy = (await vi.importActual("../../probers/HDCPPolicy"))
.default as typeof IProbeHDCPPolicy;
await probeHDCPPolicy("1.1").then((res: string) => {
expect(res).toEqual("NotSupported");
expect(mockCreateMediaKeys).toHaveBeenCalledTimes(1);
expect(mockRequestMediaKeySystemAcces).toHaveBeenCalledTimes(1);
});
});
});