fix: Enhance error handling in Graph API token acquisition and response parsing #10027
+47
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Improve error handling and logging for Microsoft Graph API token acquisition in both the controller and service layers. The changes provide more detailed error context, making debugging easier and improving observability.
Error handling and logging enhancements:
In
AuthController.js
, thegraphTokenController
now logs a structured error object with message, details, original error message, and stack trace for failed Graph API token requests.In
GraphTokenService.js
, a newparseResponseBody
utility function is introduced to robustly parse error response bodies, handling both JSON and string formats.The
getGraphApiToken
function now extracts and logs more granular error information, including status code, error description, and the parsed response body. It also wraps the original error in a new error object with additional details for better propagation and debugging.Change Type
Testing
With debugging enabled, and Microsoft Graph setup configured in env vars, we see detailed error logs on problems, for example missing scope in the token.
Test Configuration:
Checklist
Please delete any irrelevant options.