コード例 #1
0
    def test_token_expiry_is_extended_with_auto_refresh_activated(self):
        ttl = knox_settings.TOKEN_TTL
        original_time = datetime(2018, 7, 25, 0, 0, 0, 0)

        with freeze_time(original_time):
            instance, token = AuthToken.objects.create(user=self.user)

        self.client.credentials(HTTP_AUTHORIZATION=('Token %s' % token))
        five_hours_later = original_time + timedelta(hours=5)
        with override_settings(REST_KNOX=auto_refresh_knox):
            reload_module(auth)  # necessary to reload settings in core code
            with freeze_time(five_hours_later):
                response = self.client.get(root_url, {}, format='json')
        reload_module(auth)
        self.assertEqual(response.status_code, 200)

        # original expiry date was extended:
        new_expiry = AuthToken.objects.get().expiry
        expected_expiry = original_time + ttl + timedelta(hours=5)
        self.assertEqual(
            new_expiry.replace(tzinfo=None), expected_expiry,
            "Expiry time should have been extended to {} but is {}.".format(
                expected_expiry, new_expiry))

        # token works after original expiry:
        after_original_expiry = original_time + ttl + timedelta(hours=1)
        with freeze_time(after_original_expiry):
            response = self.client.get(root_url, {}, format='json')
            self.assertEqual(response.status_code, 200)

        # token does not work after new expiry:
        new_expiry = AuthToken.objects.get().expiry
        with freeze_time(new_expiry + timedelta(seconds=1)):
            response = self.client.get(root_url, {}, format='json')
            self.assertEqual(response.status_code, 401)
コード例 #2
0
ファイル: test_views.py プロジェクト: semente/django-smuggler
 def test_load_from_disk(self):
     reload_module(settings)
     self.assertEqual(0, Page.objects.count())
     self.client.post(self.url, {
         'picked_files': p('..', 'smuggler_fixtures', 'page_dump.json')
     }, follow=True)
     self.assertEqual(1, Page.objects.count())
コード例 #3
0
ファイル: control.py プロジェクト: zetacloud/esdc-ce
    def local_settings_update(self, changes):
        """Update local_settings.py with new content created according to the changes parameter.
         The changes parameter should be a list generated by check_modules()"""
        if not local_settings:
            raise SystemError('Missing local_settings.py!')

        logger.info(
            'Creating new local_settings.py with following changes: %s',
            self._show_changes(changes))
        target = inspect.getsourcefile(local_settings)
        data = self._local_settings_new(changes)
        backup = inspect.getsource(local_settings)

        logger.warn('Updating %s', target)
        self._save_file(target, data)

        try:
            reload_module(local_settings)
        except ImportError as e:
            logger.exception(e)
            logger.warn('Restoring %s from backup', target)
            self._save_file(target, backup)
        else:
            # Force reloading of django settings
            settings._wrapped = empty
コード例 #4
0
 def disable(self):
     super(override_tmpcadir, self).disable()
     self.mock.stop()
     self.mock_.stop()
     self.mockc.stop()
     shutil.rmtree(self.options['CA_DIR'])
     reload_module(ca_settings)
コード例 #5
0
    def test_ordering_with_nonstandard_ordering_param(self):
        with override_settings(REST_FRAMEWORK={'ORDERING_PARAM': 'order'}):
            reload_module(filters)

            class OrderingListView(generics.ListAPIView):
                queryset = OrderingFilterModel.objects.all()
                serializer_class = OrderingFilterSerializer
                filter_backends = (filters.OrderingFilter, )
                ordering = ('title', )
                ordering_fields = ('text', )

            view = OrderingListView.as_view()
            request = factory.get('/', {'order': 'text'})
            response = view(request)
            self.assertEqual(response.data, [
                {
                    'id': 1,
                    'title': 'zyx',
                    'text': 'abc'
                },
                {
                    'id': 2,
                    'title': 'yxw',
                    'text': 'bcd'
                },
                {
                    'id': 3,
                    'title': 'xwv',
                    'text': 'cde'
                },
            ])

        reload_module(filters)
コード例 #6
0
    def test_token_expiry_is_extended_with_auto_refresh_activated(self):
        ttl = knox_settings.TOKEN_TTL
        original_time = datetime(2018, 7, 25, 0, 0, 0, 0)

        with freeze_time(original_time):
            token_key = AuthToken.objects.create(user=self.user)

        self.client.credentials(HTTP_AUTHORIZATION=('Token %s' % token_key))
        five_hours_later = original_time + timedelta(hours=5)
        with override_settings(REST_KNOX=auto_refresh_knox):
            reload_module(auth)  # necessary to reload settings in core code
            with freeze_time(five_hours_later):
                response = self.client.get(root_url, {}, format='json')
        reload_module(auth)
        self.assertEqual(response.status_code, 200)

        # original expiry date was extended:
        new_expiry = AuthToken.objects.get().expires
        expected_expiry = original_time + ttl + timedelta(hours=5)
        self.assertEqual(new_expiry.replace(tzinfo=None), expected_expiry,
                         "Expiry time should have been extended to {} but is {}."
                         .format(expected_expiry, new_expiry))

        # token works after original expiry:
        after_original_expiry = original_time + ttl + timedelta(hours=1)
        with freeze_time(after_original_expiry):
            response = self.client.get(root_url, {}, format='json')
            self.assertEqual(response.status_code, 200)

        # token does not work after new expiry:
        new_expiry = AuthToken.objects.get().expires
        with freeze_time(new_expiry + timedelta(seconds=1)):
            response = self.client.get(root_url, {}, format='json')
            self.assertEqual(response.status_code, 401)
コード例 #7
0
 def test_load_from_disk(self):
     reload_module(settings)
     self.assertEqual(0, Page.objects.count())
     self.client.post(
         self.url,
         {'picked_files': p('..', 'smuggler_fixtures', 'page_dump.json')},
         follow=True)
     self.assertEqual(1, Page.objects.count())
