Ключ подписи ставится прямо в мастере (шаг «Ключ подписи»), а не на отдельной странице

- Мастер установки ключа — общий блок part_keywiz.html: на шаге мастера и на
  странице /admin/setup/keywizard. Формы возвращают туда, откуда открыли (ret=
  wizard), с выбранным контуром; вид — как у мастера.
- «Установить ключ» у канала на шаге «Шлюз НРД» ведёт на шаг «Ключ подписи» с
  контуром этого канала.
- Подсказка «сначала установите шлюз» — по установленному ИШ (раньше — по
  готовности шлюза, которая сама требует ключа).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-06 17:50:34 +03:00
parent 71be8f2052
commit 5af3c5e3ba
7 changed files with 183 additions and 121 deletions
+16
View File
@@ -758,3 +758,19 @@ func TestIgateInstallStatus(t *testing.T) {
t.Fatalf("готово: %+v", st)
}
}
// Установка ключа из мастера возвращает на шаг «Ключ подписи» (с выбранным контуром), со страницы — на страницу.
func TestKeyWizBack(t *testing.T) {
for form, want := range map[string]string{
"ret=wizard&want=prod": "/admin/wizard?step=8&contour=prod&",
"ret=wizard": "/admin/wizard?step=8&",
"": "/admin/setup/keywizard?",
"want=evil": "/admin/setup/keywizard?",
} {
r := httptest.NewRequest(http.MethodPost, "/admin/setup/keywizard/reset", strings.NewReader(form))
r.Header.Set("Content-Type", "application/x-www-form-urlencoded")
if got := keyWizBack(r); got != want {
t.Errorf("%q: %q, ожидалось %q", form, got, want)
}
}
}