Skip to content

Fix tests #6269

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 10, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 10 additions & 11 deletions readthedocs/proxito/tests/test_middleware.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
# Copied from test_middleware.py

from django.test import TestCase
from django.test.client import RequestFactory
from django.test.utils import override_settings
from django_dynamic_fixture import get

from readthedocs.projects.models import Domain, Project
from readthedocs.proxito.middleware import ProxitoMiddleware
from readthedocs.rtd_tests.base import RequestFactoryTestMixin
from readthedocs.rtd_tests.utils import create_user


@override_settings(USE_SUBDOMAIN=True)
@override_settings(PUBLIC_DOMAIN='dev.readthedocs.io')
class MiddlewareTests(TestCase):
class MiddlewareTests(RequestFactoryTestMixin, TestCase):

def setUp(self):
self.factory = RequestFactory()
self.middleware = ProxitoMiddleware()
self.url = '/'
self.owner = create_user(username='owner', password='test')
Expand All @@ -32,51 +31,51 @@ def run_middleware(self, request):
def test_proper_cname(self):
domain = 'docs.random.com'
get(Domain, project=self.pip, domain=domain)
request = self.factory.get(self.url, HTTP_HOST=domain)
request = self.request(self.url, HTTP_HOST=domain)
res = self.run_middleware(request)
self.assertIsNone(res)
self.assertEqual(request.cname, True)
self.assertEqual(request.host_project_slug, 'pip')

def test_proper_cname_uppercase(self):
get(Domain, project=self.pip, domain='docs.random.com')
request = self.factory.get(self.url, HTTP_HOST='docs.RANDOM.COM')
request = self.request(self.url, HTTP_HOST='docs.RANDOM.COM')
self.run_middleware(request)
self.assertEqual(request.cname, True)
self.assertEqual(request.host_project_slug, 'pip')

def test_invalid_cname(self):
self.assertFalse(Domain.objects.filter(domain='my.host.com').exists())
request = self.factory.get(self.url, HTTP_HOST='my.host.com')
request = self.request(self.url, HTTP_HOST='my.host.com')
r = self.run_middleware(request)
# We show the 404 error page
self.assertContains(r, 'my.host.com', status_code=404)

def test_proper_subdomain(self):
request = self.factory.get(self.url, HTTP_HOST='pip.dev.readthedocs.io')
request = self.request(self.url, HTTP_HOST='pip.dev.readthedocs.io')
self.run_middleware(request)
self.assertEqual(request.subdomain, True)
self.assertEqual(request.host_project_slug, 'pip')

@override_settings(PUBLIC_DOMAIN='foo.bar.readthedocs.io')
def test_subdomain_different_length(self):
request = self.factory.get(
request = self.request(
self.url, HTTP_HOST='pip.foo.bar.readthedocs.io'
)
self.run_middleware(request)
self.assertEqual(request.subdomain, True)
self.assertEqual(request.host_project_slug, 'pip')

def test_request_header(self):
request = self.factory.get(
request = self.request(
self.url, HTTP_HOST='some.random.com', HTTP_X_RTD_SLUG='pip'
)
self.run_middleware(request)
self.assertEqual(request.rtdheader, True)
self.assertEqual(request.host_project_slug, 'pip')

def test_request_header_uppercase(self):
request = self.factory.get(
request = self.request(
self.url, HTTP_HOST='some.random.com', HTTP_X_RTD_SLUG='PIP'
)
self.run_middleware(request)
Expand All @@ -86,6 +85,6 @@ def test_request_header_uppercase(self):

def test_long_bad_subdomain(self):
domain = 'www.pip.dev.readthedocs.io'
request = self.factory.get(self.url, HTTP_HOST=domain)
request = self.request(self.url, HTTP_HOST=domain)
res = self.run_middleware(request)
self.assertEqual(res.status_code, 400)
11 changes: 7 additions & 4 deletions readthedocs/proxito/tests/test_redirects.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,34 @@
# Copied from .org test_redirects


from django.test import override_settings

from .base import BaseDocServing


@override_settings(PUBLIC_DOMAIN_USES_HTTPS=True)
class RedirectTests(BaseDocServing):

def test_root_url(self):
r = self.client.get('/', HTTP_HOST='project.dev.readthedocs.io')
self.assertEqual(r.status_code, 302)
self.assertEqual(
r['Location'], 'http://project.dev.readthedocs.io/en/latest/',
r['Location'], 'https://project.dev.readthedocs.io/en/latest/',
)

def test_subproject_root_url(self):
r = self.client.get('/projects/subproject/', HTTP_HOST='project.dev.readthedocs.io')
self.assertEqual(r.status_code, 302)
self.assertEqual(
r['Location'], 'http://project.dev.readthedocs.io/projects/subproject/en/latest/',
r['Location'], 'https://project.dev.readthedocs.io/projects/subproject/en/latest/',
)

def test_root_redirect_with_query_params(self):
r = self.client.get('/?foo=bar', HTTP_HOST='project.dev.readthedocs.io')
self.assertEqual(r.status_code, 302)
self.assertEqual(
r['Location'],
'http://project.dev.readthedocs.io/en/latest/?foo=bar'
'https://project.dev.readthedocs.io/en/latest/?foo=bar'
)

# Specific Page Redirects
Expand All @@ -34,5 +37,5 @@ def test_proper_page_on_subdomain(self):
self.assertEqual(r.status_code, 302)
self.assertEqual(
r['Location'],
'http://project.dev.readthedocs.io/en/latest/test.html',
'https://project.dev.readthedocs.io/en/latest/test.html',
)