コード例 #8
0
 def test_requires_at_least_one_field(self):
     reload_module(settings)
     form = ImportForm({}, {})
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors, {
         '__all__': [
             'At least one fixture file needs to be uploaded or selected.'
         ]})
コード例 #9
0
 def test_default_upload_config(self):
     reload_module(local_settings)
     from django_drf_filepond import models
     upload_tmp = models.storage.location
     LOG.debug('We have a settings value of: %s' % (upload_tmp))
     self.assertEqual(
         upload_tmp,
         os.path.join(local_settings.BASE_DIR, 'filepond_uploads'))
コード例 #10
0
ファイル: test_forms.py プロジェクト: semente/django-smuggler
 def test_requires_at_least_one_field(self):
     reload_module(settings)
     form = ImportForm({}, {})
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors, {
         '__all__': [
             'At least one fixture file needs to be uploaded or selected.'
         ]})
コード例 #11
0
ファイル: base.py プロジェクト: zwd1990/django-ca
    def tearDownClass(cls):
        overridden = False
        if hasattr(cls, '_cls_overridden_context'):
            overridden = True

        super(DjangoCATestCase, cls).tearDownClass()

        if overridden is True:
            reload_module(ca_settings)
コード例 #12
0
    def test_widget_with_default_settings(self):
        """
            Test the widget with default settings which is defined in django settings file
        """
        zoom = 18
        map_size = "400x400"
        thumbnail_size = "100x100"
        widget_settings = {
            "GoogleStaticOverlayMapWidget": (
                ("zoom", zoom),
                ("size", map_size),
                ("thumbnail_size", thumbnail_size),
            ),
            "GOOGLE_MAP_API_KEY": GOOGLE_MAP_API_KEY,
        }

        with override_settings(MAP_WIDGETS=widget_settings):
            reload_module(mw_widgets)
            widget = mw_widgets.GoogleStaticOverlayMapWidget()
            settings = widget.map_settings

            # test `map_settings` method
            self.assertEqual(settings.get("zoom"), zoom)
            self.assertEqual(settings.get("size"), map_size)
            self.assertEqual(settings.get("thumbnail_size"), thumbnail_size)

            # test render
            point = Point(-92.9903, 34.7392)
            widget_html_elem_id = "id_location"
            widget_html_elem_name = "location"
            result = widget.render(name=widget_html_elem_name, value=point, attrs={'id': widget_html_elem_id})
            map_image_url = widget.get_image_url(point)
            self.assertIn(GOOGLE_MAP_API_KEY, map_image_url)
            self.assertIn(html_escape(map_image_url), result)

            # test map_image_url
            res = urlopen(map_image_url)
            self.assertEqual(res.getcode(), 200)
            if hasattr(res.info(), 'type'):
                self.assertEqual(res.info().type, "image/png")
            else:
                self.assertEqual(res.info().get_content_type(), "image/png")

            # test thumbnail_image_url
            thumbnail_url = widget.get_thumbnail_url(point)
            res = urlopen(thumbnail_url)
            self.assertEqual(res.getcode(), 200)
            if hasattr(res.info(), 'type'):
                self.assertEqual(res.info().type, "image/png")
            else:
                self.assertEqual(res.info().get_content_type(), "image/png")

            # test map_image_url with `None` value
            result = widget.render(name=widget_html_elem_name, value=None, attrs={'id': widget_html_elem_id})
            thumbnail_url = widget.get_thumbnail_url(None)
            self.assertIn(thumbnail_url, result)
コード例 #13
0
    def test_widget_with_default_settings(self):
        """
            Test the widget with default settings which is defined in django settings file
        """
        zoom = 18
        map_size = "400x400"
        thumbnail_size = "100x100"
        widget_settings = {
            "GoogleStaticOverlayMapWidget": (
                ("zoom", zoom),
                ("size", map_size),
                ("thumbnail_size", thumbnail_size),
            ),
            "GOOGLE_MAP_API_KEY": GOOGLE_MAP_API_KEY,
        }

        with override_settings(MAP_WIDGETS=widget_settings):
            reload_module(mw_widgets)
            widget = mw_widgets.GoogleStaticOverlayMapWidget()
            settings = widget.map_settings

            # test `map_settings` method
            self.assertEqual(settings.get("zoom"), zoom)
            self.assertEqual(settings.get("size"), map_size)
            self.assertEqual(settings.get("thumbnail_size"), thumbnail_size)

            # test render
            point = Point(-92.9903, 34.7392)
            widget_html_elem_id = "id_location"
            widget_html_elem_name = "location"
            result = widget.render(name=widget_html_elem_name, value=point, attrs={'id': widget_html_elem_id})
            map_image_url = widget.get_image_url(point)
            self.assertIn(GOOGLE_MAP_API_KEY, map_image_url)
            self.assertIn(html_escape(map_image_url), result)

            # test map_image_url
            res = urlopen(map_image_url)
            self.assertEqual(res.getcode(), 200)
            if hasattr(res.info(), 'type'):
                self.assertEqual(res.info().type, "image/png")
            else:
                self.assertEqual(res.info().get_content_type(), "image/png")

            # test thumbnail_image_url
            thumbnail_url = widget.get_thumbnail_url(point)
            res = urlopen(thumbnail_url)
            self.assertEqual(res.getcode(), 200)
            if hasattr(res.info(), 'type'):
                self.assertEqual(res.info().type, "image/png")
            else:
                self.assertEqual(res.info().get_content_type(), "image/png")

            # test map_image_url with `None` value
            result = widget.render(name=widget_html_elem_name, value=None, attrs={'id': widget_html_elem_id})
            thumbnail_url = widget.get_thumbnail_url(None)
            self.assertIn(thumbnail_url, result)
