Skip to content

nit: Update fly build config #52301

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

Merged
merged 2 commits into from
Jul 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions src/sentry/auth/providers/fly/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,13 @@ def get_refresh_token_url(self):
return ACCESS_TOKEN_URL

@classmethod
def build_config(self, state: Any, organization: Optional[Any] = None):
def build_config(self, resource: Optional[Any] = None):
"""
On configuration, we determine which provider organization to configure sentry SSO for.
This configuration is then stored and passed into the pipeline instances during SSO
to determine whether the Auth'd user has the appropriate access to the provider org
"""
org = organization
if not organization:
Copy link
Contributor

Choose a reason for hiding this comment

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

Are we sure this is safe to take out? Is it possible for id to not be in resource? And if so, how do we handle that case with the new code?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah yea

So this isn't being utilized anywhere atm.
Since this is specific per provider, we can shape this build_config however we want per provider.
for Fly in particular, their organization resource will always have an 'id'

data = state["data"]
# TODO: determine which org to configure SSO for
org = data["user"]["organizations"][0]

return {"org": {"id": cast(Dict, org).get("id")}}
return {"org": {"id": cast(Dict, resource).get("id")}}

def build_identity(self, state):
"""
Expand Down
28 changes: 2 additions & 26 deletions tests/sentry/auth/providers/fly/test_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,32 +27,8 @@ def test_refresh_identity_without_refresh_token(self):

def test_build_config(self):
provider = self.auth_provider.get_provider()
state = {
"state": "9da4041848844e8088864eaea3c3a705",
"data": {
"access_token": "fo1_6xgeCrB8ew8vFQ86vdaakBSFTVDGCzOUvebUbvgPGhI",
"token_type": "Bearer",
"expires_in": 7200,
"refresh_token": "PmUkAB75UPLKGZplERMq8WwOHnsTllZ5HveY4RvNUTk",
"scope": "read",
"created_at": 1686786353,
"user": {
"resource_owner_id": "k9d01lp82rky6vo2",
"scope": ["read"],
"expires_in": 7200,
"application": {"uid": "elMJpuhA5bXbR59ZaKdXrxXGFVKTypGHuJ4h6Rfw1Qk"},
"created_at": 1686786353,
"user_id": "k9d01lp82rky6vo2",
"user_name": "Nathan",
"email": "[email protected]",
"organizations": [
{"id": "nathans-org", "role": "member"},
{"id": "0vogzmzoj1k5xp29", "role": "admin"},
],
},
},
}
result = provider.build_config(state)
resource = {"id": "nathans-org", "role": "member"}
result = provider.build_config(resource=resource)
assert result == {"org": {"id": "nathans-org"}}

def test_build_identity(self):
Expand Down