diff --git a/apps/dashboard/tests.py b/apps/dashboard/tests.py index 8914c7bc..61d979b3 100644 --- a/apps/dashboard/tests.py +++ b/apps/dashboard/tests.py @@ -1,5 +1,7 @@ from nose.tools import eq_ +from django.conf import settings + from jingo import register import jinja2 import test_utils @@ -21,12 +23,9 @@ def test_dashboard(self): class TestMobileDashboard(test_utils.TestCase): - def setUp(self): - from django.conf import settings - settings.SITE_ID = 2 - def test_dashboard(self): - r = self.client.get(reverse('dashboard'), follow=True) + r = self.client.get(reverse('dashboard'), follow=True, + SITE_ID=settings.MOBILE_SITE_ID) eq_(r.status_code, 200) diff --git a/apps/feedback/tests.py b/apps/feedback/tests.py index b4a5c14b..5d425286 100644 --- a/apps/feedback/tests.py +++ b/apps/feedback/tests.py @@ -2,12 +2,14 @@ from django import http from django.conf import settings +from django.contrib.sites.models import Site from django.core.exceptions import ValidationError from django.test import TestCase from input.urlresolvers import reverse from nose.tools import eq_ from product_details import product_details +from pyquery import pyquery from . import FIREFOX, MOBILE from .utils import detect_language, ua_parse, smart_truncate @@ -223,3 +225,20 @@ def test_submissions_without_url(self): # Neither valid nor invalid URLs cause anything but a 200 response. eq_(r.status_code, 200) assert r.content.find('Thanks') >= 0 + + def test_submission_autocomplete_off(self): + """ + Ensure both mobile and desktop submission pages have autocomplete off. + """ + def autocomplete_check(site_id): + r = self.client.get(reverse('feedback.sad'), HTTP_USER_AGENT=( + self.FX_UA % '20.0'), SITE_ID=site_id, follow=True) + doc = pyquery.PyQuery(r.content) + form = doc('#feedbackform form') + + assert form + eq_(form.attr('autocomplete'), 'off') + print r + + autocomplete_check(settings.DESKTOP_SITE_ID) + autocomplete_check(settings.MOBILE_SITE_ID) diff --git a/apps/input/middleware.py b/apps/input/middleware.py index 77e1a631..8a66bf30 100644 --- a/apps/input/middleware.py +++ b/apps/input/middleware.py @@ -78,8 +78,14 @@ def process_request(self, request): ''.join((settings.CACHE_PREFIX, 'dom:', domain)), settings.CACHE_COUNT_TIMEOUT) except (Site.DoesNotExist, KeyError): - # Serve Desktop site. - settings.SITE_ID = settings.DESKTOP_SITE_ID + # If Site ID picked in header, serve that, otherwise default + # to Desktop site. + site_header = request.META.get('SITE_ID') + if site_header in (settings.DESKTOP_SITE_ID, + settings.MOBILE_SITE_ID): + settings.SITE_ID = site_header + else: + settings.SITE_ID = settings.DESKTOP_SITE_ID else: settings.SITE_ID = site.id diff --git a/apps/input/tests.py b/apps/input/tests.py index f98c2097..9fc4f3b5 100644 --- a/apps/input/tests.py +++ b/apps/input/tests.py @@ -78,7 +78,6 @@ def test_locale_fallback(self): eq_(res.status_code, 301) self.assertTrue(res['Location'].rstrip('/').endswith(pattern[1])) - def test_mobilesite_nohost(self): """Make sure we serve the desktop site if there's no HTTP_HOST set.""" # This won't contain HTTP_HOST. Must not fail. diff --git a/apps/search/tests.py b/apps/search/tests.py index 9a200dfe..6da85a8c 100644 --- a/apps/search/tests.py +++ b/apps/search/tests.py @@ -37,7 +37,7 @@ def setUp(self): super(SphinxTestCase, self).setUp() from django.conf import settings - settings.SITE_ID = 1 + settings.SITE_ID = settings.DESKTOP_SITE_ID if not SphinxTestCase.sphinx_is_running: if (not settings.SPHINX_SEARCHD or