-
Notifications
You must be signed in to change notification settings - Fork 30
fix: improve uncaught exception for getAccessToken #224
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR improves the handling of access tokens when sending telemetry events by making the failure mode more explicit and introducing a new test to cover the fallback logic.
- Updated test descriptions and behavior to simulate token errors more clearly.
- Renamed method hasValidAccessToken to validateAccessToken and updated its usage across the codebase.
- Modified the sendEvents logic to catch errors and fall back to an unauthenticated endpoint when needed.
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
File | Description |
---|---|
tests/unit/apiClient.test.ts | Updated tests to reflect the new exception-based token failure behavior. |
tests/integration/helpers.ts | Modified to use validateAccessToken instead of hasValidAccessToken. |
src/server.ts | Updated API client method call for token validation. |
src/common/atlas/apiClient.ts | Replaced token validation method and revised sendEvents to check token state. |
Comments suppressed due to low confidence (1)
src/common/atlas/apiClient.ts:145
- Throwing a generic Error here may make it harder to distinguish token-related failures from other errors. Consider using a specific error type (e.g., ApiClientError) for better error handling and consistency.
if (!accessToken) { throw new Error("No access token available"); }
const accessToken = await this.getAccessToken(); | ||
return accessToken !== undefined; | ||
public async validateAccessToken(): Promise<void> { | ||
await this.getAccessToken(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not sure if I got it right but this can end up just not finding the access token right? so it'd effectively not validate it always?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it validates if it exists otherwise it will just return undefined, which is fine
private async sendAuthEvents(events: TelemetryEvent<CommonProperties>[]): Promise<void> { | ||
const accessToken = await this.getAccessToken(); | ||
if (!accessToken) { | ||
throw new Error("No access token available"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Not Actionable] Known use case so best to not throw error and resurect to log.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
It is nice to see how you have wrapped Authentication mechanism.
* main: (21 commits) fix: updates count tool (#254) fix: docker security warnings (#259) feat: docker support (#238) docs: list alerts docs (#250) chore: add hints and update mcp (#249) chore: base model SEO change (#248) chore(ci): add a PR title check workflow (#247) docs: bump node.js version (#246) chore: corrects the description of atlas-create-db-user (#240) chore: auto-close stale issues (#237) chore(deps-dev): bump globals from 16.0.0 to 16.1.0 (#231) chore(deps-dev): bump @types/node from 22.15.9 to 22.15.17 (#233) chore(deps-dev): bump eslint-config-prettier from 10.1.2 to 10.1.5 (#234) feat: Alerts Listing (#230) chore(deps-dev): bump @redocly/cli from 1.34.2 to 1.34.3 (#235) chore(deps-dev): bump openapi-typescript from 7.6.1 to 7.8.0 (#232) chore: release v0.1.1 (#223) fix: improve uncaught exception for getAccessToken (#224) chore: update issue template (#227) chore: switch to `@mongodb-js/device-id` (#196) ...
Uh oh!
There was an error while loading. Please reload this page.