"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CertificateHelper = void 0;
const test_1 = require("@playwright/test");
const test_errors_1 = require("../../../utils/test-errors");
const BasePage_locators_1 = require("../BasePage.locators");
class CertificateHelper {
    constructor(page) {
        this.page = page;
        const locators = (0, BasePage_locators_1.createBasePageLocators)(page);
        this.SignWithCertificateWindow = locators.SignWithCertificateWindow;
    }
    /**
    * Выбор и подписание сертификатом пользователя
    */
    async chooseCertificateAndSign(certHolder) {
        await test_1.test.step(`Подписание сертификатом пользователя ${certHolder}`, async () => {
            await test_1.test.step(`Проверка видимости окна работы с сертификатами`, async () => {
                try {
                    await (0, test_1.expect)(this.SignWithCertificateWindow.SignWithCertificateModalWindow).toBeVisible();
                }
                catch (error) {
                    throw test_errors_1.ErrorFactory.authentication('certificate', 'Модальное окно выбора сертификата не найдено', undefined, { certHolder });
                }
            });
            await test_1.test.step(`Поиск и выбор сертификата пользователя ${certHolder}`, async () => {
                await this.SignWithCertificateWindow.SearchCertificateButton.click();
                await this.SignWithCertificateWindow.SearchCertificateInput.fill(certHolder);
                try {
                    await this.page.getByText(certHolder).click();
                }
                catch (error) {
                    throw test_errors_1.ErrorFactory.authentication('certificate', 'Не удалось выбрать сертификат пользователя', undefined, { certHolder });
                }
            });
            await test_1.test.step(`Подписание`, async () => {
                try {
                    await (0, test_1.expect)(this.SignWithCertificateWindow.SignWithCertificateButton).toBeEnabled();
                    await this.SignWithCertificateWindow.SignWithCertificateButton.click();
                    await (0, test_1.expect)(this.SignWithCertificateWindow.SignWithCertificateModalWindow).toBeHidden();
                }
                catch (error) {
                    throw test_errors_1.ErrorFactory.authentication('certificate', `Ошибка при подписании сертификатом ${certHolder}`, undefined, { certHolder });
                }
            });
        });
    }
}
exports.CertificateHelper = CertificateHelper;
