Changeset - daf93dc32b26
[Not reviewed]
0 4 0
Ben Sturmfels (bsturmfels) - 2 months ago 2024-03-13 03:26:01
ben@sturm.com.au
Switch content tests to pytest
4 files changed with 45 insertions and 36 deletions:
0 comments (0 inline, 0 general)
README.md
Show inline comments
...
 
@@ -44,6 +44,11 @@ environment-specific config.
 

	
 
To run the tests, install `pytest-django` and run pytest:
 

	
 
    python3 -m pip install pytest-django
 
    python3 -m pytest
 

	
 
Then run:
 

	
 
    python manage.py migrate
 
    python manage.py runserver
 
    python3 manage.py migrate
 
    python3 manage.py runserver
 

	
...
 
@@ -62,3 +67,3 @@ need to run these if modifying the database schema or adding/moving static files
 

	
 
    sudo -u www-data /var/www/venv-website/bin/python manage.py migrate
 
    sudo -u www-data /var/www/venv-website/bin/python manage.py collectstatic --link
 
    sudo -u www-data /var/www/venv-website/bin/python3 manage.py migrate
 
    sudo -u www-data /var/www/venv-website/bin/python3 manage.py collectstatic --link
bin/deploy.sh
Show inline comments
...
 
@@ -8,5 +8,5 @@ cd /var/www/website
 
sudo -u www-data git pull
 
sudo -u www-data /var/www/venv-website/bin/python manage.py check
 
sudo -u www-data /var/www/venv-website/bin/python manage.py migrate
 
sudo -u www-data /var/www/venv-website/bin/python manage.py collectstatic -v0 --noinput --link
 
sudo -u www-data /var/www/venv-website/bin/python3 manage.py check
 
sudo -u www-data /var/www/venv-website/bin/python3 manage.py migrate
 
sudo -u www-data /var/www/venv-website/bin/python3 manage.py collectstatic -v0 --noinput --link
 
sudo systemctl restart apache2
conservancy/tests.py
Show inline comments
...
 
@@ -3,3 +3,4 @@ import datetime
 
from django.http import Http404
 
from django.test import RequestFactory, TestCase
 
import pytest
 
from pytest_django.asserts import assertContains, assertTemplateUsed
 

	
...
 
@@ -9,28 +10,31 @@ from conservancy.fundgoal.models import FundraisingGoal
 

	
 
class ContentTest(TestCase):
 
    def setUp(self):
 
        self.factory = RequestFactory()
 
        FundraisingGoal.objects.create(
 
            fundraiser_code_name='cy2023-end-year-match',
 
            fundraiser_goal_amount=0,
 
            fundraiser_so_far_amount=0,
 
            fundraiser_donation_count=0,
 
            fundraiser_donation_count_disclose_threshold=0,
 
            fundraiser_endtime=datetime.datetime(2000, 1, 1)
 
        )
 

	
 
    def test_about_page_served(self):
 
        request = self.factory.get('/about/')
 
        with self.assertTemplateUsed('about/index.html'):
 
            response = views.index(request).render()
 
        self.assertContains(response, 'Conservancy is a nonprofit organization')
 

	
 
    def test_annual_report_file_served(self):
 
        request = self.factory.get('/docs/conservancy_annual-report_fy-2011.pdf')
 
        response = views.index(request)
 
        self.assertEqual(response.headers['Content-Type'], 'application/pdf')
 

	
 
    def test_path_traversal_404s(self):
 
        request = self.factory.get('/about/../../settings.py')
 
        with self.assertRaises(Http404):
 
            views.index(request)
 
def create_fundraising_goal():
 
    FundraisingGoal.objects.create(
 
        fundraiser_code_name='cy2023-end-year-match',
 
        fundraiser_goal_amount=0,
 
        fundraiser_so_far_amount=0,
 
        fundraiser_donation_count=0,
 
        fundraiser_donation_count_disclose_threshold=0,
 
        fundraiser_endtime=datetime.datetime(2000, 1, 1)
 
    )
 

	
 

	
 
@pytest.mark.django_db
 
def test_about_page_served(rf):
 
    create_fundraising_goal()
 
    request = rf.get('/about/')
 
    with assertTemplateUsed('about/index.html'):
 
        response = views.index(request).render()
 
    assertContains(response, 'Conservancy is a nonprofit organization')
 

	
 

	
 
def test_annual_report_file_served(rf):
 
    request = rf.get('/docs/conservancy_annual-report_fy-2011.pdf')
 
    response = views.index(request)
 
    assert response.headers['Content-Type'] == 'application/pdf'
 

	
 

	
 
def test_path_traversal_404s(rf):
 
    request = rf.get('/about/../../settings.py')
 
    with pytest.raises(Http404):
 
        views.index(request)
requirements.txt
Show inline comments
...
 
@@ -4,2 +4,2 @@ beautifulsoup4==4.11.2
 
html5lib==1.1
 
django_countries==7.3.2
 
django-countries==7.3.2
0 comments (0 inline, 0 general)