コード例 #14
0
 def test_upload_config_no_base_dir(self):
     LOG.debug('******SETTINGS.BASE_DIR: %s' % settings.BASE_DIR)
     del settings.BASE_DIR
     reload_module(local_settings)
     LOG.debug('******LOCAL_SETTINGS.BASE_DIR: %s' %
               local_settings.BASE_DIR)
     up_dir = os.path.join(local_settings.BASE_DIR, 'filepond_uploads')
     LOG.debug('We have a settings value of: %s' % (up_dir))
     app_base = os.path.dirname(django_drf_filepond.__file__)
     self.assertEqual(up_dir, os.path.join(app_base, 'filepond_uploads'))
コード例 #15
0
    def setUp(self):
        # settings and storage modules should be reloaded
        reload_module(settings)
        reload_module(storage)

        self.factory = RequestFactory()
        self.user = get_user_model().objects.create_user("test_user", "*****@*****.**", "123456")
        self.request = RequestFactory().get('/')
        self.request.session = mock.MagicMock()
        self.request.user = self.user
コード例 #16
0
ファイル: base.py プロジェクト: xrmx/django-stored-messages
    def setUp(self):
        # settings and storage modules should be reloaded
        reload_module(settings)
        reload_module(storage)

        self.factory = RequestFactory()
        self.user = get_user_model().objects.create_user("test_user", "*****@*****.**", "123456")
        self.request = RequestFactory().get("/")
        self.request.session = mock.MagicMock()
        self.request.user = self.user
コード例 #17
0
 def test_load_and_save(self):
     reload_module(settings)
     f = SimpleUploadedFile(
         'uploaded.json', b'[{"pk": 1, "model": "test_app.page",'
         b' "fields": {"title": "test",'
         b' "path": "", "body": "test body"}}]')
     self.client.post(self.url, {'store': True, 'uploads': f}, follow=True)
     self.assertTrue(
         os.path.exists(p('..', 'smuggler_fixtures', 'uploaded.json')))
     os.unlink(p('..', 'smuggler_fixtures', 'uploaded.json'))
コード例 #18
0
    def test_widget_with_default_settings(self):
        """
            Test the widget with default settings which is defined in django settings file
        """
        zoom = 15
        default_map_center = [51.5073509, -0.12775829999]
        widget_settings = {
            "GooglePointFieldWidget": (
                ("zoom", zoom),
                ("mapCenterLocation", default_map_center),
            )
        }

        with override_settings(MAP_WIDGETS=widget_settings):
            reload_module(mw_widgets)
            widget = mw_widgets.GooglePointFieldWidget()
            self.assertEqual(hasattr(widget, "settings"), True)
            self.assertEqual(hasattr(widget, "settings_namespace"), True)
            self.assertEqual(isinstance(widget.media, django_forms.Media),
                             True)

            # test `map_options` method
            options_str = widget.map_options()
            options = json.loads(options_str)
            self.assertEqual(options.get("zoom"), zoom)
            self.assertEqual(options.get("mapCenterLocation"),
                             default_map_center)

            # test render with Point object value
            point = Point(-104.9903, 39.7392, srid=DJANGO_DEFAULT_SRID_VALUE)
            widget_html_elem_id = "id_location"
            widget_html_elem_name = "location"
            result = widget.render(name=widget_html_elem_name,
                                   value=point,
                                   attrs={'id': widget_html_elem_id})
            self.assertIn(widget.serialize(point), result)
            self.assertIn(
                get_textarea_html(widget_html_elem_id, widget_html_elem_name,
                                  point), result)
            self.assertIn(escapejs(options_str), result)

            # test render with serialized data value
            result = widget.render(name=widget_html_elem_name,
                                   value=widget.serialize(point))
            self.assertIn(widget.serialize(point), result)

            # test widget `attrs` param
            w = mw_widgets.GooglePointFieldWidget(attrs={"max-height": 600})
            self.assertIn("max-height", w.attrs)

            # test widget render `attrs` param with `None` value
            self.assertIn(
                widget_html_elem_name,
                w.render(name=widget_html_elem_name, value=None, attrs=None))
コード例 #19
0
    def enable(self):
        self.options['CA_DIR'] = tempfile.mkdtemp()
        self.mock = patch.object(ca_storage, 'location',
                                 self.options['CA_DIR'])
        self.mock_ = patch.object(ca_storage, '_location',
                                  self.options['CA_DIR'])
        self.mock.start()
        self.mock_.start()

        super(override_tmpcadir, self).enable()
        reload_module(ca_settings)
コード例 #20
0
ファイル: test_urls.py プロジェクト: jgmize/nucleus
    def test_override_verify_class(self):
        # Reload so that the settings.BROWSERID_VERIFY_CLASS takes effect.
        path = 'django_browserid.tests.test_urls.MyVerifyClass'
        with self.settings(BROWSERID_VERIFY_CLASS=path):
            reload_module(urls)

        view = resolve('/browserid/login/', urls).func
        self.assertEqual(view, MyVerifyClass.as_view())

        # Reset urls back to normal.
        reload_module(urls)
コード例 #21
0
    def test_override_verify_class(self):
        # Reload so that the settings.BROWSERID_VERIFY_CLASS takes effect.
        path = "django_browserid.tests.test_urls.MyVerifyClass"
        with self.settings(BROWSERID_VERIFY_CLASS=path):
            reload_module(urls)

        view = resolve("/browserid/login/", urls).func
        self.assertEqual(view, MyVerifyClass.as_view())

        # Reset urls back to normal.
        reload_module(urls)
