コード例 #1
0
    def test_contact_by_campaign_filtering(self) -> None:
        self.set_tenant(0)
        user = self.users[0]

        first_contact = Contact.objects.create(email='*****@*****.**', first_name='First', last_name='Smith')
        second_contact = Contact.objects.create(email='*****@*****.**', first_name='Second', last_name='Smith')
        Contact.objects.create(email='*****@*****.**', first_name='Third', last_name='Smith')
        fourth_contact = Contact.objects.create(email='*****@*****.**', first_name='Fourth', last_name='Smith')

        first_campaign = Campaign.objects.create(name='first campaign for filtering test', owner=user)
        second_campaign = Campaign.objects.create(name='second campaign for filtering test', owner=user)

        Participation.objects.bulk_create([
            Participation(campaign=first_campaign, contact=first_contact),
            Participation(campaign=second_campaign, contact=second_contact),
            Participation(campaign=first_campaign, contact=fourth_contact),
            Participation(campaign=second_campaign, contact=fourth_contact),
        ])

        t_client = TenantClient(self.get_current_tenant())
        t_client.handler = ForceAuthClientHandler(enforce_csrf_checks=False)
        t_client.handler._force_user = user
        self.assertTrue(t_client.login(username=user.username, password='******'), 'Test user was not logged in')

        url = reverse.reverse('api:contacts-list')
        with modify_settings(ALLOWED_HOSTS={'append': self.get_current_tenant().domain_url}):
            query = '?campaigns__in=%s' % ','.join(map(str, [first_campaign.id, second_campaign.id]))
            response = t_client.get(urljoin(url, query))

        self.assertEqual(response.status_code, status.HTTP_200_OK, str(response.content))
        contacts_data = response.data
        self.assertEqual(3, len(contacts_data))
        self.assertSetEqual({first_contact.id, second_contact.id, fourth_contact.id},
                            {c['id'] for c in contacts_data})

        with modify_settings(ALLOWED_HOSTS={'append': self.get_current_tenant().domain_url}):
            query = '?campaigns=' + ','.join(map(str, [first_campaign.id, second_campaign.id]))
            response = t_client.get(urljoin(url, query))

        self.assertEqual(response.status_code, status.HTTP_200_OK, str(response.content))
        contacts_data = response.data
        self.assertEqual(1, len(contacts_data))
        self.assertEqual(fourth_contact.id, contacts_data[0]['id'])

        with modify_settings(ALLOWED_HOSTS={'append': self.get_current_tenant().domain_url}):
            query = '?campaigns=%s' % second_campaign.id
            response = t_client.get(urljoin(url, query))

        self.assertEqual(response.status_code, status.HTTP_200_OK, str(response.content))
        contacts_data = response.data
        self.assertEqual(1, len(contacts_data))
        self.assertEqual(second_contact.id, contacts_data[0]['id'])
コード例 #2
0
 def render_to_response(self, context, **response_kwargs):
     self.response_class.modify_settings = modify_settings(
         MENU_ITEMS={
             "append": [(
                 "...",
                 [
                     (_("Edit"),
                      reverse("plan-edit", args=[self.object.pk])),
                     (_("Clone"),
                      reverse("plans-clone", args=[self.object.pk])),
                     (
                         _("History"),
                         "/admin/testplans/testplan/%d/history/" %
                         self.object.pk,
                     ),
                     ("-", "-"),
                     (
                         _("Object permissions"),
                         reverse(
                             "admin:testplans_testplan_permissions",
                             args=[self.object.pk],
                         ),
                     ),
                     ("-", "-"),
                     (
                         _("Delete"),
                         reverse(
                             "admin:testplans_testplan_delete",
                             args=[self.object.pk],
                         ),
                     ),
                 ],
             )]
         })
     return super().render_to_response(context, **response_kwargs)
コード例 #3
0
    def test_bulk_post_participation(self) -> None:
        self.set_tenant(0)

        user = self.users[0]
        first_contact = Contact.objects.create(email='*****@*****.**', first_name='First', last_name='Smith')
        second_contact = Contact.objects.create(email='*****@*****.**', first_name='Second', last_name='Smith')

        campaign = Campaign.objects.create(name='cool campaign', owner=user)

        t_client = TenantClient(self.get_current_tenant())
        t_client.handler = ForceAuthClientHandler(enforce_csrf_checks=False)
        t_client.handler._force_user = user
        self.assertTrue(t_client.login(username=user.username, password='******'), 'Test user was not logged in')

        url = reverse.reverse('api:campaigns-contacts-list', args=[campaign.pk, ])
        with modify_settings(ALLOWED_HOSTS={'append': self.get_current_tenant().domain_url}):
            response = t_client.post(url,
                                     json.dumps([
                                         dict(contact=first_contact.id),
                                         dict(contact=second_contact.id),
                                     ]),
                                     content_type='application/json',
                                     )

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, str(response.content))
        self.assertEqual(2, Participation.objects.filter(
            campaign=campaign,
            contact_id__in=(first_contact.id, second_contact.id,),
        ).count())
        contacts = campaign.contacts.all()
        self.assertListEqual([first_contact, second_contact, ], list(contacts))
