/**
 * Copyright © 2024 Nevis Security AG. All rights reserved.
 */

import { PasswordUserVerificationError } from './PasswordUserVerificationError';
import { PasswordUserVerificationInvalidPassword } from './PasswordUserVerificationInvalidPassword';
import { ErrorConverter } from '../ErrorConverter';

enum PasswordUserVerificationErrorType {
	InvalidPassword,
}

export class PasswordUserVerificationErrorConverter extends ErrorConverter<PasswordUserVerificationError> {
	convert(): PasswordUserVerificationError {
		const subtype =
			PasswordUserVerificationErrorType[
				this.error.type as keyof typeof PasswordUserVerificationErrorType
			];
		if (subtype !== PasswordUserVerificationErrorType.InvalidPassword) {
			throw new Error(`Unsupported password user verification error (${subtype})`);
		}

		return new PasswordUserVerificationInvalidPassword(
			this.error.description,
			this.error.cause
		);
	}
}