コード例 #22
0
ファイル: test_views.py プロジェクト: semente/django-smuggler
 def test_load_from_disk_and_upload(self):
     reload_module(settings)
     f = open(p('..', 'smuggler_fixtures', 'page_dump.json'), mode='rb')
     response = self.client.post(self.url, {
         'uploads': f,
         'picked_files': p('..', 'smuggler_fixtures', 'page_dump.json')
     }, follow=True)
     response_messages = list(response.context['messages'])
     self.assertEqual(1, len(response_messages))
     self.assertEqual(messages.INFO, response_messages[0].level)
     self.assertEqual(response_messages[0].message,
                      'Successfully imported 2 files. Loaded 2 objects.')
コード例 #23
0
def reload_urls(settings, urlconf=None, cms_apps=True):
    if 'cms.urls' in sys.modules:
        reload_module(sys.modules['cms.urls'])
    if urlconf is None:
        urlconf = settings.ROOT_URLCONF
    if urlconf in sys.modules:
        reload_module(sys.modules[urlconf])
    clear_url_caches()
    if cms_apps:
        from cms.appresolver import clear_app_resolvers, get_app_patterns
        clear_app_resolvers()
        get_app_patterns()
コード例 #24
0
ファイル: base.py プロジェクト: zwd1990/django-ca
    def enable(self):
        super(override_settings, self).enable()

        try:
            reload_module(ca_settings)
        except Exception:  # pragma: no cover
            # If an exception is thrown reloading ca_settings, we disable everything again.
            # Otherwise an exception in ca_settings will cause overwritten settings to persist
            # to the next tests.
            super(override_settings, self).disable()
            reload_module(ca_settings)
            raise
コード例 #25
0
ファイル: utils.py プロジェクト: nephila/djangocms-helper
def reload_urls(settings, urlconf=None, cms_apps=True):
    if 'cms.urls' in sys.modules:
        reload_module(sys.modules['cms.urls'])
    if urlconf is None:
        urlconf = settings.ROOT_URLCONF
    if urlconf in sys.modules:
        reload_module(sys.modules[urlconf])
    clear_url_caches()
    if cms_apps:
        from cms.appresolver import clear_app_resolvers, get_app_patterns
        clear_app_resolvers()
        get_app_patterns()
コード例 #26
0
    def test_invalid_prefix_return_401(self):

        with override_settings(REST_KNOX=auth_header_prefix_knox):
            reload_module(auth)
            token = AuthToken.objects.create(user=self.user)
            self.client.credentials(HTTP_AUTHORIZATION=('Token %s' % token))
            failed_response = self.client.get(root_url)
            self.client.credentials(HTTP_AUTHORIZATION=('Baerer %s' % token))
            response = self.client.get(root_url)
        reload_module(auth)
        self.assertEqual(failed_response.status_code, 401)
        self.assertEqual(response.status_code, 200)
コード例 #27
0
    def test_invalid_prefix_return_401(self):

        with override_settings(REST_KNOX=auth_header_prefix_knox):
            reload_module(auth)
            instance, token = AuthToken.objects.create(user=self.user)
            self.client.credentials(HTTP_AUTHORIZATION=('Token %s' % token))
            failed_response = self.client.get(root_url)
            self.client.credentials(HTTP_AUTHORIZATION=('Baerer %s' % token))
            response = self.client.get(root_url)
        reload_module(auth)
        self.assertEqual(failed_response.status_code, 401)
        self.assertEqual(response.status_code, 200)
コード例 #28
0
ファイル: test_views.py プロジェクト: semente/django-smuggler
 def test_load_and_save(self):
     reload_module(settings)
     f = SimpleUploadedFile('uploaded.json',
                            b'[{"pk": 1, "model": "test_app.page",'
                            b' "fields": {"title": "test",'
                            b' "path": "", "body": "test body"}}]')
     self.client.post(self.url, {
         'store': True,
         'uploads': f
     }, follow=True)
     self.assertTrue(os.path.exists(
         p('..', 'smuggler_fixtures', 'uploaded.json')))
     os.unlink(p('..', 'smuggler_fixtures', 'uploaded.json'))
コード例 #29
0
    def tearDownClass(cls):
        overridden = False
        ca_dir = None
        if hasattr(cls, '_cls_overridden_context'):
            overridden = True
            ca_dir = cls._cls_overridden_context.options.get('CA_DIR')

        super(DjangoCATestCase, cls).tearDownClass()

        if overridden is True:
            reload_module(ca_settings)
            if ca_dir is not None:
                shutil.rmtree(ca_dir)
コード例 #30
0
ファイル: base.py プロジェクト: jcmcken/django-ca
    def tearDownClass(cls):
        overridden = False
        ca_dir = None
        if hasattr(cls, '_cls_overridden_context'):
            overridden = True
            ca_dir = cls._cls_overridden_context.options.get('CA_DIR')

        super(DjangoCATestCase, cls).tearDownClass()

        if overridden is True:
            reload_module(ca_settings)
            if ca_dir is not None:
                shutil.rmtree(ca_dir)
コード例 #31
0
 def test_expiry_present_also_when_none(self):
     with override_settings(REST_KNOX=token_no_expiration_knox):
         reload_module(views)
         self.assertEqual(AuthToken.objects.count(), 0)
         url = reverse('knox_login')
         self.client.credentials(HTTP_AUTHORIZATION=get_basic_auth_header(
             self.username, self.password))
         response = self.client.post(url, {}, format='json')
         self.assertEqual(token_no_expiration_knox["TOKEN_TTL"], None)
         self.assertEqual(response.status_code, 200)
         self.assertIn('token', response.data)
         self.assertIn('expiry', response.data)
         self.assertEqual(response.data['expiry'], None)
     reload_module(views)