コード例 #4
0
def test_middleware_handled_view_exception_success(client, test_spans):
    """
    When an exception is raised in a view and then handled
        Only the culprit span contains error properties
    """
    with modify_settings(
        **(
            dict(MIDDLEWARE={"append": "tests.contrib.django.middleware.HandleErrorMiddlewareSuccess"})
            if django.VERSION >= (2, 0, 0)
            else dict(MIDDLEWARE_CLASSES={"append": "tests.contrib.django.middleware.HandleErrorMiddlewareSuccess"})
        )
    ):
        assert client.get("/error-500/").status_code == 200

    error_spans = list(test_spans.filter_spans(error=1))
    # There should be 1 span flagged as erroneous:
    # - The view span which wraps the original error
    assert len(error_spans) == 1

    # Test the root span
    root_span = test_spans.get_root_span()
    assert root_span.error == 0
    assert root_span.get_tag(errors.ERROR_STACK) is None
    assert root_span.get_tag(errors.ERROR_MSG) is None
    assert root_span.get_tag(errors.ERROR_TYPE) is None

    # Test the view span (where the exception is generated)
    view_span = list(test_spans.filter_spans(name="django.view"))
    assert len(view_span) == 1
    view_span = view_span[0]
    assert view_span.error == 1
    # Make sure the message is somewhere in the stack trace
    assert "Error 500" in view_span.get_tag("error.stack")
コード例 #5
0
    def test_email_stage_template_validation(self) -> None:
        self.set_tenant(0)

        user = self.users[0]

        campaign = Campaign.objects.create(name='some campaign', owner=user)
        step = Step.objects.create(campaign=campaign, start=datetime.time(9, 45), end=datetime.time(18, 30))

        t_client = TenantClient(self.get_current_tenant())
        t_client.handler = ForceAuthClientHandler(enforce_csrf_checks=False)
        t_client.handler._force_user = user
        self.assertTrue(t_client.login(username=user.username, password='******'), 'Test user was not logged in')

        url = reverse.reverse('api:campaigns-steps-email-list', args=[campaign.pk, step.pk, ])
        with modify_settings(ALLOWED_HOSTS={'append': self.get_current_tenant().domain_url}):
            response = t_client.post(url,
                                     json.dumps(dict(
                                         subject='Hello good fellow',
                                         html_content='Some invalid email template to {{First name}}!',
                                     )),
                                     content_type='application/json',
                                     )

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, str(response.content))
        error_data = response.data
        self.assertTrue("Could not parse" in error_data['html_content'][0])
コード例 #6
0
    def test_process_request(self):

        with modify_settings(
            MIDDLEWARE_CLASSES={'append': [
                'django.contrib.sites.middleware.CurrentSiteMiddleware',
                'hacs.middleware.DynamicRouteMiddleware',
                'hacs.middleware.FirewallMiddleware'
            ]}
        ):
            browser = Client()
            response = browser.get('/admin/')
            # AS anonymous user so urlconf module should default site
            expected_module = get_generated_urlconf_module(get_generated_urlconf_file(TEST_ROUTE_NAME))
            self.assertEqual(expected_module, response.wsgi_request.urlconf)
            # As anonymous user, so no direct access, should be redirected to login page
            self.assertEqual(302, response.status_code)

            browser.login(username=TEST_USER_NAME, password=TEST_USER_PASSWORD)
            response = browser.get('/admin/')
            # Authenticated admin user should have access
            self.assertEqual(200, response.status_code)

            # User has dedicated urlconf module, so it should be assigned
            expected_module = get_generated_urlconf_module(get_generated_urlconf_file(TEST_USER_ROUTE_NAME))
            self.assertEqual(expected_module, response.wsgi_request.urlconf)

            ContentTypeRoutingTable.objects.filter(content_type=ContentType.objects.get_for_model(UserModel),
                                                   object_id=response.wsgi_request.user.id).delete()

            # Make Session works, as we remove user's route but still should same
            response = browser.get('/admin/')
            self.assertEqual(expected_module, response.wsgi_request.urlconf)
            self.assertEqual(expected_module, response.wsgi_request.session['settings']['urlconf'])

            # Make sure caching works
            browser.logout()
            browser.login(username=TEST_USER_NAME, password=TEST_USER_PASSWORD)
            response = browser.get('/admin/')
            self.assertEqual(expected_module, response.wsgi_request.urlconf)

            # Now we are cleaning session and cache as well, so we expect urlconf should come group
            browser.logout()
            self.cache.clear()
            browser.login(username=TEST_USER_NAME, password=TEST_USER_PASSWORD)
            response = browser.get('/admin/')

            expected_module = get_generated_urlconf_module(get_generated_urlconf_file(TEST_GROUP_ROUTE_NAME))
            self.assertEqual(expected_module, response.wsgi_request.urlconf)

            ContentTypeRoutingTable.objects.filter(content_type=ContentType.objects.get_for_model(Group)).delete()

            # Now we are cleaning session and cache as well, group's route also clened
            # so we expect urlconf should be like site urlconf
            browser.logout()
            self.cache.clear()
            browser.login(username=TEST_USER_NAME, password=TEST_USER_PASSWORD)
            response = browser.get('/admin/')

            expected_module = get_generated_urlconf_module(get_generated_urlconf_file(TEST_ROUTE_NAME))
            self.assertEqual(expected_module, response.wsgi_request.urlconf)
