75 lines
2.4 KiB
TypeScript
75 lines
2.4 KiB
TypeScript
|
import { mock } from "jest-mock-extended";
|
||
|
|
||
|
import {
|
||
|
AssertCredentialResult,
|
||
|
CreateCredentialResult,
|
||
|
} from "@bitwarden/common/vault/abstractions/fido2/fido2-client.service.abstraction";
|
||
|
|
||
|
export function createCredentialCreationOptionsMock(
|
||
|
customFields: Partial<CredentialCreationOptions> = {},
|
||
|
): CredentialCreationOptions {
|
||
|
return mock<CredentialCreationOptions>({
|
||
|
publicKey: mock<PublicKeyCredentialCreationOptions>({
|
||
|
authenticatorSelection: { authenticatorAttachment: "platform" },
|
||
|
excludeCredentials: [{ id: new ArrayBuffer(32), type: "public-key" }],
|
||
|
pubKeyCredParams: [{ alg: -7, type: "public-key" }],
|
||
|
user: { id: new ArrayBuffer(32), name: "test", displayName: "test" },
|
||
|
}),
|
||
|
...customFields,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export function createCreateCredentialResultMock(
|
||
|
customFields: Partial<CreateCredentialResult> = {},
|
||
|
): CreateCredentialResult {
|
||
|
return mock<CreateCredentialResult>({
|
||
|
credentialId: "mock",
|
||
|
clientDataJSON: "mock",
|
||
|
attestationObject: "mock",
|
||
|
authData: "mock",
|
||
|
publicKey: "mock",
|
||
|
publicKeyAlgorithm: -7,
|
||
|
transports: ["internal"],
|
||
|
...customFields,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export function createCredentialRequestOptionsMock(
|
||
|
customFields: Partial<CredentialRequestOptions> = {},
|
||
|
): CredentialRequestOptions {
|
||
|
return mock<CredentialRequestOptions>({
|
||
|
mediation: "optional",
|
||
|
publicKey: mock<PublicKeyCredentialRequestOptions>({
|
||
|
allowCredentials: [{ id: new ArrayBuffer(32), type: "public-key" }],
|
||
|
}),
|
||
|
...customFields,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export function createAssertCredentialResultMock(
|
||
|
customFields: Partial<AssertCredentialResult> = {},
|
||
|
): AssertCredentialResult {
|
||
|
return mock<AssertCredentialResult>({
|
||
|
credentialId: "mock",
|
||
|
clientDataJSON: "mock",
|
||
|
authenticatorData: "mock",
|
||
|
signature: "mock",
|
||
|
userHandle: "mock",
|
||
|
...customFields,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export function setupMockedWebAuthnSupport() {
|
||
|
(globalThis as any).PublicKeyCredential = class PolyfillPublicKeyCredential {
|
||
|
static isUserVerifyingPlatformAuthenticatorAvailable = () => Promise.resolve(true);
|
||
|
};
|
||
|
(globalThis as any).AuthenticatorAttestationResponse =
|
||
|
class PolyfillAuthenticatorAttestationResponse {};
|
||
|
(globalThis as any).AuthenticatorAssertionResponse =
|
||
|
class PolyfillAuthenticatorAssertionResponse {};
|
||
|
(globalThis as any).navigator.credentials = {
|
||
|
create: jest.fn().mockResolvedValue({}),
|
||
|
get: jest.fn().mockResolvedValue({}),
|
||
|
};
|
||
|
}
|