def test_no_org_ready(self, mock_generate_releases, mock_handle_mobile_scenario, mock_handle_python_react_scenario): User.objects.create(email=org_owner_email) assign_demo_org() mock_handle_python_react_scenario.assert_called_once_with( mock.ANY, mock.ANY)
def test_assign_demo_org_integrity_error_retry_fails( self, mock_build_up_org_buffer, mock_create_user): mock_create_user.side_effect = IntegrityError org = self.create_organization("some-slug") DemoOrganization.objects.create(organization=org, status=DemoOrgStatus.PENDING) Team.objects.create(organization=org) project = self.create_project(organization=org) self.create_project_key(project) with pytest.raises(IntegrityError): assign_demo_org() assert mock_create_user.call_count == 4
def test_assign_demo_org(self, mock_build_up_org_buffer, mock_now): curr_time = datetime.utcnow().replace(tzinfo=pytz.utc) mock_now.return_value = curr_time org_slug = "some_org" org = self.create_organization(org_slug) DemoOrganization.objects.create(organization=org, status=DemoOrgStatus.PENDING) Team.objects.create(organization=org) (org, user) = assign_demo_org() assert OrganizationMember.objects.filter(user=user, organization=org, role="member").exists() assert user.email == create_fake_email(org.slug, "demo") demo_org = DemoOrganization.objects.get(organization=org, status=DemoOrgStatus.ACTIVE) demo_user = DemoUser.objects.get(user=user) assert demo_org.date_assigned == curr_time assert demo_user.date_assigned == curr_time mock_build_up_org_buffer.assert_called_once_with()
def test_assign_demo_org_integrity_error(self, mock_build_up_org_buffer, mock_create_user, mock_get_one_pending_org): email = create_fake_email("slug-two", "demo") second_user = self.create_user(email=email) mock_create_user.side_effect = [IntegrityError, second_user] demo_orgs = [] for org_slug in ["slug-one", "slug-two"]: org = self.create_organization(org_slug) demo_org = DemoOrganization.objects.create( organization=org, status=DemoOrgStatus.PENDING) demo_orgs.append(demo_org) Team.objects.create(organization=org) project = self.create_project(organization=org) self.create_project_key(project) # return the two orgs mock_get_one_pending_org.side_effect = demo_orgs # we should get the second org (org, user) = assign_demo_org() assert user.email == email assert org.slug == "slug-two" assert mock_create_user.call_count == 2 assert mock_get_one_pending_org.call_count == 2
def post(self, request): # need this check for tests since the route will exist even if DEMO_MODE=False if not settings.DEMO_MODE: raise Http404 logger.info("post.start") # move this import here so we Django doesn't discover the models # for demo mode except when Demo mode is actually active from sentry.demo.demo_org_manager import assign_demo_org # assign the demo org and get the user org, user = assign_demo_org() logger.info("post.assigned_org", extra={"organization_slug": org.slug}) auth.login(request, user) resp = self.redirect(auth.get_login_redirect(request)) # set a cookie of whether the user accepteed tracking so we know # whether to initialize analytics when accepted_tracking=1 # 0 means don't show the footer to accept cookies (user already declined) # no value means we show the footer to accept cookies (user has neither accepted nor declined) accepted_tracking = request.POST.get("accepted_tracking") if accepted_tracking in ["0", "1"]: resp.set_cookie("accepted_tracking", accepted_tracking) return resp
def test_data_population_fails(self, mock_generate_name, mock_handle_scenario, mock_delete_organization): User.objects.create(email=org_owner_email) class HandleScenarioException(Exception): pass mock_handle_scenario.side_effect = HandleScenarioException("failure") with pytest.raises(HandleScenarioException): assign_demo_org() org = Organization.objects.get(name=org_name) assert org.status == OrganizationStatus.PENDING_DELETION mock_delete_organization.assert_called_once_with( kwargs={"object_id": org.id})
def test_data_population_fails( self, mock_generate_releases, mock_generate_name, mock_handle_scenario, ): User.objects.create(email=org_owner_email) class HandleScenarioException(Exception): pass mock_handle_scenario.side_effect = HandleScenarioException("failure") with pytest.raises(HandleScenarioException): assign_demo_org() org = Organization.objects.get(name=org_name) assert org.status == OrganizationStatus.PENDING_DELETION assert ScheduledDeletion.objects.filter( object_id=org.id, model_name="Organization").exists()
def post(self, request): # need this check for tests since the route will exist even if DEMO_MODE=False if not settings.DEMO_MODE: raise Http404 # move this import here so we Django doesn't discover the models # for demo mode except when Demo mode is actually active from sentry.demo.demo_org_manager import assign_demo_org # assign the demo org and get the user try: _, user = assign_demo_org() except NoDemoOrgReady: # TODO: handle NoDemoOrgReady error raise auth.login(request, user) resp = self.redirect(auth.get_login_redirect(request)) # set a cookie of whether the user accepteed tracking so we know # whether to initialize analytics when accepted_tracking=1 resp.set_cookie("accepted_tracking", request.POST.get("accepted_tracking")) return resp
def test_no_org_ready(self, mock_handle_scenario): User.objects.create(email=org_owner_email) assign_demo_org() mock_handle_scenario.assert_called_once_with(mock.ANY, mock.ANY, quick=True)
def test_no_org_ready(self): with pytest.raises(NoDemoOrgReady): assign_demo_org()