a8cdeeb838
- 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>
65 lines
1.8 KiB
Go
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("ожидалась ошибка на неизвестный профиль")
|
|
}
|
|
}
|