コード例 #7
0
    def setUp(self):
        Group.objects.bulk_create(
            [Group(name=name) for name in ['group1', 'group2', 'group3']])

        class GroupSerializer(ModelSerializer):
            class Meta:
                model = Group
                fields = '__all__'

        class GroupViewSet(ModelViewSet):
            queryset = Group.objects.all()
            serializer_class = GroupSerializer
            permission_classes = [DjangoObjectPermissions]
            filter_backends = [ChemoPermissionsFilter]

        self.user = User.objects.create_user(username='******',
                                             password='******')
        self.perm = Permission.objects.create(
            content_type=get_content_type(Group),
            name='Can view group',
            codename='view_group')
        self.access_rule = AccessRule.objects.create(
            ctype_source=get_content_type(User),
            ctype_target=get_content_type(Group),
            is_active=True,
            relation_types=[{
                'GROUPS': None
            }])
        self.view = GroupViewSet

        self.patched_settings = modify_settings(
            AUTHENTICATION_BACKENDS={'append': self.backend})
        self.patched_settings.enable()
コード例 #8
0
def add_new_language():
    return modify_settings(
        LANGUAGES={"append": [("foo-br", "Test locale")]},
        LOCALE_PATHS={
            "append": os.path.join(os.path.dirname(__file__), "..", "locale")
        },
    )
コード例 #9
0
def disable_remote_auth(test):
    test = modify_settings(MIDDLEWARE_CLASSES={
        'remove': [
            'common_dibbs.auth.CentralAuthenticationMiddleware',
        ],
    })(test)
    return test
コード例 #10
0
    def test_bulk_delete_participation(self) -> None:
        self.set_tenant(0)

        user = self.users[0]
        first_contact = Contact.objects.create(email='*****@*****.**', first_name='First', last_name='Smith')
        second_contact = Contact.objects.create(email='*****@*****.**', first_name='Second', last_name='Smith')

        campaign = Campaign.objects.create(name='cool campaign', owner=user)

        Participation.objects.bulk_create([
            Participation(campaign=campaign, contact=first_contact),
            Participation(campaign=campaign, contact=second_contact),
        ])

        t_client = TenantClient(self.get_current_tenant())
        t_client.handler = ForceAuthClientHandler(enforce_csrf_checks=False)
        t_client.handler._force_user = user
        self.assertTrue(t_client.login(username=user.username, password='******'), 'Test user was not logged in')

        url = reverse.reverse('api:campaigns-contacts-list', args=[campaign.pk, ])
        with modify_settings(ALLOWED_HOSTS={'append': self.get_current_tenant().domain_url}):
            response = t_client.delete(urljoin(url, '?contact__in=%s' % str(first_contact.id)),
                                       content_type='application/json',
                                       )

        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT, str(response.content))
        participation = Participation.objects.get(campaign=campaign)
        self.assertEqual(second_contact, participation.contact)
コード例 #11
0
    def _modify_settings(self):
        with modify_settings(MIDDLEWARE={
            'remove': ['idempotency_key.middleware.IdempotencyKeyMiddleware'],
            'append': ['idempotency_key.middleware.ExemptIdempotencyKeyMiddleware'],

        }):
            yield
 def wrapper(*args, **kwargs):
     with modify_settings(
         MIDDLEWARE={
             "remove": ["idempotency_key.middleware.IdempotencyKeyMiddleware"],
             "append": ["idempotency_key.middleware.ExemptIdempotencyKeyMiddleware"],
         }
     ):
         return func(*args, **kwargs)
コード例 #13
0
ファイル: views.py プロジェクト: radiateboy/Kiwi
 def render_to_response(self, context, **response_kwargs):
     self.response_class.modify_settings = modify_settings(
         MENU_ITEMS={
             'append': [('...', [
                 (_('Edit'), reverse('bugs-edit', args=[self.object.pk])),
             ])]
         })
     return super().render_to_response(context, **response_kwargs)
