Files
zuevav da12a9ec1c feat(bj): модуль ЛК на PostgreSQL, обмен с DEPO, боевой ЛК с имитатором НРД, QUIK, НПР
- bj_exchange и «кран» Fancy убраны: данные модуля ЛК в PostgreSQL (схема lk)
- трансферные таблицы FTV_M2M: создание при установке, события, справочник участников
- сверка с DEPO: счёт, ФИО, дата рождения, ИИС по договору, квал-инвестор из опции DEPO
- боевой ЛК ЕСИА Финанс при тестовом ИШ: журнал, отказ через DEPO, статусы в ЛК
- онлайн-лицензирование в bj, план тестирования M2M для контрагента (интерактивный HTML)
- модули QUIK МНП, экспорт QUIK, НПР/УДС; документы и тестовые материалы

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 19:41:12 +03:00

39 lines
1.6 KiB
Go

package lkgateway
import (
"strings"
"testing"
)
func TestDepoTablesScript(t *testing.T) {
ms := depoTablesScript(FancyMSSQLSettings{User: "bj_user", DepoDatabase: "DEPO"})
for _, want := range []string{"USE [DEPO];", "CREATE TABLE dbo.FTV_M2M (", "CREATE TABLE dbo.FTV_M2M_HANDBOOK (", "\nGO\n",
"IF COL_LENGTH(N'dbo.FTV_M2M_LINES', N'SHARE') IS NULL ALTER TABLE", "GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.FTV_M2M_EVENTS TO [bj_user]",
"STATE varchar(64) NOT NULL CONSTRAINT DF_FTV_M2M_STATE DEFAULT ('TODO')"} {
if !strings.Contains(ms, want) {
t.Errorf("MSSQL: нет %q", want)
}
}
if n := strings.Count(ms, "CREATE TABLE "); n != len(depoTableSpecs) {
t.Errorf("MSSQL: CREATE TABLE %d, ожидали %d", n, len(depoTableSpecs))
}
pg := depoTablesScript(FancyMSSQLSettings{DBType: "postgres", User: "bj_user"})
for _, want := range []string{"CREATE TABLE IF NOT EXISTS FTV_M2M (", "ID integer GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY",
"ADD COLUMN IF NOT EXISTS SHARE integer NULL", `GRANT SELECT, INSERT, UPDATE, DELETE ON FTV_M2M, FTV_M2M_LINES, FTV_M2M_EVENTS, FTV_M2M_HANDBOOK TO "bj_user"`,
"-d BJ_DEPO_DATA"} {
if !strings.Contains(pg, want) {
t.Errorf("PostgreSQL: нет %q", want)
}
}
for _, bad := range []string{"\nGO\n", "dbo.", "GETDATE", "varchar(max)", "uniqueidentifier"} {
if strings.Contains(pg, bad) {
t.Errorf("PostgreSQL: лишнее %q", bad)
}
}
if g := depoTablesGrantSQL(false, "bj]; DROP TABLE x;--"); g != nil {
t.Errorf("логин с недопустимыми символами не должен попадать в GRANT: %v", g)
}
}