datatracker/ietf/group/tests_appeals.py
2023-08-30 16:35:20 -05:00

72 lines
3.5 KiB
Python

# Copyright The IETF Trust 2023, All Rights Reserved
import debug # pyflakes: ignore
import datetime
from pyquery import PyQuery
from django.urls import reverse as urlreverse
from ietf.utils.test_utils import login_testing_unauthorized, TestCase
from ietf.group.factories import (
AppealFactory,
AppealArtifactFactory,
)
class AppealTests(TestCase):
def test_download_name(self):
artifact = AppealArtifactFactory()
self.assertEqual(artifact.download_name(),f"{artifact.date}-appeal.md")
artifact = AppealArtifactFactory(content_type="application/pdf",artifact_type__slug="response")
self.assertEqual(artifact.download_name(),f"{artifact.date}-response.pdf")
def test_appeal_list_view(self):
appeal_date = datetime.date.today()-datetime.timedelta(days=14)
response_date = appeal_date+datetime.timedelta(days=8)
appeal = AppealFactory(name="A name to look for", date=appeal_date)
appeal_artifact = AppealArtifactFactory(appeal=appeal, artifact_type__slug="appeal", date=appeal_date)
response_artifact = AppealArtifactFactory(appeal=appeal, artifact_type__slug="response", content_type="application/pdf", date=response_date)
url = urlreverse("ietf.group.views.appeals", kwargs=dict(acronym="iab"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q("#appeals > tbody > tr")), 1)
self.assertEqual(q("#appeal-1-date").text(), f"{appeal_date}")
self.assertEqual(f"{appeal_artifact.display_title()} - {appeal_date}", q("#artifact-1-1").text())
self.assertEqual(f"{response_artifact.display_title()} - {response_date}", q("#artifact-1-2").text())
self.assertIsNone(q("#artifact-1-1").attr("download"))
self.assertEqual(q("#artifact-1-2").attr("download"), response_artifact.download_name())
def test_markdown_view(self):
artifact = AppealArtifactFactory()
url = urlreverse("ietf.group.views.appeal_artifact", kwargs=dict(acronym="iab", artifact_id=artifact.pk))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(q("#content>p>strong").text(),"Markdown")
self.assertIsNone(q("#content a").attr("download"))
self.client.login(username='secretary', password='secretary+password')
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(q("#content a").attr("download"), artifact.download_name())
def test_markdown_download(self):
artifact = AppealArtifactFactory()
url = urlreverse("ietf.group.views.appeal_artifact_markdown", kwargs=dict(acronym="iab", artifact_id=artifact.pk))
login_testing_unauthorized(self, "secretary", url)
r = self.client.get(url)
self.assertContains(r, "**Markdown**", status_code=200)
def test_pdf_download(self):
artifact = AppealArtifactFactory(content_type="application/pdf") # The bits won't _really_ be pdf
url = urlreverse("ietf.group.views.appeal_artifact", kwargs=dict(acronym="iab", artifact_id=artifact.pk))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.get("Content-Disposition"), f'attachment; filename="{artifact.download_name()}"')
self.assertEqual(r.get("Content-Type"), artifact.content_type)
self.assertEqual(r.content, artifact.bits.tobytes())