コード例 #14
0
def scoped_client():
    scope_full_access = "super-access"
    scoped_client = ScopedClient((scope_full_access, ))
    with modify_settings(
            MIDDLEWARE={
                "append": "tests.integration.conftest.AddScopesMiddleware"
            }), override_settings(SCOPE_FULL_ACCESS=scope_full_access):
        yield scoped_client
コード例 #15
0
 def setUp(self):
     self.patched_settings = modify_settings(
         AUTHENTICATION_BACKENDS={'append': self.backend}, )
     self.patched_settings.enable()
     self.user = User.objects.create_user(**self.user_credentials)
     self.superuser = User.objects.create_superuser(
         email='*****@*****.**',
         password='******',
     )
コード例 #16
0
 def test_authtoken_can_be_imported_when_not_included_in_installed_apps(
         self):
     import rest_framework.authtoken.models
     with modify_settings(
             INSTALLED_APPS={'remove': 'rest_framework.authtoken'}):
         importlib.reload(rest_framework.authtoken.models)
     # Set the proxy and abstract properties back to the version,
     # where authtoken is among INSTALLED_APPS.
     importlib.reload(rest_framework.authtoken.models)
コード例 #17
0
 def setUp(self):
     self.patched_settings = modify_settings(
         AUTHENTICATION_BACKENDS={'append': self.backend},
         MIDDLEWARE_CLASSES={'append': [
             'django.contrib.sessions.middleware.SessionMiddleware',
             'django.contrib.auth.middleware.AuthenticationMiddleware',
             self.middleware,
         ]},
     )
     self.patched_settings.enable()
コード例 #18
0
 def _modify_settings(self):
     with modify_settings(
             MIDDLEWARE=
         {
             'prepend': ['debug_toolbar.middleware.DebugToolbarMiddleware'],
             'append':
             ['idempotency_key.middleware.IdempotencyKeyMiddleware'],
             'remove':
             ['idempotency_key.middleware.ExemptIdempotencyKeyMiddleware'],
         }):
         yield
コード例 #19
0
def create_user_with_username(context, username):
    context.client = Client()
    user = UserFactory.create(username=username, is_staff=False, is_superuser=False)
    user.set_password(username)
    user.save()
    with modify_settings(AUTHENTICATION_BACKENDS={
        'prepend': 'django.contrib.auth.backends.ModelBackend',
        'remove': ['django_cyverse_auth.authBackends.MockLoginBackend']
    }):
        context.user = user
        context.client.login(username=username, password=username)
コード例 #20
0
def create_user_with_username(context, username):
    context.client = Client()
    user = UserFactory.create(username=username, is_staff=False, is_superuser=False)
    user.set_password(username)
    user.save()
    with modify_settings(AUTHENTICATION_BACKENDS={
        'prepend': 'django.contrib.auth.backends.ModelBackend',
        'remove': ['django_cyverse_auth.authBackends.MockLoginBackend']
    }):
        context.user = user
        context.client.login(username=username, password=username)
コード例 #21
0
 def wrapper(*args, **kwargs):
     with modify_settings(
             MIDDLEWARE=
         {
             "prepend": ["debug_toolbar.middleware.DebugToolbarMiddleware"],
             "append":
             ["idempotency_key.middleware.IdempotencyKeyMiddleware"],
             "remove":
             ["idempotency_key.middleware.ExemptIdempotencyKeyMiddleware"],
         }):
         with override_settings(DEBUG=True):
             return func(*args, **kwargs)
コード例 #22
0
ファイル: views.py プロジェクト: veryhan/Kiwi
def get(request, case_id):
    """Get the case content"""
    # Get the case
    try:
        test_case = TestCase.objects.select_related(
            'author', 'default_tester',
            'category', 'category',
            'priority', 'case_status').get(case_id=case_id)
    except ObjectDoesNotExist:
        raise Http404

    # Get the test executions
    tcrs = test_case.case_run.select_related(
        'run', 'tested_by',
        'assignee', 'case',
        'case', 'status').order_by('run__plan', 'run')

    # Render the page
    context_data = {
        'test_case': test_case,
        'test_case_runs': tcrs,
    }

    url_params = "?case=%d" % test_case.pk
    case_edit_url = reverse('testcases-edit', args=[test_case.pk])
    test_plan = request.GET.get('from_plan', 0)
    if test_plan:
        url_params += "&from_plan=%s" % test_plan
        case_edit_url += "?from_plan=%s" % test_plan

    with modify_settings(
            MENU_ITEMS={'append': [
                ('...', [
                    (
                        _('Edit'),
                        case_edit_url
                    ),
                    (
                        _('Clone'),
                        reverse('testcases-clone') + url_params
                    ),
                    (
                        _('History'),
                        "/admin/testcases/testcase/%d/history/" % test_case.pk
                    ),
                    ('-', '-'),
                    (
                        _('Delete'),
                        reverse('admin:testcases_testcase_delete', args=[test_case.pk])
                    )])]}):
        return render(request, 'testcases/get.html', context_data)
