Example #1
0
class TestBedrockWhiteNoise(TestCase):
    def setUp(self):
        self.wn = BedrockWhiteNoise(Mock())

    def test_immutable_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=True):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.FOREVER)))

    def test_font_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=False):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'media/fonts/dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.ONE_MONTH)))

    def test_immutable_font_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=True):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'media/fonts/dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.FOREVER)))

    def test_other_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=False):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'media/dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.max_age)))
Example #2
0
class TestBedrockWhiteNoise(TestCase):
    wn = BedrockWhiteNoise(Mock())

    def test_immutable_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=True):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.FOREVER)))

    def test_font_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=False):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'media/fonts/dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.ONE_WEEK)))

    def test_caldata_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=False):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file,
                                      'media/caldata/ThaiHolidays.ics')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.ONE_WEEK)))

            # also at alternate path
            self.wn.add_cache_headers(
                static_file, 'project/calendar/caldata/ThaiHolidays.ics')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.ONE_WEEK)))

    def test_immutable_font_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=True):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'media/fonts/dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.FOREVER)))

    def test_other_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=False):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'media/dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.max_age)))
Example #3
0
# flake8: noqa
import os

from decouple import config

try:
    import newrelic.agent
except ImportError:
    newrelic = False

if newrelic:
    newrelic_ini = config('NEWRELIC_PYTHON_INI_FILE', default=False)
    if newrelic_ini:
        newrelic.agent.initialize(newrelic_ini)
    else:
        newrelic = False

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'bedrock.settings')

# must be imported after env var is set above.
from django.core.wsgi import get_wsgi_application
from bedrock.base.static import BedrockWhiteNoise
from raven.contrib.django.raven_compat.middleware.wsgi import Sentry

application = get_wsgi_application()
application = BedrockWhiteNoise(application)
application = Sentry(application)

if newrelic:
    application = newrelic.agent.wsgi_application()(application)
Example #4
0
 def setUp(self):
     self.wn = BedrockWhiteNoise(Mock())
Example #5
0
class TestBedrockWhiteNoise(TestCase):
    wn = BedrockWhiteNoise(Mock())

    def test_immutable_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=True):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.FOREVER)))

    def test_font_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=False):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'media/fonts/dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.ONE_MONTH)))

    def test_caldata_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=False):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file,
                                      'media/caldata/ThaiHolidays.ics')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.ONE_MONTH)))

            # also at alternate path
            self.wn.add_cache_headers(
                static_file, 'project/calendar/caldata/ThaiHolidays.ics')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.ONE_MONTH)))

    def test_immutable_font_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=True):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'media/fonts/dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.FOREVER)))

    def test_other_files(self):
        with patch.object(self.wn, 'is_immutable_file', return_value=False):
            static_file = Mock(headers={})
            self.wn.add_cache_headers(static_file, 'media/dude.txt')
            self.assertTrue(static_file.headers['Cache-Control'].endswith(
                'max-age={}'.format(self.wn.max_age)))

    def test_forbidden_flash(self):
        # Bug 1005674
        flash_file = StaticFile('/path/to/playerWithControls.swf')
        environ = {'QUERY_STRING': 'flv=http://example.com/logjammin.flv'}
        start_response = Mock()
        self.wn.serve(flash_file, environ, start_response)
        start_response.assert_called_with('403 Forbidden', [])

    def test_forbidden_flash_no_qs(self):
        # Bug 1005674
        flash_file = StaticFile('/path/to/playerWithControls.swf')
        environ = {'QUERY_STRING': ''}
        start_response = Mock()
        self.wn.serve(flash_file, environ, start_response)
        start_response.assert_called_with('403 Forbidden', [])

    @patch('bedrock.base.static.DjangoWhiteNoise.serve')
    def test_forbidden_flash_okay_relative(self, mock_serve):
        # Bug 1005674
        flash_file = StaticFile('/path/to/playerWithControls.swf')
        environ = {'QUERY_STRING': 'flv=/relative/url/awesome.flv'}
        start_response = Mock()
        self.wn.serve(flash_file, environ, start_response)
        mock_serve.assert_called_with(flash_file, environ, start_response)

    @patch('bedrock.base.static.DjangoWhiteNoise.serve')
    def test_forbidden_flash_okay_remote(self, mock_serve):
        # Bug 1005674
        flash_file = StaticFile('/path/to/playerWithControls.swf')
        environ = {
            'QUERY_STRING': 'flv=https://videos.mozilla.org/awesome.flv'
        }
        start_response = Mock()
        self.wn.serve(flash_file, environ, start_response)
        mock_serve.assert_called_with(flash_file, environ, start_response)