コード例 #32
0
    def test_widget_with_default_settings(self):
        """
            Test the widget with default settings which is defined in django settings file
        """
        zoom = 15
        default_map_center = [51.5073509, -0.12775829999]
        widget_settings = {
            "GooglePointFieldWidget": (
                ("zoom", zoom),
                ("mapCenterLocation", default_map_center),
            )
        }

        with override_settings(MAP_WIDGETS=widget_settings):
            reload_module(mw_widgets)
            widget = mw_widgets.GooglePointFieldInlineWidget()
            self.assertEqual(hasattr(widget, "settings"), True)
            self.assertEqual(hasattr(widget, "settings_namespace"), True)
            self.assertEqual(isinstance(widget.media, django_forms.Media), True)

            # test `map_options` method
            options_str = widget.map_options()
            options = json.loads(options_str)
            self.assertEqual(options.get("zoom"), zoom)
            self.assertEqual(options.get("mapCenterLocation"), default_map_center)

            # test render with Point object value
            point = Point(-104.9903, 39.7392)
            widget_html_elem_id = "id_location"
            widget_html_elem_name = "location"
            result = widget.render(name=widget_html_elem_name, value=point, attrs={'id': widget_html_elem_id})
            self.assertIn(widget.serialize(point), result)
            self.assertIn(get_textarea_html(widget_html_elem_id, widget_html_elem_name, point), result)

            # test render with serialized data value
            result = widget.render(name=widget_html_elem_name, value=widget.serialize(point))
            self.assertIn(widget.serialize(point), result)

            # test widget as a formset empty form
            result = widget.render(name=widget_html_elem_name, value=point, attrs={'id': widget_html_elem_id})
            self.assertIn(widget.serialize(point), result)
            inline_widget_data = widget.get_js_widget_data(widget_html_elem_name, widget_html_elem_id)
            self.assertIn(escapejs(json.dumps(inline_widget_data)), result)

            # test widget `attrs` param
            w = mw_widgets.GooglePointFieldInlineWidget(attrs={"max-height": 600})
            self.assertIn("max-height", w.attrs)

            # test widget render `attrs` param with `None` value
            self.assertIn(widget_html_elem_name, w.render(name=widget_html_elem_name, value=None, attrs=None))
コード例 #33
0
 def test_load_from_disk_and_upload(self):
     reload_module(settings)
     f = open(p('..', 'smuggler_fixtures', 'page_dump.json'), mode='rb')
     response = self.client.post(
         self.url, {
             'uploads': f,
             'picked_files': p('..', 'smuggler_fixtures', 'page_dump.json')
         },
         follow=True)
     response_messages = list(response.context['messages'])
     self.assertEqual(1, len(response_messages))
     self.assertEqual(messages.INFO, response_messages[0].level)
     self.assertEqual(response_messages[0].message,
                      'Successfully imported 2 files. Loaded 2 objects.')
コード例 #34
0
    def test_get_raw_token(self):
        # Should return None if header lacks correct type keyword
        with override_api_settings(AUTH_HEADER_TYPES='JWT'):
            reload_module(authentication)
            self.assertIsNone(self.backend.get_raw_token(self.fake_header))
        reload_module(authentication)

        # Should raise error if header is malformed
        with self.assertRaises(AuthenticationFailed):
            self.backend.get_raw_token(b'Bearer one two')

        with self.assertRaises(AuthenticationFailed):
            self.backend.get_raw_token(b'Bearer')

        # Otherwise, should return unvalidated token in header
        self.assertEqual(self.backend.get_raw_token(self.fake_header),
                         self.fake_token)

        # Should return token if header has one of many valid token types
        with override_api_settings(AUTH_HEADER_TYPES=('JWT', 'Bearer')):
            reload_module(authentication)
            self.assertEqual(
                self.backend.get_raw_token(self.fake_header),
                self.fake_token,
            )
        reload_module(authentication)
コード例 #35
0
 def reload_urlconf(urlconf=None):
     if 'cms.urls' in sys.modules:
         reload_module(sys.modules['cms.urls'])
     if urlconf is None:
         urlconf = settings.ROOT_URLCONF
     if urlconf in sys.modules:
         reload_module(sys.modules[urlconf])
     clear_url_caches()
     try:
         from cms.appresolver import clear_app_resolvers, get_app_patterns
         clear_app_resolvers()
         get_app_patterns()
     except ImportError:
         pass
コード例 #36
0
    def test_widget_with_custom_settings(self):
        """
            Test the widget with custom settings which is updated by `settings` parameter
        """
        zoom = 18
        map_size = "300x300"
        thumbnail_size = "75x75"

        widget_settings = {
            "GOOGLE_MAP_API_KEY": GOOGLE_MAP_API_KEY,
        }

        with override_settings(MAP_WIDGETS=widget_settings):
            reload_module(mw_widgets)
            widget = mw_widgets.GoogleStaticOverlayMapWidget(
                zoom=zoom, size=map_size, thumbnail_size=thumbnail_size)
            settings = widget.map_settings

            # test `map_settings` method
            self.assertEqual(settings.get("zoom"), zoom)
            self.assertEqual(settings.get("size"), map_size)

            # test render
            point = Point(-105.9903, 38.7392)
            widget_html_elem_id = "id_location"
            widget_html_elem_name = "location"
            result = widget.render(name=widget_html_elem_name,
                                   value=point,
                                   attrs={'id': widget_html_elem_id})
            map_image_url = widget.get_image_url(point)
            self.assertIn(GOOGLE_MAP_API_KEY, map_image_url)
            self.assertIn(html_escape(map_image_url), result)

            # test map_image_url
            res = urlopen(map_image_url)
            self.assertEqual(res.getcode(), 200)
            if hasattr(res.info(), 'type'):
                self.assertEqual(res.info().type, "image/png")
            else:
                self.assertEqual(res.info().get_content_type(), "image/png")

            # test thumbnail_image_url
            thumbnail_url = widget.get_thumbnail_url(point)
            res = urlopen(thumbnail_url)
            self.assertEqual(res.getcode(), 200)
            if hasattr(res.info(), 'type'):
                self.assertEqual(res.info().type, "image/png")
            else:
                self.assertEqual(res.info().get_content_type(), "image/png")
