Ctrl K
ComunidadGuías…

test/admin-settings-email.test.js

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
var test = require('node:test');
var assert = require('node:assert/strict');
var fs = require('node:fs');
var path = require('node:path');
var playwright = require('playwright');

test('SMTP opens as a summary and preserves draft, secret and cancellation contracts', async function (t) {
  var browser = await playwright.chromium.launch();
  t.after(function () { return browser.close(); });
  var page = await browser.newPage();
  await page.setContent('<div id="body"></div>');
  await page.addScriptTag({ content: fs.readFileSync(path.join(__dirname, '../lib/public/modules/store.js'), 'utf8').replace(/export \{[^}]+\};?/g, '') });
  await page.evaluate(function () {
    window.cfg = {host:'smtp.example.com',port:587,user:'user',pass:'••••••••',from:'mail@example.com'};
    window.apiGet = async function () { return {smtp: window.cfg}; };
    window.apiPost = async function (url, data) { window.saved = data; return window.fail ? {error:'Save failed'} : {ok:true}; };
    window.escapeHtml = function (value) { var el = document.createElement('span'); el.textContent = value; return el.innerHTML; };
    window.iconHtml = function () {return '';};
    window.refreshIcons = window.showToast = function () {};
    window.setSettingsDraft = function () {store.set({serverSettingsDrafts:{smtp:true}});};
    window.clearSettingsDraft = function () {store.set({serverSettingsDrafts:{}});};
    window.showConfirmDialog = function (message, title, callback) {window.confirmation = callback;};
  });
  await page.addScriptTag({content:fs.readFileSync(path.join(__dirname, '../lib/public/modules/admin-settings-email.js'), 'utf8').replace(/^import .*$/gm, '').replace(/export /g, '')});
  await page.evaluate(function () {loadSmtpTab(document.querySelector('#body'));});
  await page.locator('#smtp-edit').waitFor();
  assert.equal(await page.locator('input').count(), 0);
  assert.match(await page.locator('#body').textContent(), /Configured · hidden/);
  await page.locator('#smtp-edit').click();
  assert.equal(await page.evaluate(function () {return document.activeElement.id;}), 'smtp-host');
  await page.locator('#smtp-host').fill('changed.example.com');
  await page.locator('#smtp-cancel').click();
  assert.equal(await page.locator('#smtp-host').inputValue(), 'changed.example.com');
  await page.evaluate(function () {window.confirmation();});
  assert.equal(await page.evaluate(function () {return document.activeElement.id;}), 'smtp-edit');
  await page.locator('#smtp-edit').click();
  assert.equal(await page.locator('#smtp-host').inputValue(), 'smtp.example.com');
  await page.locator('#smtp-host').fill('saved.example.com');
  await page.evaluate(function () {window.fail = true;});
  await page.locator('#smtp-save').click();
  await page.locator('#smtp-error').filter({hasText:'Save failed'}).waitFor();
  assert.equal(await page.locator('#smtp-host').inputValue(), 'saved.example.com');
  assert.equal(await page.evaluate(function () {return store.get('serverSettingsDrafts').smtp;}), true);
  await page.evaluate(function () {window.fail = false;});
  await page.locator('#smtp-save').click();
  await page.locator('#smtp-edit').waitFor();
  assert.equal(await page.locator('input').count(), 0);
  assert.match(await page.locator('#body').textContent(), /saved.example.com/);
  await page.locator('#smtp-edit').click();
  assert.equal(await page.locator('#smtp-pass').inputValue(), '••••••••');
  await page.locator('#smtp-save').click();
  await page.locator('#smtp-edit').waitFor();
  assert.equal(await page.evaluate(function () {return window.saved.pass;}), '••••••••');
  await page.locator('#smtp-edit').click();
  await page.locator('#smtp-remove').click();
  await page.evaluate(function () {window.confirmation();});
  await page.locator('#smtp-edit').waitFor();
  assert.match(await page.locator('#body').textContent(), /SMTP is not configured/);
  assert.equal(await page.locator('input').count(), 0);
  await page.locator('#smtp-edit').click();
  assert.equal(await page.locator('#smtp-host').inputValue(), '');
  await page.locator('#smtp-cancel').click();
  assert.equal(await page.locator('input').count(), 0);
});