import datetime from django.conf import settings from django.http import Http404 import pytest from pytest_django.asserts import assertContains from . import views from conservancy.fundgoal.models import FundraisingGoal 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/') response = views.content(request) assertContains(response, 'Conservancy is a nonprofit organization') def test_annual_report_file_served(rf): request = rf.get('/projects/apply/ConservancyFSATemplate.pdf') response = views.content(request) assert response.headers['Content-Type'] == 'application/pdf' def test_path_traversal_404s(rf): # Will work in development only assert (settings.BASE_DIR / 'content' / 'about/../../../conservancy-website.sqlite3').exists() request = rf.get('/about/../../../conservancy-website.sqlite3') with pytest.raises(Http404): views.content(request)