Browse Source

ref(hc): Remove usages of orgmember.user from tests (#50599)

Part of the work of breaking down
https://github.com/getsentry/sentry/pull/48798/files

Trying to just get the tests half of this passing and in on master to
reduce the diff size of future chunks and increase the ease of review.
Zach Collins 1 year ago
parent
commit
5db91c8dcf

+ 1 - 1
src/sentry/api/endpoints/organization_users.py

@@ -37,7 +37,7 @@ class OrganizationUsersEndpoint(OrganizationEndpoint, EnvironmentMixin):
                     ).values_list("organizationmember_id", flat=True),
                 )
                 .select_related("user")
-                .order_by("user__email")
+                .order_by("user_email")
             )
 
             organization_members = list(qs)

+ 6 - 0
src/sentry/testutils/cases.py

@@ -110,12 +110,14 @@ from sentry.models import (
     IdentityStatus,
     NotificationSetting,
     Organization,
+    OrganizationMember,
     Project,
     ProjectOption,
     Release,
     ReleaseCommit,
     Repository,
     RuleSource,
+    User,
     UserEmail,
     UserOption,
 )
@@ -268,6 +270,10 @@ class BaseTestCase(Fixtures):
     def login_as(
         self, user, organization_id=None, organization_ids=None, superuser=False, superuser_sso=True
     ):
+        if isinstance(user, OrganizationMember):
+            with exempt_from_silo_limits():
+                user = User.objects.get(id=user.user_id)
+
         user.backend = settings.AUTHENTICATION_BACKENDS[0]
 
         request = self.make_request()

+ 3 - 1
src/sentry/testutils/fixtures.py

@@ -18,6 +18,7 @@ from sentry.models.actor import Actor, get_actor_id_for_user
 from sentry.services.hybrid_cloud.user import RpcUser
 from sentry.testutils.factories import Factories
 from sentry.testutils.helpers.datetime import before_now, iso_format
+from sentry.testutils.outbox import outbox_runner
 from sentry.testutils.silo import exempt_from_silo_limits
 
 # XXX(dcramer): this is a compatibility layer to transition to pytest-based fixtures
@@ -135,7 +136,8 @@ class Fixtures:
         if organization is None:
             organization = self.organization
 
-        return Factories.create_team(organization=organization, **kwargs)
+        with outbox_runner():
+            return Factories.create_team(organization=organization, **kwargs)
 
     def create_environment(self, project=None, **kwargs):
         if project is None:

+ 3 - 2
src/sentry/testutils/helpers/task_runner.py

@@ -9,11 +9,12 @@ from django.conf import settings
 
 @contextmanager
 def TaskRunner():
+    prev = settings.CELERY_ALWAYS_EAGER
     settings.CELERY_ALWAYS_EAGER = True
     current_app.conf.CELERY_ALWAYS_EAGER = True
     yield
-    current_app.conf.CELERY_ALWAYS_EAGER = False
-    settings.CELERY_ALWAYS_EAGER = False
+    current_app.conf.CELERY_ALWAYS_EAGER = prev
+    settings.CELERY_ALWAYS_EAGER = prev
 
 
 @contextmanager

+ 1 - 1
tests/apidocs/endpoints/organizations/test_org_users.py

@@ -12,7 +12,7 @@ class OrganizationUsersDocs(APIDocsTestCase):
         self.user_2 = self.create_user("bar@localhost", username="bar")
 
         self.org = self.create_organization(owner=self.owner_user)
-        self.org.member_set.create(user=self.user_2)
+        self.org.member_set.create(user_id=self.user_2.id)
         self.team = self.create_team(organization=self.org, members=[self.owner_user, self.user_2])
         self.project = self.create_project(teams=[self.team])
 

+ 3 - 2
tests/apidocs/endpoints/scim/test_group_details.py

@@ -10,9 +10,10 @@ from sentry.testutils.silo import region_silo_test
 class SCIMTeamDetailsDocs(APIDocsTestCase, SCIMTestCase):
     def setUp(self):
         super().setUp()