コード例 #37
0
    def test_exceed_token_amount_per_user(self):

        with override_settings(REST_KNOX=token_user_limit_knox):
            reload_module(views)
            for _ in range(10):
                AuthToken.objects.create(user=self.user)
            url = reverse('knox_login')
            self.client.credentials(HTTP_AUTHORIZATION=get_basic_auth_header(
                self.username, self.password))
            response = self.client.post(url, {}, format='json')
        reload_module(views)
        self.assertEqual(response.status_code, 403)
        self.assertEqual(
            response.data,
            {"error": "Maximum amount of tokens allowed per user exceeded."})
コード例 #38
0
    def test_exceed_token_amount_per_user(self):

        with override_settings(REST_KNOX=token_user_limit_knox):
            reload_module(views)
            for _ in range(10):
                AuthToken.objects.create(user=self.user)
            url = reverse('knox_login')
            self.client.credentials(
                HTTP_AUTHORIZATION=get_basic_auth_header(self.username, self.password)
            )
            response = self.client.post(url, {}, format='json')
        reload_module(views)
        self.assertEqual(response.status_code, 403)
        self.assertEqual(response.data,
                         {"error": "Maximum amount of tokens allowed per user exceeded."})
コード例 #39
0
    def test_login_returns_serialized_token_and_username_field(self):

        with override_settings(REST_KNOX=user_serializer_knox):
            reload_module(views)
            self.assertEqual(AuthToken.objects.count(), 0)
            url = reverse('knox_login')
            self.client.credentials(HTTP_AUTHORIZATION=get_basic_auth_header(
                self.username, self.password))
            response = self.client.post(url, {}, format='json')
            self.assertEqual(user_serializer_knox["USER_SERIALIZER"],
                             UserSerializer)
        reload_module(views)
        self.assertEqual(response.status_code, 200)
        self.assertIn('token', response.data)
        username_field = self.user.USERNAME_FIELD
        self.assertIn('user', response.data)
        self.assertIn(username_field, response.data['user'])
コード例 #40
0
    def test_token_expiry_is_not_extended_within_MIN_REFRESH_INTERVAL(self):
        now = datetime.now()
        with freeze_time(now):
            token_key = AuthToken.objects.create(user=self.user)

        original_expiry = AuthToken.objects.get().expires

        self.client.credentials(HTTP_AUTHORIZATION=('Token %s' % token_key))
        in_min_interval = now + timedelta(seconds=knox_settings.MIN_REFRESH_INTERVAL - 10)
        with override_settings(REST_KNOX=auto_refresh_knox):
            reload_module(auth)  # necessary to reload settings in core code
            with freeze_time(in_min_interval):
                response = self.client.get(root_url, {}, format='json')
        reload_module(auth)  # necessary to reload settings in core code

        self.assertEqual(response.status_code, 200)
        self.assertEqual(original_expiry, AuthToken.objects.get().expires)
コード例 #41
0
    def test_login_returns_serialized_token_and_username_field(self):

        with override_settings(REST_KNOX=user_serializer_knox):
            reload_module(views)
            self.assertEqual(AuthToken.objects.count(), 0)
            url = reverse('knox_login')
            self.client.credentials(
                HTTP_AUTHORIZATION=get_basic_auth_header(self.username, self.password)
            )
            response = self.client.post(url, {}, format='json')
            self.assertEqual(user_serializer_knox["USER_SERIALIZER"], UserSerializer)
        reload_module(views)
        self.assertEqual(response.status_code, 200)
        self.assertIn('token', response.data)
        username_field = self.user.USERNAME_FIELD
        self.assertIn('user', response.data)
        self.assertIn(username_field, response.data['user'])
コード例 #42
0
    def test_widget_with_custom_settings(self):
        """
            Test the widget with custom settings which is updated by `settings` parameter
        """
        zoom = 18
        map_size = "300x300"
        thumbnail_size = "75x75"

        widget_settings = {
            "GOOGLE_MAP_API_KEY": GOOGLE_MAP_API_KEY,
        }

        with override_settings(MAP_WIDGETS=widget_settings):
            reload_module(mw_widgets)
            widget = mw_widgets.GoogleStaticOverlayMapWidget(zoom=zoom, size=map_size, thumbnail_size=thumbnail_size)
            settings = widget.map_settings

            # test `map_settings` method
            self.assertEqual(settings.get("zoom"), zoom)
            self.assertEqual(settings.get("size"), map_size)

            # test render
            point = Point(-105.9903, 38.7392)
            widget_html_elem_id = "id_location"
            widget_html_elem_name = "location"
            result = widget.render(name=widget_html_elem_name, value=point, attrs={'id': widget_html_elem_id})
            map_image_url = widget.get_image_url(point)
            self.assertIn(GOOGLE_MAP_API_KEY, map_image_url)
            self.assertIn(html_escape(map_image_url), result)

            # test map_image_url
            res = urlopen(map_image_url)
            self.assertEqual(res.getcode(), 200)
            if hasattr(res.info(), 'type'):
                self.assertEqual(res.info().type, "image/png")
            else:
                self.assertEqual(res.info().get_content_type(), "image/png")

            # test thumbnail_image_url
            thumbnail_url = widget.get_thumbnail_url(point)
            res = urlopen(thumbnail_url)
            self.assertEqual(res.getcode(), 200)
            if hasattr(res.info(), 'type'):
                self.assertEqual(res.info().type, "image/png")
            else:
                self.assertEqual(res.info().get_content_type(), "image/png")
