Skip to content

Conversation

@akshayutture-augment
Copy link

@akshayutture-augment akshayutture-augment commented Nov 14, 2025

Test 4


Replicated from ai-code-review-evaluation/sentry-cursor#4


Note

Adds an OAuth login step and validates the authenticated GitHub user matches the installer, with centralized error handling and updated pipeline forwarding.

  • GitHub Integration Flow
    • Add OAuthLoginView to pipeline before GitHubInstallation to perform GitHub OAuth, exchange code for token, fetch user, and bind github_authenticated_user.
    • Enhance GitHubInstallation.dispatch to accept/bind installation_id from pipeline state, enforce single-org install, and verify authenticated user matches integration.metadata["sender"]["login"].
    • Introduce shared error() and get_document_origin() helpers for consistent failure responses (invalid request, installed on another org, pending deletion).
    • Add OAuth-related utilities/imports (safe_urlopen, safe_urlread, GitHubIdentityProvider, get_user_info, absolute_uri, reverse).
  • Pipeline Advancer
    • Inline check for GitHub forward-install (when not in pipeline) and redirect to org picker using installation_id.
  • Tests
    • Update setup flow to cover OAuth authorize/redirect and token exchange; adjust header assertions.
    • Add tests for GitHub user mismatch, invalid installation requests, and pending deletion handling.
    • Expand fixtures/stubs for OAuth token endpoint and /user lookup.

Written by Cursor Bugbot for commit 843d7c7. Configure here.

…#67876)

We're adding one more step in the GitHub integration installation
pipeline, namely GitHub OAuth2 authorize. This is transparent from the
UX perspective as the data exchange happens without user interaction.

The pipeline will now fail in these cases:
- If there is a mismatch between currently authenticated GitHub user
(derived from OAuth2 authorize step) and the user who installed the
GitHub app (https://github.com/apps/sentry-io)
- If there is a mismatch between `state` parameter supplied by user and
pipeline signature
- If GitHub could not generate correct `access_token` from the `code`
(wrong or attempt of re-use of `code`).

In all those cases, this error is shown:

![image](https://github.com/getsentry/sentry/assets/1127549/18923861-2ead-4cf5-adda-7738aef801d7)
@akshayutture-augment
Copy link
Author

cursor review

pipeline.fetch_state("github_authenticated_user")
!= integration.metadata["sender"]["login"]
):
return error(request, self.active_organization)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Incomplete Metadata Prevents Installation

The code attempts to access integration.metadata["sender"]["login"] without checking if the sender key exists in the metadata. When an integration is created through the normal installation flow without a prior webhook event, the sender metadata won't exist (as seen in build_integration() where it's only added conditionally with if state.get("sender")), causing a KeyError that crashes the installation process.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants