fix(build): гейт ACME описывал снятую архитектуру панели
Приёмка требовала, чтобы страница Hysteria содержала жёсткий список ACME DNS-провайдеров (cloudflare … vultr) и не содержала удалённого upstream namedotcom. Это имело смысл, пока панель ПРЕДЛАГАЛА выбор провайдера: список в UI был вторым экземпляром upstream-реестра и мог от него отстать — ровно так namedotcom и пришлось выпиливать вручную. После перевода страницы в read-only диагностику реестра нет и быть не должно: имя провайдера читается из фактического конфига и показывается как есть, поэтому новый upstream-провайдер отображается без правок панели. Возврат списка ради прохождения grep-а создал бы фиктивный реестр, существующий только для гейта. Гейт проверяет действующий контракт: провайдер приходит строкой и рисуется как значение, параметры DNS отдаются только именами, селектора на странице нет. Проверено положительно и на трёх нарушениях (провайдер перестал показываться, на странице появился селектор, тип стал перечислением) — гейт падает на каждом. Контрактный тест панели дополнен обратной проверкой: ни одно из восьми имён провайдеров не должно встречаться в исходнике страницы. Та же формулировка поправлена в матрице приёмки. Дополнительно прогнаны целиком все восемь функций приёмки, которым не нужен распакованный пакет: других устаревших утверждений нет.
This commit is contained in:
@@ -205,15 +205,41 @@ run_fix20_acceptance_subset() {
|
||||
grep -q 'GetRawHysteria2Config' apps/service/hysteria2_export.go \
|
||||
|| fail "acceptance: export must read the raw YAML instead of the typed model"
|
||||
|
||||
log_step "Acceptance: frontend ACME registry matches current upstream"
|
||||
# Ищем именно предлагаемое значение, а не упоминание в комментарии.
|
||||
! grep -q '"namedotcom"' apps/frontend/src/views/hysteria/list/index.vue \
|
||||
|| fail "acceptance: namedotcom was removed upstream in Hysteria 2.11.0 and must not be offered"
|
||||
local provider
|
||||
for provider in cloudflare duckdns gandi godaddy namecheap njalla porkbun vultr; do
|
||||
grep -q "\"${provider}\"" apps/frontend/src/views/hysteria/list/index.vue \
|
||||
|| fail "acceptance: ACME DNS provider ${provider} is missing from the UI registry"
|
||||
done
|
||||
log_step "Acceptance: frontend ACME diagnostics preserve upstream provider names"
|
||||
# Этот гейт проверял НЕ ТО, и его предмет исчез вместе с прежней страницей.
|
||||
#
|
||||
# Раньше он требовал, чтобы `apps/frontend/src/views/hysteria/list/index.vue`
|
||||
# содержал жёстко заданный список ACME DNS-провайдеров
|
||||
#
|
||||
# cloudflare duckdns gandi godaddy namecheap njalla porkbun vultr
|
||||
#
|
||||
# и не содержал `namedotcom`, удалённый upstream в Hysteria 2.11.0. Это имело
|
||||
# смысл ровно до тех пор, пока панель ПРЕДЛАГАЛА оператору выбор провайдера:
|
||||
# список в UI был вторым экземпляром upstream-реестра и мог от него отстать.
|
||||
#
|
||||
# Панель больше ничего не предлагает: конфигом владеет оркестратор, маршрутов
|
||||
# записи в API нет, а страница Hysteria стала read-only диагностикой. Имя
|
||||
# провайдера читается из фактического конфига и показывается как есть, поэтому
|
||||
# реестра в UI нет и быть не должно — новый upstream-провайдер отображается
|
||||
# без единой правки панели.
|
||||
#
|
||||
# Возврат старого списка ради прохождения этого grep'а создал бы фиктивный
|
||||
# реестр, существующий только для гейта. Поэтому проверяется действующий
|
||||
# контракт: провайдер приходит из профиля строкой и рисуется как значение.
|
||||
local hysteria_page="apps/frontend/src/views/hysteria/list/index.vue"
|
||||
local hysteria_types="apps/frontend/src/api/config/types.ts"
|
||||
|
||||
code_has "$hysteria_page" -F -- 'text(profile.acme.dnsProvider)' \
|
||||
|| fail "acceptance: the panel must render the ACME DNS provider reported by the backend"
|
||||
code_has "$hysteria_types" -E -- 'dnsProvider:[[:space:]]*string[[:space:]]*\|[[:space:]]*null' \
|
||||
|| fail "acceptance: the ACME profile must carry the provider name as a generic string"
|
||||
# Значения параметров DNS-провайдера — ключ от DNS-зоны, и read-only экрану
|
||||
# они не нужны: показываются только имена.
|
||||
code_has "$hysteria_types" -F -- 'dnsConfigKeys: string[]' \
|
||||
|| fail "acceptance: the ACME DNS parameters must be exposed as key names only"
|
||||
# Селектор провайдера означал бы возврат к «панель владеет конфигом».
|
||||
! code_has "$hysteria_page" -F -- '<el-select' \
|
||||
|| fail "acceptance: the Hysteria diagnostics page must remain read-only"
|
||||
|
||||
log_step "Acceptance: systemd unit production env"
|
||||
grep -q '^Environment=GIN_MODE=release$' "$package_dir/systemd/hy2xs-admin.service" || fail "acceptance: GIN_MODE=release missing"
|
||||
|
||||
Reference in New Issue
Block a user