コード例 #23
0
ファイル: test_django.py プロジェクト: Reskov/dd-trace-py
def test_middleware_trace_error_500(client, test_spans):
    # ensures exceptions generated by views are traced
    with modify_settings(**(dict(
            MIDDLEWARE={
                "append":
                "tests.contrib.django.middleware.CatchExceptionMiddleware"
            }) if django.VERSION >= (2, 0, 0) else dict(
                MIDDLEWARE_CLASSES={
                    "append":
                    "tests.contrib.django.middleware.CatchExceptionMiddleware"
                }))):
        assert client.get("/error-500/").status_code == 500

    error_spans = list(test_spans.filter_spans(error=1))
    # There should be 3 spans flagged as errors
    # 1. The view span which wraps the original error
    # 2. The root span which should just be flagged as an error (no exception info)
    # 3. The middleware span that catches the exception and converts it to a 500
    assert len(error_spans) == 3

    # Test the root span
    span = test_spans.get_root_span()
    assert span.error == 1
    assert span.get_tag("http.status_code") == "500"
    assert span.get_tag(http.URL) == "http://testserver/error-500/"
    if django.VERSION >= (2, 2, 0):
        assert span.resource == "GET ^error-500/$"
    else:
        assert span.resource == "GET tests.contrib.django.views.error_500"
    assert span.get_tag(errors.ERROR_MSG) is None
    assert span.get_tag(errors.ERROR_TYPE) is None
    assert span.get_tag(errors.ERROR_STACK) is None

    # Test the view span (where the exception is generated)
    view_span = list(test_spans.filter_spans(name="django.view"))
    assert len(view_span) == 1
    view_span = view_span[0]
    assert view_span.error == 1
    # Make sure the message is somewhere in the stack trace
    assert "Error 500" in view_span.get_tag(errors.ERROR_STACK)

    # Test the catch exception middleware
    res = "tests.contrib.django.middleware.CatchExceptionMiddleware.process_exception"
    mw_span = list(test_spans.filter_spans(resource=res))[0]
    assert mw_span.error == 1
    # Make sure the message is somewhere in the stack trace
    assert "Error 500" in view_span.get_tag(errors.ERROR_STACK)
    assert mw_span.get_tag(errors.ERROR_MSG) is not None
    assert mw_span.get_tag(errors.ERROR_TYPE) is not None
    assert mw_span.get_tag(errors.ERROR_STACK) is not None
コード例 #24
0
    def test_third_engine_not_debug(self):
        engine3 = {
            'NAME': 'notdebug',
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': ['templates3'],  # where the tests put things.
        }
        modified_settings = modify_settings(TEMPLATES={'append': [engine3]})
        modified_settings.enable()
        self.addCleanup(modified_settings.disable)

        self.make_template('Hello')
        with self.assert_plugin_disabled(
                "Template debugging must be enabled in settings."):
            self.run_django_coverage()
コード例 #25
0
    def test_0005_group_views(self):
        module = import_module('boardinghouse.migrations.0005_group_views')
        # Performing this migration operation when preconditions for table move are not met
        # should be idempotent, and should not throw an exception.
        module.move_existing_to_schemata(apps, connection.schema_editor())

        # Test for coverage purposes
        module.noop(apps, connection.schema_editor())

        # Test that we get the expected values from the helper method, including when the contrib.groups
        # app has been installed.
        self.assertEqual([User.groups.through, User.user_permissions.through],
                         module.private_auth_models(apps))

        with modify_settings(PRIVATE_MODELS={'append': ['auth.groups']}):
            self.assertEqual(
                [User.groups.through, User.user_permissions.through, Group],
                module.private_auth_models(apps))

        self.assertEqual([User.groups.through, User.user_permissions.through],
                         module.private_auth_models(apps))

        # We need to test that we will move an existing table in public.X_X to <all-schemata>.X-X
        # Lets get rid of the views that normally get created:
        module.drop_views(apps, connection.schema_editor())
        # And move the template tables into public.
        with connection.cursor() as cursor:
            for model in module.private_auth_models(apps):
                db_table = model._meta.db_table
                cursor.execute(
                    'ALTER TABLE __template__.{0} SET SCHEMA public'.format(
                        db_table))

        module.move_existing_to_schemata(apps, connection.schema_editor())
        # Now re-create the views.
        module.create_views(apps, connection.schema_editor())

        # Now test that user-group relationships are not stored unless a schema is active.
        user = User.objects.create_user(username='******',
                                        password='******')
        group = Group.objects.create(name='Group')

        user.groups.add(group)

        self.assertEqual(0, user.groups.count())

        Schema.objects.create(schema='a', name='a').activate()
        user.groups.add(group)
        self.assertEqual(1, user.groups.count())
