package lkgateway import ( "strings" "testing" "git.zetit.ru/zuevav/Bridge-and-Join-s/internal/nsdxml" ) func validPF() participantFormData { return participantFormData{ INN: "7703807489", FullName: `ООО "Фонтвьель"`, ShortName: "Фонтвьель", DisplayName: "Фонтвьель", DepoCode: "MC0413600000", } } func TestParticipantFormValidate(t *testing.T) { if errs := participantFormValidate(validPF()); len(errs) != 0 { t.Fatalf("корректная анкета должна проходить, получили: %v", errs) } bad := validPF() bad.INN = "770380748" // 9 цифр if errs := participantFormValidate(bad); len(errs) == 0 { t.Fatal("ИНН из 9 цифр должен отклоняться") } bad = validPF() bad.DepoCode = "XX0413600000" if errs := participantFormValidate(bad); len(errs) == 0 { t.Fatal("код не в формате MC+10 должен отклоняться") } bad = validPF() bad.DisplayName = "" if errs := participantFormValidate(bad); len(errs) == 0 { t.Fatal("пустой DisplayName должен отклоняться") } bad = validPF() bad.BrokerCode = "MC12" // неверный формат if errs := participantFormValidate(bad); len(errs) == 0 { t.Fatal("неверный код брокера должен отклоняться") } } func TestParticipantFormXML(t *testing.T) { x := participantFormXML(validPF()) for _, want := range []string{ `encoding="windows-1251"`, `7703807489`, ``, `MC0413600000`, `(МСК)`, } { if !strings.Contains(x, want) { t.Errorf("XML должен содержать %q\n---\n%s", want, x) } } if strings.Contains(x, "") { t.Error("без англ. полей блок Eng не должен появляться") } if strings.Contains(x, "") { t.Error("без кода брокера блок BrokerPlace не должен появляться") } // С англ. и брокером — блоки появляются. d := validPF() d.EngFull, d.BrokerCode = "Fontvielle LLC", "MC0413600001" x2 := participantFormXML(d) if !strings.Contains(x2, "") || !strings.Contains(x2, "Fontvielle LLC") { t.Error("с англ. наименованием блок Eng обязателен") } if !strings.Contains(x2, "") || !strings.Contains(x2, "MC0413600001") { t.Error("с кодом брокера блок BrokerPlace обязателен") } } func TestParticipantFormBytesCP1251(t *testing.T) { b, err := participantFormBytes(validPF()) if err != nil { t.Fatal(err) } // Декод обратно из 1251 — кириллица восстанавливается. got := string(nsdxml.DecodeWindows1251(b)) if !strings.Contains(got, `ООО "Фонтвьель"`) { t.Errorf("после cp1251 round-trip потеряна кириллица:\n%s", got) } } func TestBuildMIMEAttach(t *testing.T) { msg := string(buildMIMEAttach("a@b.ru", []string{"M2MOST@nsd.ru"}, "Тема", "тело", "form.xml", []byte(""), "application/xml")) for _, want := range []string{ "multipart/mixed; boundary=", "Content-Disposition: attachment; filename=\"form.xml\"", "Content-Transfer-Encoding: base64", "To: M2MOST@nsd.ru", } { if !strings.Contains(msg, want) { t.Errorf("MIME должен содержать %q", want) } } }