fix(build): гейт ACME описывал снятую архитектуру панели
Приёмка требовала, чтобы страница Hysteria содержала жёсткий список ACME DNS-провайдеров (cloudflare … vultr) и не содержала удалённого upstream namedotcom. Это имело смысл, пока панель ПРЕДЛАГАЛА выбор провайдера: список в UI был вторым экземпляром upstream-реестра и мог от него отстать — ровно так namedotcom и пришлось выпиливать вручную. После перевода страницы в read-only диагностику реестра нет и быть не должно: имя провайдера читается из фактического конфига и показывается как есть, поэтому новый upstream-провайдер отображается без правок панели. Возврат списка ради прохождения grep-а создал бы фиктивный реестр, существующий только для гейта. Гейт проверяет действующий контракт: провайдер приходит строкой и рисуется как значение, параметры DNS отдаются только именами, селектора на странице нет. Проверено положительно и на трёх нарушениях (провайдер перестал показываться, на странице появился селектор, тип стал перечислением) — гейт падает на каждом. Контрактный тест панели дополнен обратной проверкой: ни одно из восьми имён провайдеров не должно встречаться в исходнике страницы. Та же формулировка поправлена в матрице приёмки. Дополнительно прогнаны целиком все восемь функций приёмки, которым не нужен распакованный пакет: других устаревших утверждений нет.
This commit is contained in:
@@ -601,6 +601,42 @@ describe("страница конфигурации Hysteria", () => {
|
||||
}
|
||||
});
|
||||
|
||||
// Имя ACME DNS-провайдера показывается как ФАКТИЧЕСКОЕ значение профиля.
|
||||
//
|
||||
// Прежняя страница несла жёсткий список провайдеров, то есть второй экземпляр
|
||||
// upstream-реестра, который мог от него отстать: `namedotcom` пришлось
|
||||
// выпиливать вручную после удаления в Hysteria 2.11.0. Панель больше ничего
|
||||
// не предлагает — конфигом владеет оркестратор, — поэтому реестра в UI нет и
|
||||
// быть не должно: новый upstream-провайдер отображается без правок панели.
|
||||
test("ACME DNS provider показывается как фактическое значение профиля", () => {
|
||||
const source = vueCodeOf(configPage());
|
||||
const types = codeOf(configTypes());
|
||||
|
||||
expect(source).toContain("profile.acme.dnsProvider");
|
||||
expect(source).toContain("text(profile.acme.dnsProvider)");
|
||||
expect(types).toContain("dnsProvider: string | null");
|
||||
|
||||
// Реестр провайдеров в панели не возвращается ни под каким видом.
|
||||
for (const provider of [
|
||||
"cloudflare",
|
||||
"duckdns",
|
||||
"gandi",
|
||||
"godaddy",
|
||||
"namecheap",
|
||||
"njalla",
|
||||
"porkbun",
|
||||
"vultr",
|
||||
"namedotcom",
|
||||
]) {
|
||||
expect(source).not.toContain(`"${provider}"`);
|
||||
}
|
||||
|
||||
// Значения параметров DNS — ключ от DNS-зоны: read-only экран получает
|
||||
// только их имена.
|
||||
expect(types).toContain("dnsConfigKeys: string[]");
|
||||
expect(types).not.toMatch(/dnsConfig:\s*(Record|\{)/);
|
||||
});
|
||||
|
||||
// Компоненты генерического редактора удалены вместе со страницей: пока они
|
||||
// существуют, «универсальный редактор Hysteria» отрастает заново.
|
||||
test("компоненты генерического редактора удалены", () => {
|
||||
|
||||
Reference in New Issue
Block a user