コード例 #26
0
    def test_third_engine_not_debug(self):
        from django.test import modify_settings
        engine3 = {
            'NAME': 'notdebug',
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': ['templates3'],         # where the tests put things.
        }
        modified_settings = modify_settings(TEMPLATES={'append': [engine3]})
        modified_settings.enable()
        self.addCleanup(modified_settings.disable)

        self.make_template('Hello')
        msg = "Template debugging must be enabled in settings."
        with self.assertRaisesRegexp(DjangoTemplatePluginException, msg):
            self.run_django_coverage()
コード例 #27
0
 def test_create_schema_without_contrib_template_installed(self):
     User.objects.create_superuser(
         username="******",
         password="******",
         email="*****@*****.**"
     )
     self.client.login(username='******', password='******')
     # Wow. This is a bit of a PITA to test. We can't just unset the settings, because django.contrib.admin
     # doesn't consult INSTALLED_APPS when it goes to render stuff, so it gets a KeyError, because a model
     # from a non-installed-app is found.
     TemplateAdmin = admin.site._registry[SchemaTemplate].__class__
     admin.site.unregister(SchemaTemplate)
     with modify_settings(INSTALLED_APPS={'remove': ['boardinghouse.contrib.template']}):
         response = self.client.get(reverse('admin:boardinghouse_schema_add'))
         self.assertFalse('clone_schema' in response.context['adminform'].form.fields)
     admin.site.register(SchemaTemplate, TemplateAdmin)
コード例 #28
0
    def setUp(self):
        super(MultipleEngineTests, self).setUp()

        engine = {
            'NAME': 'other',
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': ['templates2'],  # where the tests put things.
            'OPTIONS': {
                'debug': True,
            },
        }
        modified_settings = modify_settings(TEMPLATES={'append': [engine]})
        modified_settings.enable()
        self.addCleanup(modified_settings.disable)

        self.template_directory = 'templates2'
コード例 #29
0
def create_admin_and_two_regular_users(context):
    context.client = Client()
    user = UserFactory.create(username='******', is_staff=True, is_superuser=True)
    user.set_password('lenards')
    user.save()
    with modify_settings(AUTHENTICATION_BACKENDS={
        'prepend': 'django.contrib.auth.backends.ModelBackend',
        'remove': ['django_cyverse_auth.authBackends.MockLoginBackend']
    }):
        context.admin_user = user
        context.client.login(username='******', password='******')

    user_1 = UserFactory.create(username='******')
    context.user_1 = user_1
    user_2 = UserFactory.create(username='******')
    context.user_2 = user_2
コード例 #30
0
def step_impl(context):
    context.client = Client()
    user = UserFactory.create(username='******', is_staff=True, is_superuser=True)
    user.set_password('lenards')
    user.save()
    with modify_settings(AUTHENTICATION_BACKENDS={
        'prepend': 'django.contrib.auth.backends.ModelBackend',
        'remove': ['django_cyverse_auth.authBackends.MockLoginBackend']
    }):
        context.admin_user = user
        context.client.login(username='******', password='******')

    user_1 = UserFactory.create(username='******')
    context.user_1 = user_1
    user_2 = UserFactory.create(username='******')
    context.user_2 = user_2
コード例 #31
0
 def render_to_response(self, context, **response_kwargs):
     self.response_class.modify_settings = modify_settings(
         MENU_ITEMS={
             'append': [(
                 '...', [(_('Edit'),
                          reverse('testcases-edit', args=[self.object.pk])),
                         (_('Clone'), reverse('testcases-clone') +
                          "?case=%d" % self.object.pk),
                         (_('History'),
                          "/admin/testcases/testcase/%d/history/" %
                          self.object.pk), ('-', '-'),
                         (_('Delete'),
                          reverse('admin:testcases_testcase_delete',
                                  args=[self.object.pk]))])]
         })
     return super().render_to_response(context, **response_kwargs)
コード例 #32
0
 def test_create_schema_without_contrib_template_installed(self):
     User.objects.create_superuser(username="******",
                                   password="******",
                                   email="*****@*****.**")
     self.client.login(username='******', password='******')
     # Wow. This is a bit of a PITA to test. We can't just unset the settings, because django.contrib.admin
     # doesn't consult INSTALLED_APPS when it goes to render stuff, so it gets a KeyError, because a model
     # from a non-installed-app is found.
     TemplateAdmin = admin.site._registry[SchemaTemplate].__class__
     admin.site.unregister(SchemaTemplate)
     with modify_settings(
             INSTALLED_APPS={'remove': ['boardinghouse.contrib.template']}):
         response = self.client.get(
             reverse('admin:boardinghouse_schema_add'))
         self.assertFalse(
             'clone_schema' in response.context['adminform'].form.fields)
     admin.site.register(SchemaTemplate, TemplateAdmin)
