Мастер настройки — 4 главы (Сервер, Учёт и организация, НРД, Запуск) вместо 10 шагов: в пути только нужное этой установке — без лицензии учёта DEPO, QUIK и модулей их шагов нет, сделанное установщиком (база, Валидата) показано строкой; общая навигация «Назад/Далее»; раздел «Время и сеть» с часовым поясом; модули по лицензии (кабинет, ЕСИА Финанс, экспорт QUIK, НПР) с переходом в раздел и возвратом в мастер; «Проверить всю цепочку» (DEPO, QUIK, пробная блокировка по желанию, подпись, НРД); готовые письма в НРД, ARQA и администратору DEPO; ИШ с образа без интернета
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -3,6 +3,7 @@ package lkgateway
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
@@ -182,3 +183,56 @@ func TestKeyArchiveContour(t *testing.T) {
|
||||
t.Fatalf("боевой сертификат: %q", c)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWizardChaptersWithoutLicense(t *testing.T) {
|
||||
rc, _ := NewRuntimeConfig(t.TempDir() + "/setup.json")
|
||||
done := map[int]bool{2: true, 6: true}
|
||||
path, chapters := wizPath(rc, done, 4)
|
||||
want := []int{1, 12, 4, 7, 8, 9, 10} // без лицензии нет учёта DEPO, QUIK и модулей; база и Валидата — сделаны
|
||||
if fmt.Sprint(path) != fmt.Sprint(want) {
|
||||
t.Fatalf("путь %v, ожидался %v", path, want)
|
||||
}
|
||||
if len(chapters) != 4 || !chapters[1].Current || chapters[1].Steps[0].N != 4 {
|
||||
t.Fatalf("главы: %+v", chapters)
|
||||
}
|
||||
if p, n := wizNeighbours(path, 4); p != 12 || n != 7 {
|
||||
t.Fatalf("соседи шага 4: %d %d", p, n)
|
||||
}
|
||||
if d := wizDefaultStep(path, map[int]bool{1: true, 4: false}); d != 4 {
|
||||
t.Fatalf("по умолчанию: %d", d)
|
||||
}
|
||||
all := map[int]bool{}
|
||||
for _, n := range path {
|
||||
all[n] = true
|
||||
}
|
||||
if d := wizDefaultStep(path, all); d != 10 {
|
||||
t.Fatalf("всё сделано — проверка, а не %d", d)
|
||||
}
|
||||
if len(wizModuleViews(rc, rc.Snapshot())) != 0 {
|
||||
t.Fatal("без лицензии модулей в мастере быть не должно")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLettersFill(t *testing.T) {
|
||||
var s Settings
|
||||
s.NSD.OrgName, s.NSD.OrgINN, s.NSD.OrgCode = "АО «Тест»", "7700000001", "MC0000000001"
|
||||
s.NSD.DeponentCode, s.NSD.AccountID, s.NSD.SectionID = "MC0000000001", "HL000000001C", "36MC0000000001F00"
|
||||
s.Fancy.Server = "sql.example"
|
||||
for _, k := range []string{"nsd-test", "nsd-prod", "arqa", "dba"} {
|
||||
l, ok := letterFor(s, k)
|
||||
if !ok || !strings.Contains(l.Body, "АО «Тест»") || l.Subject == "" {
|
||||
t.Errorf("%s: %+v", k, l)
|
||||
}
|
||||
}
|
||||
l, _ := letterFor(s, "nsd-test")
|
||||
if !strings.Contains(l.Body, "HL000000001C") || !strings.Contains(l.Body, "ГОСТ") {
|
||||
t.Error("в письме НРД нет реквизитов")
|
||||
}
|
||||
s.Fancy.DBType = "postgres"
|
||||
if l, _ := letterFor(s, "dba"); strings.Contains(l.Body, "SQL Server Agent") || !strings.Contains(l.Body, "postgres") {
|
||||
t.Error("письмо администратору PostgreSQL не должно говорить о SQL Agent")
|
||||
}
|
||||
if _, ok := letterFor(s, "nope"); ok {
|
||||
t.Error("неизвестное письмо")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user