2022-05-03 23:21:44 +02:00
'use strict'
const tap = require ( 'tap' )
const checkIfResIsOk = require ( '../../lib/check-if-res-is-ok' )
const {
INVALID _REQUEST ,
NOT _FOUND ,
HafasError ,
HafasInvalidRequestError ,
HafasNotFoundError ,
} = require ( '../../lib/errors' )
const resParameter = require ( '../fixtures/error-parameter.json' )
const resNoMatch = require ( '../fixtures/error-no-match.json' )
const resH9360 = require ( '../fixtures/error-h9360.json' )
const resLocation = require ( '../fixtures/error-location.json' )
const secret = Symbol ( 'secret' )
tap . test ( 'checkIfResponseIsOk properly throws HAFAS "H9360" errors' , ( t ) => {
try {
checkIfResIsOk ( {
body : resH9360 ,
errProps : { secret } ,
} )
} catch ( err ) {
t . ok ( err )
t . ok ( err instanceof HafasError )
t . equal ( err . isHafasError , true )
t . equal ( err . message . slice ( 0 , 7 ) , 'H9360: ' )
t . ok ( err . message . length > 7 )
t . ok ( err instanceof HafasInvalidRequestError )
t . equal ( err . isCausedByServer , false )
t . equal ( err . code , INVALID _REQUEST )
t . equal ( err . hafasCode , 'H9360' )
t . equal ( err . hafasResponseId , resH9360 . id )
t . equal ( err . hafasMessage , 'HAFAS Kernel: Date outside of the timetable period.' )
t . equal ( err . hafasDescription , 'Fehler bei der Datumseingabe oder Datum außerhalb der Fahrplanperiode (01.05.2022 - 10.12.2022)' )
t . equal ( err . secret , secret )
t . end ( )
}
} )
tap . test ( 'checkIfResponseIsOk properly throws HAFAS "LOCATION" errors' , ( t ) => {
try {
checkIfResIsOk ( {
body : resLocation ,
errProps : { secret } ,
} )
} catch ( err ) {
t . ok ( err )
t . ok ( err instanceof HafasError )
t . equal ( err . isHafasError , true )
t . equal ( err . message . slice ( 0 , 10 ) , 'LOCATION: ' )
t . ok ( err . message . length > 10 )
t . ok ( err instanceof HafasNotFoundError )
t . equal ( err . isCausedByServer , false )
t . equal ( err . code , NOT _FOUND )
t . equal ( err . hafasCode , 'LOCATION' )
t . equal ( err . hafasResponseId , resLocation . id )
t . equal ( err . hafasMessage , 'HCI Service: location missing or invalid' )
t . equal ( err . hafasDescription , 'Während der Suche ist ein interner Fehler aufgetreten' )
t . equal ( err . secret , secret )
t . end ( )
}
} )
2022-05-06 21:51:02 +02:00
tap . test ( 'checkIfResponseIsOk properly throws HAFAS "NO_MATCH" errors' , ( t ) => {
try {
checkIfResIsOk ( {
body : resNoMatch ,
errProps : { secret } ,
} )
} catch ( err ) {
t . ok ( err )
t . ok ( err instanceof HafasError )
t . equal ( err . isHafasError , true )
t . equal ( err . message . slice ( 0 , 10 ) , 'NO_MATCH: ' )
t . ok ( err . message . length > 10 )
t . ok ( err instanceof HafasNotFoundError )
t . equal ( err . isCausedByServer , false )
t . equal ( err . code , NOT _FOUND )
t . equal ( err . hafasCode , 'NO_MATCH' )
t . equal ( err . hafasResponseId , resNoMatch . id )
t . equal ( err . hafasMessage , 'Nothing found.' )
t . equal ( err . hafasDescription , 'Während der Suche ist leider ein interner Fehler aufgetreten. Bitte wenden Sie sich an unsere Serviceauskunft unter Tel. 0421 596059.' )
t . equal ( err . secret , secret )
t . end ( )
}
} )
tap . test ( 'checkIfResponseIsOk properly throws HAFAS "PARAMETER" errors' , ( t ) => {
try {
checkIfResIsOk ( {
body : resParameter ,
errProps : { secret } ,
} )
} catch ( err ) {
t . ok ( err )
t . ok ( err instanceof HafasError )
t . equal ( err . isHafasError , true )
t . equal ( err . message . slice ( 0 , 11 ) , 'PARAMETER: ' )
t . ok ( err . message . length > 11 )
t . ok ( err instanceof HafasInvalidRequestError )
t . equal ( err . isCausedByServer , false )
t . equal ( err . code , INVALID _REQUEST )
t . equal ( err . hafasCode , 'PARAMETER' )
t . equal ( err . hafasResponseId , resParameter . id )
t . equal ( err . hafasMessage , 'HCI Service: parameter invalid' )
t . equal ( err . hafasDescription , 'Während der Suche ist ein interner Fehler aufgetreten' )
t . equal ( err . secret , secret )
t . end ( )
}
} )
2022-05-03 23:21:44 +02:00
tap . test ( 'checkIfResponseIsOk properly parses an unknown HAFAS errors' , ( t ) => {
const body = {
ver : '1.42' ,
id : '1234567890' ,
err : 'FOO' ,
errTxt : 'random errTxt' ,
errTxtOut : 'even more random errTxtOut' ,
svcResL : [ ] ,
}
try {
checkIfResIsOk ( {
body ,
errProps : { secret } ,
} )
} catch ( err ) {
t . ok ( err )
t . ok ( err instanceof HafasError )
t . equal ( err . isHafasError , true )
t . equal ( err . message , ` ${ body . err } : ${ body . errTxt } ` )
t . equal ( err . isCausedByServer , false )
t . equal ( err . code , null )
t . equal ( err . hafasCode , body . err )
t . equal ( err . hafasResponseId , body . id )
t . equal ( err . hafasMessage , body . errTxt )
t . equal ( err . hafasDescription , body . errTxtOut )
t . equal ( err . secret , secret )
t . end ( )
}
} )