コード例 #33
0
def test_eventlog_fires():
    from django.test import modify_settings
    with modify_settings(INSTALLED_APPS={
        'remove': ['jackfrost'],
        'append': ['pinax.eventlog']
    }):
        reader = URLReader(urls=[reverse('content_b')])
        read_results = tuple(reader())
        writer = URLWriter(data=read_results)
        with sortof_tidying_signal(signal=write_page):
            output = writer.write(read_results[0])
        assert Log.objects.count() == 1
        logged = Log.objects.get()
        assert logged.action == 'URL "/content/a/b/" written'
        assert 'ReadResult' in logged.extra
        assert 'WriteResult' in logged.extra
        assert logged.extra['WriteResult']['md5'] == 'f8ee7c48dfd7f776b3d011950a5c02d1'
コード例 #34
0
    def setUp(self):
        super(MultipleEngineTests, self).setUp()

        # Move to module imports once we drop support for Django < 1.7
        from django.test import modify_settings
        engine = {
            'NAME': 'other',
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': ['templates2'],         # where the tests put things.
            'OPTIONS': {
                'debug': True,
            },
        }
        modified_settings = modify_settings(TEMPLATES={'append': [engine]})
        modified_settings.enable()
        self.addCleanup(modified_settings.disable)

        self.template_directory = 'templates2'
コード例 #35
0
def test_eventlog_fires():
    from django.test import modify_settings
    with modify_settings(INSTALLED_APPS={
            'remove': ['jackfrost'],
            'append': ['pinax.eventlog']
    }):
        reader = URLReader(urls=[reverse('content_b')])
        read_results = tuple(reader())
        writer = URLWriter(data=read_results)
        with sortof_tidying_signal(signal=write_page):
            output = writer.write(read_results[0])
        assert Log.objects.count() == 1
        logged = Log.objects.get()
        assert logged.action == 'URL "/content/a/b/" written'
        assert 'ReadResult' in logged.extra
        assert 'WriteResult' in logged.extra
        assert logged.extra['WriteResult'][
            'md5'] == 'f8ee7c48dfd7f776b3d011950a5c02d1'
コード例 #36
0
ファイル: views.py プロジェクト: jesseclin/Kiwi
def get(request, case_id):  # pylint: disable=missing-permission-required
    """Get the case content"""
    # Get the case
    try:
        test_case = TestCase.objects.select_related(
            'author', 'default_tester',
            'category', 'category',
            'priority', 'case_status').get(case_id=case_id)
    except ObjectDoesNotExist:
        raise Http404

    # Get the test executions
    tcrs = test_case.case_run.select_related(
        'run', 'tested_by',
        'assignee', 'case',
        'case', 'status').order_by('run__plan', 'run')

    # Render the page
    context_data = {
        'test_case': test_case,
        'executions': tcrs,
    }

    with modify_settings(
            MENU_ITEMS={'append': [
                ('...', [
                    (
                        _('Edit'),
                        reverse('testcases-edit', args=[test_case.pk])
                    ),
                    (
                        _('Clone'),
                        reverse('testcases-clone') + "?case=%d" % test_case.pk
                    ),
                    (
                        _('History'),
                        "/admin/testcases/testcase/%d/history/" % test_case.pk
                    ),
                    ('-', '-'),
                    (
                        _('Delete'),
                        reverse('admin:testcases_testcase_delete', args=[test_case.pk])
                    )])]}):
        return render(request, 'testcases/get.html', context_data)
コード例 #37
0
    def test_0005_group_views(self):
        module = import_module('boardinghouse.migrations.0005_group_views')
        # Performing this migration operation when preconditions for table move are not met
        # should be idempotent, and should not throw an exception.
        module.move_existing_to_schemata(apps, connection.schema_editor())

        # Test for coverage purposes
        module.noop(apps, connection.schema_editor())

        # Test that we get the expected values from the helper method, including when the contrib.groups
        # app has been installed.
        self.assertEqual([User.groups.through, User.user_permissions.through], module.private_auth_models(apps))

        with modify_settings(PRIVATE_MODELS={'append': ['auth.groups']}):
            self.assertEqual([
                User.groups.through, User.user_permissions.through, Group
            ], module.private_auth_models(apps))

        self.assertEqual([User.groups.through, User.user_permissions.through], module.private_auth_models(apps))

        # We need to test that we will move an existing table in public.X_X to <all-schemata>.X-X
        # Lets get rid of the views that normally get created:
        module.drop_views(apps, connection.schema_editor())
        # And move the template tables into public.
        with connection.cursor() as cursor:
            for model in module.private_auth_models(apps):
                db_table = model._meta.db_table
                cursor.execute('ALTER TABLE __template__.{0} SET SCHEMA public'.format(db_table))

        module.move_existing_to_schemata(apps, connection.schema_editor())
        # Now re-create the views.
        module.create_views(apps, connection.schema_editor())

        # Now test that user-group relationships are not stored unless a schema is active.
        user = User.objects.create_user(username='******', password='******')
        group = Group.objects.create(name='Group')

        user.groups.add(group)

        self.assertEqual(0, user.groups.count())

        Schema.objects.create(schema='a', name='a').activate()
        user.groups.add(group)
        self.assertEqual(1, user.groups.count())
