Files
Bridge-and-Join-s/internal/nsdadapter/router_test.go
fontvielle a8cdeeb838 feat(nsd-adapter): REST-клиент ИШ НРД + маршрутизация типов пакетов
- internal/nsdadapter/igw/client.go: REST-клиент ИШ (SendPackage, GetStatus, ListIncoming) с base64-JSON, ретраями на 5xx, 4xx без ретраев
- internal/nsdadapter/router.go: маршрутизация MessageKind -> PackageType ЭДО (#M2MTR, #M2MTD, #M2MER, SUBBR/SUBER/SUB16, Assets_investment)
- internal/nsdadapter/sender.go: реализация m2mcore.NSDSender (Send/SendDecision) через REST ИШ, сериализация Request/Decision в windows-1251
- internal/nsdadapter/config.go: профили guest/test3/prod × gost/rsa (URL ИШ, канал, контейнер ключа, retry)
- internal/nsdadapter/onyx/onyx.go: скелет резервного канала WS ONYX (ждёт PR-6 crypto-service для подписи)
- cmd/nsd-adapter/main.go: HTTP /healthz + фоновый поллер входящих по типам ЭДО; idle-режим без BJ_NSD_PROFILE

make ci зелёный. Без внешних Go-зависимостей.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:55:20 +03:00

65 lines
1.8 KiB
Go

package nsdadapter_test
import (
"testing"
"git.zetit.ru/zuevav/Bridge-and-Join-s/internal/nsdadapter"
)
func TestRouteToPackageType(t *testing.T) {
cases := []struct {
kind nsdadapter.MessageKind
want nsdadapter.PackageType
}{
{nsdadapter.KindTransferRequest, nsdadapter.PackageM2MTransferRequest},
{nsdadapter.KindTransferDecision, nsdadapter.PackageM2MTransferDecision},
{nsdadapter.KindTransferResponse, nsdadapter.PackageM2MTransferError},
}
for _, c := range cases {
got, err := nsdadapter.RouteToPackageType(c.kind)
if err != nil {
t.Errorf("kind=%s ошибка: %v", c.kind, err)
continue
}
if got != c.want {
t.Errorf("kind=%s: получено %s, ожидалось %s", c.kind, got, c.want)
}
}
}
func TestRouteToPackageTypeUnknown(t *testing.T) {
if _, err := nsdadapter.RouteToPackageType("unknown"); err == nil {
t.Error("ожидалась ошибка на неизвестный kind")
}
}
func TestIncomingPackageKindsContainsExpected(t *testing.T) {
kinds := nsdadapter.IncomingPackageKinds()
want := map[nsdadapter.PackageType]bool{
nsdadapter.PackageM2MTransferDecision: true,
nsdadapter.PackageSUB16: true,
}
for _, k := range kinds {
delete(want, k)
}
if len(want) > 0 {
t.Errorf("в IncomingPackageKinds не хватает: %v", want)
}
}
func TestLookupProfile(t *testing.T) {
for _, name := range []string{"guest-gost", "test3-rsa", "prod-gost"} {
p, err := nsdadapter.LookupProfile(name)
if err != nil {
t.Errorf("LookupProfile(%s): %v", name, err)
continue
}
if p.Name != name {
t.Errorf("LookupProfile(%s).Name = %s", name, p.Name)
}
}
if _, err := nsdadapter.LookupProfile("unknown"); err == nil {
t.Error("ожидалась ошибка на неизвестный профиль")
}
}