コード例 #43
0
ファイル: autodetection.py プロジェクト: Milstein-Corp/MesoOn
    def test_not_modified_auto(self):

        fake_defs = {
            'non_managed.legacy': {
                'Meta': {
                    'object_name': 'Legacy',
                    'db_table': "'legacy_table'",
                    'managed': 'False'
                },
                'id': ('django.db.models.fields.AutoField', [], {
                    'primary_key': 'True'
                }),
                'name': ('django.db.models.fields.CharField', [], {
                    'max_length': '10',
                    'null': 'True'
                }),
                #'size': ('django.db.models.fields.IntegerField', [], {}) # The "change" is the addition of this field
            }
        }

        class InitialMigration(SchemaMigration):
            "Serves as fake previous migration"

            def forwards(self, orm):
                pass

            def backwards(self, orm):
                pass

            models = fake_defs

            complete_apps = ['non_managed']

        from non_managed import models as dummy_import_to_force_loading_models  # TODO: Does needing this indicate a bug in MokeyPatcher?
        reload_module(dummy_import_to_force_loading_models)  # really force...

        migrations = Migrations("non_managed")
        initial_orm = FakeORM(InitialMigration, "non_managed")
        changes = AutoChanges(migrations=migrations,
                              old_defs=fake_defs,
                              old_orm=initial_orm,
                              new_defs=self.full_defs)
        change_list = changes.get_changes()
        if list(change_list):
            self.fail("Auto migration changes table for non-managed model")
コード例 #44
0
    def test_token_expiry_is_not_extended_within_MIN_REFRESH_INTERVAL(self):
        now = datetime.now()
        with freeze_time(now):
            instance, token = AuthToken.objects.create(user=self.user)

        original_expiry = AuthToken.objects.get().expiry

        self.client.credentials(HTTP_AUTHORIZATION=('Token %s' % token))
        in_min_interval = now + timedelta(
            seconds=knox_settings.MIN_REFRESH_INTERVAL - 10)
        with override_settings(REST_KNOX=auto_refresh_knox):
            reload_module(auth)  # necessary to reload settings in core code
            with freeze_time(in_min_interval):
                response = self.client.get(root_url, {}, format='json')
        reload_module(auth)  # necessary to reload settings in core code

        self.assertEqual(response.status_code, 200)
        self.assertEqual(original_expiry, AuthToken.objects.get().expiry)
コード例 #45
0
    def test_search_with_nonstandard_search_param(self):
        with override_settings(REST_FRAMEWORK={"SEARCH_PARAM": "query"}):
            reload_module(filters)

            class SearchListView(generics.ListAPIView):
                queryset = SearchFilterModel.objects.all()
                serializer_class = SearchFilterSerializer
                filter_backends = (filters.SearchFilter,)
                search_fields = ("title", "text")

            view = SearchListView.as_view()
            request = factory.get("/", {"query": "b"})
            response = view(request)
            self.assertEqual(
                response.data, [{"id": 1, "title": "z", "text": "abc"}, {"id": 2, "title": "zz", "text": "bcd"}]
            )

        reload_module(filters)
コード例 #46
0
    def test_search_with_nonstandard_search_param(self):
        with override_settings(REST_FRAMEWORK={'SEARCH_PARAM': 'query'}):
            reload_module(filters)

            class SearchListView(generics.ListAPIView):
                queryset = SearchFilterModel.objects.all()
                serializer_class = SearchFilterSerializer
                filter_backends = (filters.SearchFilter,)
                search_fields = ('title', 'text')

            view = SearchListView.as_view()
            request = factory.get('/', {'query': 'b'})
            response = view(request)
            assert response.data == [
                {'id': 1, 'title': 'z', 'text': 'abc'},
                {'id': 2, 'title': 'zz', 'text': 'bcd'}
            ]

        reload_module(filters)
コード例 #47
0
    def test_search_with_nonstandard_search_param(self):
        with override_settings(REST_FRAMEWORK={'SEARCH_PARAM': 'query'}):
            reload_module(filters)

            class SearchListView(generics.ListAPIView):
                queryset = SearchFilterModel.objects.all()
                serializer_class = SearchFilterSerializer
                filter_backends = (filters.SearchFilter,)
                search_fields = ('title', 'text')

            view = SearchListView.as_view()
            request = factory.get('/', {'query': 'b'})
            response = view(request)
            assert response.data == [
                {'id': 1, 'title': 'z', 'text': 'abc'},
                {'id': 2, 'title': 'zz', 'text': 'bcd'}
            ]

        reload_module(filters)
コード例 #48
0
    def test_does_not_exceed_on_expired_keys(self):

        with override_settings(REST_KNOX=token_user_limit_knox):
            reload_module(views)
            for _ in range(9):
                AuthToken.objects.create(user=self.user)
            AuthToken.objects.create(user=self.user, expires=timedelta(seconds=0))
            # now 10 keys, but only 9 valid so request should succeed.
            url = reverse('knox_login')
            self.client.credentials(
                HTTP_AUTHORIZATION=get_basic_auth_header(self.username, self.password)
            )
            response = self.client.post(url, {}, format='json')
            failed_response = self.client.post(url, {}, format='json')
        reload_module(views)
        self.assertEqual(response.status_code, 200)
        self.assertIn('token', response.data)
        self.assertEqual(failed_response.status_code, 403)
        self.assertEqual(failed_response.data,
                         {"error": "Maximum amount of tokens allowed per user exceeded."})
コード例 #49
0
    def test_login_returns_configured_expiry_datetime_format(self):

        with override_settings(REST_KNOX=expiry_datetime_format_knox):
            reload_module(views)
            self.assertEqual(AuthToken.objects.count(), 0)
            url = reverse('knox_login')
            self.client.credentials(HTTP_AUTHORIZATION=get_basic_auth_header(
                self.username, self.password))
            response = self.client.post(url, {}, format='json')
            self.assertEqual(
                expiry_datetime_format_knox["EXPIRY_DATETIME_FORMAT"],
                EXPIRY_DATETIME_FORMAT)
        reload_module(views)
        self.assertEqual(response.status_code, 200)
        self.assertIn('token', response.data)
        self.assertNotIn('user', response.data)
        self.assertEqual(
            response.data['expiry'],
            DateTimeField(format=EXPIRY_DATETIME_FORMAT).to_representation(
                AuthToken.objects.first().expiry))
