Проверка на чистой ВМ: служба впервые установленного модуля включается в автозапуск, даже если unit-файл уже положил образ (иначе bj-crypto после перезагрузки не стартовал); bj-crypto в готовности — предупреждение, а не блокер (пакеты для НРД подписывает шлюз), до установки модуля не проверяется; в мастере без ссылки «Открыть мастер» на самом мастере, без двойного заголовка «Наша организация», без QUIK и DEPO в текстах и маршрутах уведомлений, если их нет в лицензии; «162 участника», понятная сводка готовности; адрес SMTP через JoinHostPort

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-05 19:04:24 +03:00
parent 1b58b07e02
commit ba1aae705d
11 changed files with 137 additions and 26 deletions
+23
View File
@@ -66,6 +66,29 @@ func TestInstallSplitModuleWithUnit(t *testing.T) {
if inst := LoadInstalled(filepath.Join(root, InstalledFile)); inst["bj-npr"].Version != "0.1.0" {
t.Fatalf("components.json: %+v", inst)
}
if len(res.Enabled) != 1 || res.Enabled[0] != "bj-npr" {
t.Fatalf("служба впервые установленного модуля должна включаться: %+v", res.Enabled)
}
// Повторная установка того же модуля: служба уже стоит и модуль был — автозапуск не трогаем
// (администратор мог выключить службу сам).
res = InstallStaged(stageNPR(t, priv, `{"names":["bj-npr"]}`), InstallOptions{Root: root, PubKey: pub, Units: units})
if !res.OK || len(res.Enabled) != 0 {
t.Fatalf("повторная установка не должна включать службу: %+v", res)
}
// Установка с образа: unit-файл уже положен (выключенным), файла модуля нет — служба включается.
root2 := t.TempDir()
if err := os.MkdirAll(filepath.Join(root2, "/etc/systemd/system"), 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(root2, "/etc/systemd/system/bj-npr.service"), []byte("[Service]\n"), 0o644); err != nil {
t.Fatal(err)
}
res = InstallStaged(stageNPR(t, priv, `{"names":["bj-npr"],"new":["bj-npr"]}`), InstallOptions{Root: root2, PubKey: pub, Units: units})
if !res.OK || len(res.Enabled) != 1 || res.Enabled[0] != "bj-npr" {
t.Fatalf("unit-файл из образа: служба должна включиться при первой установке модуля: %+v", res)
}
// Самостоятельный модуль (не FromCore) по new не ставится.
c, _ := ComponentByName("bj-lk")