diff --git a/packages/fxa-auth-server/lib/error.js b/packages/fxa-auth-server/lib/error.js index b02510c78d7..ef41b86468f 100644 --- a/packages/fxa-auth-server/lib/error.js +++ b/packages/fxa-auth-server/lib/error.js @@ -1418,7 +1418,7 @@ AppError.iapInvalidToken = (error) => { code: 400, error: 'Bad Request', errno: ERRNO.IAP_INVALID_TOKEN, - message: 'Invalid token', + message: `Invalid IAP token${error?.message ? `: ${error.message}` : ''}`, }, ...extra ); diff --git a/packages/fxa-auth-server/test/local/error.js b/packages/fxa-auth-server/test/local/error.js index 44c6fabaf31..76759f0472f 100644 --- a/packages/fxa-auth-server/test/local/error.js +++ b/packages/fxa-auth-server/test/local/error.js @@ -139,6 +139,27 @@ describe('AppErrors', () => { assert(!result.output.payload.retryAfterLocalized); }); + it('iapInvalidToken', () => { + const defaultErrorMessage = 'Invalid IAP token'; + let result = AppError.iapInvalidToken(); + assert.ok(result instanceof AppError, 'instanceof AppError'); + assert.equal(result.errno, 196); + assert.equal(result.message, defaultErrorMessage); + assert.equal(result.output.statusCode, 400); + assert.equal(result.output.payload.error, 'Bad Request'); + + let iapAPIError = { someProp: 123 }; + result = AppError.iapInvalidToken(iapAPIError); + assert.equal(result.message, defaultErrorMessage); + + iapAPIError = { message: 'Wow helpful extra info' }; + result = AppError.iapInvalidToken(iapAPIError); + assert.equal( + result.message, + `${defaultErrorMessage}: ${iapAPIError.message}` + ); + }); + it('unexpectedError without request data', () => { const err = AppError.unexpectedError(); assert.instanceOf(err, AppError);