-        self.member = self.create_member(user=self.create_user(), organization=self.organization)
+        member_user = self.create_user()
+        self.member = self.create_member(user=member_user, organization=self.organization)
         self.team = self.create_team(
-            organization=self.organization, members=[self.user, self.member.user]
+            organization=self.organization, members=[self.user, member_user]
         )
         self.url = reverse(
             "sentry-api-0-organization-scim-team-details",

+ 3 - 3
tests/sentry/api/endpoints/test_accept_organization_invite.py

@@ -256,7 +256,7 @@ class AcceptInviteTest(TestCase, HybridCloudTestMixin):
             with exempt_from_silo_limits():
                 om = OrganizationMember.objects.get(id=om.id)
             assert om.email is None
-            assert om.user == user
+            assert om.user_id == user.id
 
             ale = AuditLogEntry.objects.filter(
                 organization_id=self.organization.id, event=audit_log.get_event_id("MEMBER_ACCEPT")
@@ -327,7 +327,7 @@ class AcceptInviteTest(TestCase, HybridCloudTestMixin):
             with exempt_from_silo_limits():
                 om = OrganizationMember.objects.get(id=om.id)
             assert om.email is None
-            assert om.user == user
+            assert om.user_id == user.id
 
             om2 = Factories.create_member(
                 email="newuser3@example.com",
@@ -370,7 +370,7 @@ class AcceptInviteTest(TestCase, HybridCloudTestMixin):
             with exempt_from_silo_limits():
                 om = OrganizationMember.objects.get(id=om.id)
             assert om.email is None
-            assert om.user == user
+            assert om.user_id == user.id
 
             ale = AuditLogEntry.objects.filter(
                 organization_id=self.organization.id, event=audit_log.get_event_id("MEMBER_ACCEPT")

+ 2 - 2
tests/sentry/api/endpoints/test_organization_index.py

@@ -85,7 +85,7 @@ class OrganizationsListTest(OrganizationIndexTest):
         response = self.get_success_response(qs_params={"member": 1})
         assert len(response.data) == 2
 
-        om = OrganizationMember.objects.get(organization=org, user=self.user)
+        om = OrganizationMember.objects.get(organization=org, user_id=self.user.id)
         response = self.get_success_response(qs_params={"query": f"member_id:{om.id}"})
         assert len(response.data) == 1
         assert response.data[0]["id"] == str(org.id)
@@ -220,7 +220,7 @@ class OrganizationsCreateTest(OrganizationIndexTest, HybridCloudTestMixin):
         response = self.get_success_response(name="org name")
 
         org_member = OrganizationMember.objects.get(
-            organization_id=response.data["id"], user=self.user
+            organization_id=response.data["id"], user_id=self.user.id
         )
         self.assert_org_member_mapping(org_member=org_member)
 

+ 6 - 6
tests/sentry/api/endpoints/test_organization_invite_request_details.py

@@ -96,7 +96,7 @@ class OrganizationInviteRequestDeleteTest(InviteRequestBase):
         assert audit_log_entry.data == self.invite_request.get_audit_log_data()
 
     def test_member_cannot_delete_invite_request(self):
-        self.login_as(user=self.member.user)
+        self.login_as(user=self.member)
         resp = self.get_response(self.org.slug, self.invite_request.id)
 
         assert resp.status_code == 403
@@ -165,7 +165,7 @@ class OrganizationInviteRequestUpdateTest(InviteRequestBase, HybridCloudTestMixi
         ).exists()
 
     def test_member_cannot_update_invite_request(self):
-        self.login_as(user=self.member.user)
+        self.login_as(user=self.member)
         resp = self.get_response(self.org.slug, self.request_to_join.id, role="manager")
         assert resp.status_code == 403
 
@@ -195,10 +195,10 @@ class OrganizationInviteRequestApproveTest(InviteRequestBase, HybridCloudTestMix
         assert audit_log_entry.data == member.get_audit_log_data()
 
     def test_member_cannot_approve_invite_request(self):
-        self.invite_request.inviter_id = self.member.user.id
+        self.invite_request.inviter_id = self.member.user_id
         self.invite_request.save()
 
-        self.login_as(user=self.member.user)
+        self.login_as(user=self.member)
         resp = self.get_response(self.org.slug, self.invite_request.id, approve=1)
 
         assert resp.status_code == 403
@@ -283,7 +283,7 @@ class OrganizationInviteRequestApproveTest(InviteRequestBase, HybridCloudTestMix
 
     @patch.object(OrganizationMember, "send_invite_email")
     def test_manager_cannot_approve_owner(self, mock_invite_email):
-        self.login_as(user=self.manager.user)
+        self.login_as(user=self.manager)
         resp = self.get_response(self.org.slug, self.invite_request.id, approve=1)
 
         assert resp.status_code == 400
@@ -295,7 +295,7 @@ class OrganizationInviteRequestApproveTest(InviteRequestBase, HybridCloudTestMix
         assert mock_invite_email.call_count == 0
 
     def test_manager_can_approve_manager(self):
-        self.login_as(user=self.manager.user)
+        self.login_as(user=self.manager)
         invite_request = self.create_member(
             email="hello@example.com",
             organization=self.org,

+ 4 - 3
tests/sentry/api/endpoints/test_organization_join_request.py

@@ -27,7 +27,7 @@ class OrganizationJoinRequestTest(APITestCase, SlackActivityNotificationTest, Hy
 
     @cached_property
     def owner(self):
-        return OrganizationMember.objects.get(user=self.user, organization=self.organization)
+        return OrganizationMember.objects.get(user_id=self.user.id, organization=self.organization)
 
     def test_invalid_org_slug(self):
         self.get_error_response("invalid-slug", email=self.email, status_code=404)
@@ -72,6 +72,7 @@ class OrganizationJoinRequestTest(APITestCase, SlackActivityNotificationTest, Hy
 
     @patch("sentry.api.endpoints.organization_member.requests.join.logger")
     def test_user_already_exists(self, mock_log):
+        assert OrganizationMember.objects.filter(organization=self.organization).count() == 1
         self.get_success_response(self.organization.slug, email=self.user.email, status_code=204)
 
         member = OrganizationMember.objects.get(organization=self.organization)
@@ -131,7 +132,7 @@ class OrganizationJoinRequestTest(APITestCase, SlackActivityNotificationTest, Hy
 
         members = OrganizationMember.objects.filter(organization=self.organization)
         join_request = members.get(email=self.email)
-        assert join_request.user is None
+        assert join_request.user_id is None
         assert join_request.role == "member"
         assert not join_request.invite_approved
 
@@ -158,7 +159,7 @@ class OrganizationJoinRequestTest(APITestCase, SlackActivityNotificationTest, Hy
 
         members = OrganizationMember.objects.filter(organization=self.organization)
         join_request = members.get(email=self.email)
-        assert join_request.user is None
+        assert join_request.user_id is None
         assert join_request.role == "member"
         assert not join_request.invite_approved
 

Some files were not shown because too many files changed in this diff