コード例 #38
0
ファイル: test_auth_backends.py プロジェクト: zalmoxis/django
 def setUp(self):
     self.patched_settings = modify_settings(
         AUTHENTICATION_BACKENDS={'append': self.backend},
     )
     self.patched_settings.enable()
     self.create_users()
    def test_process_request(self):

        with modify_settings(
            MIDDLEWARE_CLASSES={'append': [
                'django.contrib.sites.middleware.CurrentSiteMiddleware',
                'hacs.middleware.DynamicRouteMiddleware',
                'hacs.middleware.FirewallMiddleware',
                'hacs.middleware.AccessControlMiddleware'
            ]}
        ):
            browser = Client()
            response = browser.get('/tests/content-manager-view/')
            fake_request = RequestFactory().request()
            fake_request.urlconf = None
            fake_request.user = self.user_model_cls.objects.get(**{self.user_model_cls.USERNAME_FIELD: TEST_USER_NAME})
            fake_request.site = Site.objects.get(domain=TEST_HOST_NAME)

            user_key = get_user_key(fake_request)
            # AS anonymous user so urlconf module should default site
            expected_module = get_generated_urlconf_module(get_generated_urlconf_file(TEST_ROUTE_NAME))
            self.assertEqual(expected_module, response.wsgi_request.urlconf)
            # As anonymous user, so forbidden!, @todo: should be redirected to login page?
            self.assertEqual(403, response.status_code)

            browser.login(username=TEST_USER_NAME, password=TEST_USER_PASSWORD)
            response = browser.get('/tests/content-manager-view/')
            # Authenticated Editor user should have access
            self.assertEqual(200, response.status_code)

            # User has dedicated urlconf module, so it should be assigned
            expected_module = get_generated_urlconf_module(get_generated_urlconf_file(TEST_USER_ROUTE_NAME))
            self.assertEqual(expected_module, response.wsgi_request.urlconf)

            ContentTypeRoutingRules.objects.filter(content_type=ContentType.objects.get_for_model(self.user_model_cls),
                                                   object_id=response.wsgi_request.user.id).delete()

            # Make Session works, as we remove user's route but still should same
            response = browser.get('/tests/content-manager-view/')
            self.assertEqual(expected_module, response.wsgi_request.urlconf)
            self.assertEqual(expected_module, self.cache.get(user_key)['urlconf'])

            # Make sure caching works
            browser.logout()
            browser.login(username=TEST_USER_NAME, password=TEST_USER_PASSWORD)
            response = browser.get('/tests/content-manager-view/')
            self.assertEqual(expected_module, response.wsgi_request.urlconf)

            # Now we are cleaning session and cache as well, so we expect urlconf should come group
            browser.logout()
            self.cache.clear()
            browser.login(username=TEST_USER_NAME, password=TEST_USER_PASSWORD)
            response = browser.get('/tests/content-manager-view/')

            expected_module = get_generated_urlconf_module(get_generated_urlconf_file(TEST_GROUP_ROUTE_NAME))
            self.assertEqual(expected_module, response.wsgi_request.urlconf)

            ContentTypeRoutingRules.objects.filter(content_type=ContentType.objects.get_for_model(HacsGroupModel)).delete()

            # Now we are cleaning session and cache as well, group's route also cleaned
            # so we expect urlconf should be like site urlconf
            browser.logout()
            self.cache.clear()
            browser.login(username=TEST_USER_NAME, password=TEST_USER_PASSWORD)
            response = browser.get('/tests/content-manager-view/')

            expected_module = get_generated_urlconf_module(get_generated_urlconf_file(TEST_ROUTE_NAME))
            self.assertEqual(expected_module, response.wsgi_request.urlconf)
コード例 #40
0
ファイル: test_remote_user.py プロジェクト: 277800076/django
 def setUp(self):
     self.patched_settings = modify_settings(
         AUTHENTICATION_BACKENDS={'append': self.backend},
         MIDDLEWARE_CLASSES={'append': self.middleware},
     )
     self.patched_settings.enable()