github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/parser/parser_test.go (about) 1 package parser 2 3 import ( 4 "fmt" 5 "testing" 6 ) 7 8 const xmlDoc = ` 9 <?xml version="1.0" encoding="UTF-8"?> 10 <SOAP-ENV:Envelope 11 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 12 <SOAP-ENV:Body> 13 <ns0:resposta 14 xmlns:ns0="http://www.tibco.com/schemas/bws_registro_cbr/Recursos/XSD/Schema.xsd"> 15 <ns0:siglaSistemaMensagem></ns0:siglaSistemaMensagem> 16 <ns0:codigoRetornoPrograma>92</ns0:codigoRetornoPrograma> 17 <ns0:nomeProgramaErro>CBRSR004</ns0:nomeProgramaErro> 18 <ns0:textoMensagemErro>O Numero do Titulo informado nao esta disponivel.</ns0:textoMensagemErro> 19 <ns0:numeroPosicaoErroPrograma>11</ns0:numeroPosicaoErroPrograma> 20 <ns0:codigoTipoRetornoPrograma>0</ns0:codigoTipoRetornoPrograma> 21 <ns0:textoNumeroTituloCobrancaBb></ns0:textoNumeroTituloCobrancaBb> 22 <ns0:numeroCarteiraCobranca>17</ns0:numeroCarteiraCobranca> 23 <ns0:numeroVariacaoCarteiraCobranca>19</ns0:numeroVariacaoCarteiraCobranca> 24 <ns0:codigoPrefixoDependenciaBeneficiario>3851</ns0:codigoPrefixoDependenciaBeneficiario> 25 <ns0:numeroContaCorrenteBeneficiario>8570</ns0:numeroContaCorrenteBeneficiario> 26 <ns0:codigoCliente>932131545</ns0:codigoCliente> 27 <ns0:linhaDigitavel></ns0:linhaDigitavel> 28 <ns0:codigoBarraNumerico></ns0:codigoBarraNumerico> 29 <ns0:codigoTipoEnderecoBeneficiario>0</ns0:codigoTipoEnderecoBeneficiario> 30 <ns0:nomeLogradouroBeneficiario></ns0:nomeLogradouroBeneficiario> 31 <ns0:nomeBairroBeneficiario></ns0:nomeBairroBeneficiario> 32 <ns0:nomeMunicipioBeneficiario></ns0:nomeMunicipioBeneficiario> 33 <ns0:codigoMunicipioBeneficiario>0</ns0:codigoMunicipioBeneficiario> 34 <ns0:siglaUfBeneficiario></ns0:siglaUfBeneficiario> 35 <ns0:codigoCepBeneficiario>0</ns0:codigoCepBeneficiario> 36 <ns0:indicadorComprovacaoBeneficiario></ns0:indicadorComprovacaoBeneficiario> 37 <ns0:numeroContratoCobranca>17414296</ns0:numeroContratoCobranca> 38 </ns0:resposta> 39 </SOAP-ENV:Body> 40 </SOAP-ENV:Envelope> 41 ` 42 43 func TestXmlParser(t *testing.T) { 44 doc, err := ParseXML(xmlDoc) 45 if err != nil { 46 t.Fail() 47 } 48 translator := NewTranslatorMap() 49 translator.AddRule(Rule{XMLQuery: "///ns0:resposta/ns0:codigoRetornoPrograma", MapKey: "returnCode"}) 50 values := ExtractValuesFromXML(doc, translator) 51 for _, rule := range translator.GetRules() { 52 _, ok := values[rule.MapKey] 53 if !ok { 54 t.Fail() 55 } 56 } 57 } 58 59 const errorBB = ` 60 <?xml version="1.0" encoding="UTF-8"?> 61 <SOAP-ENV:Envelope 62 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 63 <SOAP-ENV:Body> 64 <SOAP-ENV:Fault> 65 <faultcode 66 xmlns="">SOAP-ENV:Server 67 </faultcode> 68 <faultstring 69 xmlns="">This is an operation implementation generated fault 70 </faultstring> 71 <faultactor 72 xmlns=""/> 73 <detail 74 xmlns=""> 75 <ns:erro 76 xmlns:xs="http://www.w3.org/2001/XMLSchema" 77 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 78 xmlns:ns="http://www.tibco.com/schemas/bws_registro_cbr/Recursos/XSD/Schema.xsd" 79 xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/"> 80 <ns:Mensagem>Dados de entrada inválidos.</ns:Mensagem> 81 </ns:erro> 82 </detail> 83 </SOAP-ENV:Fault> 84 </SOAP-ENV:Body> 85 </SOAP-ENV:Envelope> 86 ` 87 88 func TestXMLErrorParser(t *testing.T) { 89 doc, err := ParseXML(errorBB) 90 if err != nil { 91 t.Fail() 92 } 93 translator := NewTranslatorMap() 94 translator.AddRule(Rule{XMLQuery: "//////ns:Mensagem", MapKey: "messageString"}) 95 values := ExtractValuesFromXML(doc, translator) 96 fmt.Println(values) 97 for _, rule := range translator.GetRules() { 98 _, ok := values[rule.MapKey] 99 if !ok { 100 t.Fail() 101 } 102 } 103 }