Beispiel #1
0
 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)
Beispiel #2
0
    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
Beispiel #3
0
    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()
Beispiel #4
0
    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
Beispiel #6
0
    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()
Beispiel #8
0
    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
Beispiel #9
0
 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()