fix(emulators): подмена личности в НРД гаснет по окончании dev-режима

disableEmulatorsIfDevOff сбрасывал только LK.EmulateNSD / Quik.Emulate /
Quik.RealWrite, но не LK.RealNSDTest.Enabled (тест «боевой ЛК → TEST3»).
Из-за этого после истечения dev-режима подмена инвестора оставалась включённой,
а клиент без доступа к dev-вкладкам не мог вернуть стандартный режим.

Теперь сброс LK объединён в одно обновление и гасит и подмену (список паспортов
сохраняется). + тест TestDisableEmulatorsIfDevOffRealNSD.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
fontvielle
2026-10-12 21:15:49 +03:00
parent bb103e9f98
commit fe005c0422
2 changed files with 55 additions and 8 deletions
+37
View File
@@ -302,6 +302,43 @@ func TestDisableEmulatorsIfDevOffNoOp(t *testing.T) {
}
}
// Подмена личности в НРД («боевой ЛК → TEST3») тоже гаснет по окончании dev-режима:
// иначе клиент без доступа к dev-вкладкам не вернул бы стандартный режим.
func TestDisableEmulatorsIfDevOffRealNSD(t *testing.T) {
rc := rcWithExpiredDev(t)
s := rc.Snapshot()
s.LK.RealNSDTest.Enabled = true
s.LK.RealNSDTest.Docs = "1110 754503"
if err := rc.UpdateLK(s.LK); err != nil {
t.Fatal(err)
}
disableEmulatorsIfDevOff(rc)
if rc.Snapshot().LK.RealNSDTest.Enabled {
t.Fatal("подмена личности не сброшена")
}
// Паспорта клиентов сохраняем — сбрасываем только включатель.
if rc.Snapshot().LK.RealNSDTest.Docs != "1110 754503" {
t.Errorf("список паспортов не должен затираться: %q", rc.Snapshot().LK.RealNSDTest.Docs)
}
// На диске тоже выключено — при следующем dev-режиме подмена сама не оживёт.
rc2, err := NewRuntimeConfig(rc.path)
if err != nil {
t.Fatal(err)
}
if rc2.Snapshot().LK.RealNSDTest.Enabled {
t.Fatal("в setup.json подмена осталась включённой")
}
found := false
for _, n := range rc.Snapshot().News.Items {
if strings.Contains(n.Title, "Эмуляторы отключены") && strings.Contains(n.Body, "подмена личности") {
found = true
}
}
if !found {
t.Error("в новости не упомянуто отключение подмены личности")
}
}
// Режимы МНП взаимоисключающие: хендлер выставляет Emulate/RealWrite по выбранному режиму.
func TestEmulatorsQuikModes(t *testing.T) {
devModeForced = true