コード例 #50
0
    def test_ordering_with_nonstandard_ordering_param(self):
        with override_settings(REST_FRAMEWORK={'ORDERING_PARAM': 'order'}):
            reload_module(filters)

            class OrderingListView(generics.ListAPIView):
                queryset = OrderingFilterModel.objects.all()
                serializer_class = OrderingFilterSerializer
                filter_backends = (filters.OrderingFilter,)
                ordering = ('title',)
                ordering_fields = ('text',)

            view = OrderingListView.as_view()
            request = factory.get('/', {'order': 'text'})
            response = view(request)
            assert response.data == [
                {'id': 1, 'title': 'zyx', 'text': 'abc'},
                {'id': 2, 'title': 'yxw', 'text': 'bcd'},
                {'id': 3, 'title': 'xwv', 'text': 'cde'},
            ]

        reload_module(filters)
コード例 #51
0
ファイル: autodetection.py プロジェクト: brynn/slowdown
    def test_not_modified_auto(self):

        fake_defs = {
            'non_managed.legacy': {
                'Meta': {'object_name': 'Legacy', 'db_table': "'legacy_table'", 'managed': 'False'},
                'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
                'name': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True'}),
                #'size': ('django.db.models.fields.IntegerField', [], {}) # The "change" is the addition of this field
            }
        } 
        class InitialMigration(SchemaMigration):
            "Serves as fake previous migration"
        
            def forwards(self, orm):
                pass
        
            def backwards(self, orm):
                pass
        
            models = fake_defs

            complete_apps = ['non_managed']
                    
        from non_managed import models as dummy_import_to_force_loading_models # TODO: Does needing this indicate a bug in MokeyPatcher?
        reload_module(dummy_import_to_force_loading_models) # really force... 
        
        migrations = Migrations("non_managed")
        initial_orm = FakeORM(InitialMigration, "non_managed")
        changes = AutoChanges(
            migrations = migrations,
            old_defs = fake_defs,
            old_orm = initial_orm,
            new_defs = self.full_defs
        )
        change_list = changes.get_changes()
        if list(change_list):
            self.fail("Auto migration changes table for non-managed model")
コード例 #52
0
    def test_widget_with_custom_settings(self):
        """
            Test the widget with custom settings which is updated by `settings` parameter
        """
        zoom = 9
        map_size = "100x100"

        widget_settings = {
            "GoogleStaticMapWidget": (
                ("zoom", zoom),
                ("size", map_size),
            ),
            "GOOGLE_MAP_API_KEY": GOOGLE_MAP_API_KEY,
        }

        with override_settings(MAP_WIDGETS=widget_settings):
            reload_module(mw_widgets)
            widget = mw_widgets.GoogleStaticMapWidget(zoom=zoom, size=map_size)
            settings = widget.map_settings

            # test `map_settings` method
            self.assertEqual(settings.get("zoom"), zoom)
            self.assertEqual(settings.get("size"), map_size)

            # test render
            point = Point(-105.9903, 38.7392)
            widget_html_elem_id = "id_location"
            widget_html_elem_name = "location"
            result = widget.render(name=widget_html_elem_name, value=point, attrs={'id': widget_html_elem_id})
            map_image_url = widget.get_image_url(point)
            self.assertIn(GOOGLE_MAP_API_KEY, map_image_url)
            self.assertIn(html_escape(map_image_url), result)

            # test map_image_url
            res = urllib.urlopen(map_image_url)
            self.assertEqual(res.getcode(), 200)
            self.assertEqual(res.info().type, "image/png")
コード例 #53
0
    def test_ordering_with_nonstandard_ordering_param(self):
        with override_settings(REST_FRAMEWORK={"ORDERING_PARAM": "order"}):
            reload_module(filters)

            class OrderingListView(generics.ListAPIView):
                queryset = OrderingFilterModel.objects.all()
                serializer_class = OrderingFilterSerializer
                filter_backends = (filters.OrderingFilter,)
                ordering = ("title",)
                ordering_fields = ("text",)

            view = OrderingListView.as_view()
            request = factory.get("/", {"order": "text"})
            response = view(request)
            self.assertEqual(
                response.data,
                [
                    {"id": 1, "title": "zyx", "text": "abc"},
                    {"id": 2, "title": "yxw", "text": "bcd"},
                    {"id": 3, "title": "xwv", "text": "cde"},
                ],
            )

        reload_module(filters)
コード例 #54
0
 def setUp(self):
     reload_module(settings)
     reload_module(storage)
     self.backend = settings.stored_messages_settings.STORAGE_BACKEND()
     super(BackendBaseTest, self).setUp()
コード例 #55
0
ファイル: test_forms.py プロジェクト: semente/django-smuggler
 def tearDown(self):
     reload_module(settings)
コード例 #56
0
ファイル: base.py プロジェクト: jcmcken/django-ca
 def save_options(self, test_func):
     super(override_settings, self).save_options(test_func)
     reload_module(ca_settings)
コード例 #57
0
ファイル: test_forms.py プロジェクト: semente/django-smuggler
 def test_picked_files(self):
     reload_module(settings)
     form = ImportForm()
     self.assertIsInstance(form['picked_files'].field, FilePathField)
コード例 #58
0
ファイル: test_forms.py プロジェクト: semente/django-smuggler
 def test_store_checkbox(self):
     reload_module(settings)
     form = ImportForm()
     self.assertIsInstance(form['store'].field, BooleanField)
コード例 #59
0
ファイル: base.py プロジェクト: jcmcken/django-ca
 def disable(self):
     super(override_settings, self).disable()
     reload_module(ca_settings)