UNPKG

ias

Version:

A node client to interface with IAS soap web services

288 lines (248 loc) 9.17 kB
var assert = require('assert'); var xml2js = require('xml2js'); var fs = require('fs'); var path = require('path'); describe('normalize.js', function() { var normalize; var getRatesXmlJs; var contractFormFieldsXmlJs; var contractXmlJs; var sigLocXmlJs; var confirmXmlJs; before(function(done) { normalize = require('../lib/normalize'); var n = 0; function finish() { n++; if (n === 5) { done(); } } var rawxml = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.getRates.xml')); var rawxml2 = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.GetElectronicContractFormFields.xml')); var rawxml3 = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.GenerateElectronicContract.xml')); var rawxml4 = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.GetElectronicContractFormSignatureLocations.xml')); var rawxml5 = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.ConfirmElectronicSignatures.xml')); xml2js.parseString(rawxml.toString(), function(err, data) { getRatesXmlJs = data; finish(); }); xml2js.parseString(rawxml2.toString(), function(err, data) { contractFormFieldsXmlJs = data; finish(); }); xml2js.parseString(rawxml3.toString(), function(err, data) { contractXmlJs = data; finish(); }); xml2js.parseString(rawxml4.toString(), function(err, data) { sigLocXmlJs = data; finish(); }); xml2js.parseString(rawxml5.toString(), function(err, data) { confirmXmlJs = data; finish(); }); }); it('should have 7 functions', function() { var a = 0; Object.keys(normalize).forEach(function(v) { if (typeof normalize[v] === 'function') { a++; } }); assert.equal(a, 7); }); describe('.GetRates', function() { it('should return valid array', function() { var a = normalize.GetRates(getRatesXmlJs); assert(Array.isArray(a)); assert.equal(a[0].PlanID, 'C8012', 'planid'); assert.equal(Object.keys(a[0]).length, 24, 'key length'); }); it('should return null with bad data', function() { var a = normalize.GetRates({}); assert.equal(a, null); }); }); describe('.GetElectronicContractFormFields', function() { it('should return valid array', function() { var a = normalize.GetElectronicContractFormFields(contractFormFieldsXmlJs); assert.equal(typeof a, 'object', 'is object'); assert.equal(Object.keys(a).length, 2, 'keys not 2'); assert.equal(a.TDWRRKVSCP.DEALERNAME, true, '.DEALERNAME'); }); it('should return null with bad data', function() { var a = normalize.GetElectronicContractFormFields({}); assert.equal(a, null); }); }); describe('.GetElectronicContractFormSignatureLocations', function() { it('should return valid array', function() { var a = normalize.GetElectronicContractFormSignatureLocations(sigLocXmlJs); assert.equal(typeof a, 'object', 'is object'); assert.equal(Object.keys(a).length, 2, 'keys not 1'); assert.equal(a.G1GMP.buyerSignature.top, 156, '.G1GMP.buyerSignature.top'); }); it('should return null with bad data', function() { var a = normalize.GetElectronicContractFormSignatureLocations({}); assert.equal(a, null); }); }); describe('.GenerateElectronicContract', function() { var xmljs; before(function(done) { var xml = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.GenerateElectronicContract.nofiles.xml')); xml2js.parseString(xml.toString(), function(err, data) { xmljs = data; done(); }); }); it('should return valid array', function() { var a = normalize.GenerateElectronicContract(contractXmlJs); assert.equal(typeof a, 'object', 'is object'); assert.equal(Object.keys(a).length, 1, 'keys not 1'); assert.equal(a.contractFiles.length, 1, '.contractFiles'); assert.equal(a.contractFiles[0].form, 'G1GMP', 'form name'); }); it('should handle no contracts returned', function() { var a = normalize.GenerateElectronicContract(xmljs); assert.equal(typeof a, 'object', 'is object'); assert.equal(Object.keys(a).length, 1, 'keys not 1'); assert.equal(a.contractFiles.length, 0, '.contractFiles'); }); it('should return null with bad data', function() { var a = normalize.GenerateElectronicContract({}); assert.equal(a, null); }); }); describe('.ConfirmElectronicSignatures', function() { var xmljs; before(function(done) { var xml = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.ConfirmElectronicSignatures.error.xml')); xml2js.parseString(xml.toString(), function(err, data) { xmljs = data; done(); }); }); it('should return valid array', function() { var a = normalize.ConfirmElectronicSignatures(confirmXmlJs); assert.equal(typeof a, 'object', 'is object'); assert.equal(a.success, true, '.success'); }); it('should return null with bad data', function() { var a = normalize.ConfirmElectronicSignatures({}); assert.equal(a, null); }); it('should return error', function() { var a = normalize.ConfirmElectronicSignatures(xmljs); assert.equal(typeof a, 'object', 'is object'); assert.equal(a.success, false, '.success'); }); }); describe('.GetPendingElectronicContracts', function() { var xmljs; before(function(done) { var xml = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.GetPendingElectronicContracts.xml')); xml2js.parseString(xml.toString(), function(err, data) { xmljs = data; done(); }); }); it('should return valid array', function() { var a = normalize.GetPendingElectronicContracts(xmljs); assert.equal(typeof a, 'object', 'is object'); assert.equal(Object.keys(a).length, 1, 'keys not 1'); assert.equal(a.contractFiles.length, 1, '.contractFiles'); }); it('should return null with bad data', function() { var a = normalize.GetPendingElectronicContracts({}); assert.equal(a, null); }); }); describe('.GenerateElectronicRemittanceBatch', function() { var xmljs1, xmljs2, xmlerrorjs, xml1, xml2, xmlerror; before(function(done) { var xmlerror = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.GenerateElectronicRemittanceBatch.error.xml')); var xml2 = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.GenerateElectronicRemittanceBatch.xml')); var xml1 = fs.readFileSync(path.resolve(__dirname, 'data/data.ias.xml.GenerateElectronicRemittanceBatch-single.xml')); var n = 0; function fin(){ n++; if (n === 3) { done(); } } xml2js.parseString(xmlerror.toString(), function(err, data) { xmlerrorjs = data; fin(); }); xml2js.parseString(xml1.toString(), function(err, data) { xmljs1 = data; fin(); }); xml2js.parseString(xml2.toString(), function(err, data) { xmljs2 = data; fin(); }); }); it('should return valid array with 2 batches', function() { var a = normalize.GenerateElectronicRemittanceBatch(xmljs2); assert.equal(typeof a, 'object', 'is object'); assert.equal(a.success, true, '.success'); assert.equal(a.batches.length, 2, 'batches len'); assert.equal(a.pdf, 'pdfdata', 'pdf'); assert.deepEqual(a.batches[0], { "BatchID": "A-56904" , "BatchMailTo": "Innovative Aftermarket Systems, L.P." , "BatchMailToAddress": "12800 Angel Side Drive" , "BatchMailToCity": "Leander" , "BatchMailToState": "TX" , "BatchMailToZip": "78641" , "BatchPayee": "Innovative Aftermarket Systems, L.P." , "BatchPayeeAddress": "12800 Angel Side Drive" , "BatchPayeeCity": "Leander" , "BatchPayeeState": "" , "BatchPayeeZip": "78641" , "ContractCount": "2" , "DealerReferenceNumber": "" , "TotalDealerRemit": "431.5" } , 'data'); }); it('should return valid array a single batch', function() { var a = normalize.GenerateElectronicRemittanceBatch(xmljs1); assert.equal(typeof a, 'object', 'is object'); assert.equal(a.success, true, '.success'); assert.equal(a.batches.length, 1, 'batches len'); assert(!a.pdf, 'pdf'); assert.deepEqual(a.batches[0], { "BatchID": "A-56904" , "BatchMailTo": "Innovative Aftermarket Systems, L.P." , "BatchMailToAddress": "12800 Angel Side Drive" , "BatchMailToCity": "Leander" , "BatchMailToState": "TX" , "BatchMailToZip": "78641" , "BatchPayee": "Innovative Aftermarket Systems, L.P." , "BatchPayeeAddress": "12800 Angel Side Drive" , "BatchPayeeCity": "Leander" , "BatchPayeeState": "" , "BatchPayeeZip": "78641" , "ContractCount": "2" , "DealerReferenceNumber": "" , "TotalDealerRemit": "431.5" } , 'data'); }); it('should return error with bad data', function() { var a = normalize.GenerateElectronicRemittanceBatch({}); assert.equal(a.success, false, '.success'); assert.equal(a.message, 'TypeError: Cannot read property \'s:Body\' of undefined', '.message'); }); it('should return error', function() { var a = normalize.GenerateElectronicRemittanceBatch(xmlerrorjs); assert.equal(typeof a, 'object', 'is object'); assert(!a.success, '.success'); }); }); });