-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtest_document_views.py
146 lines (120 loc) · 5.06 KB
/
test_document_views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
from django.urls import reverse
import pytest
from filingcabinet import views
@pytest.mark.django_db
def test_document_detail(processed_document, client):
response = client.get(processed_document.get_absolute_url())
assert response.status_code == 200
assert processed_document.title in response.content.decode("utf-8")
assert processed_document.description in response.content.decode("utf-8")
@pytest.mark.django_db
def test_document_detail_private(processed_document, client, dummy_user):
processed_document.public = False
processed_document.user = dummy_user
processed_document.save()
response = client.get(processed_document.get_absolute_url())
assert response.status_code == 404
client.force_login(dummy_user)
response = client.get(processed_document.get_absolute_url())
assert response.status_code == 200
@pytest.mark.django_db
def test_document_detail_pending(processed_document, client, dummy_user):
processed_document.pending = True
processed_document.user = dummy_user
processed_document.save()
response = client.get(processed_document.get_absolute_url())
assert response.status_code == 200
# iframe with PDF embed present
assert '<iframe src="{}"'.format(
processed_document.get_file_url()
) in response.content.decode("utf-8")
@pytest.mark.django_db
@pytest.mark.parametrize("initial_slug_val", ["", None])
def test_document_detail_slug_behavior(
processed_document, client, dummy_user, initial_slug_val
):
if initial_slug_val is not None:
processed_document.slug = initial_slug_val
processed_document.user = dummy_user
processed_document.save()
bad_slug_url = reverse(
"filingcabinet:document-detail",
kwargs={"pk": processed_document.pk, "slug": "bad"},
)
response = client.get(bad_slug_url)
assert response.status_code == 302
assert response.headers["Location"] == processed_document.get_absolute_url()
query_param = "?foo=bar"
bad_slug_url = bad_slug_url + query_param
response = client.get(bad_slug_url)
assert response.status_code == 302
assert (
response.headers["Location"]
== processed_document.get_absolute_url() + query_param
)
processed_document.public = False
processed_document.user = dummy_user
processed_document.save()
response = client.get(bad_slug_url)
assert response.status_code == 404
client.force_login(dummy_user)
response = client.get(bad_slug_url)
assert response.status_code == 302
assert (
response.headers["Location"]
== processed_document.get_absolute_url() + query_param
)
@pytest.mark.django_db
def test_document_detail_page_query(processed_document, client, monkeypatch):
monkeypatch.setattr(views, "PREVIEW_PAGE_COUNT", 2)
response = client.get(processed_document.get_absolute_url() + "?page=1000")
assert response.status_code == 200
content = response.content.decode("utf-8")
assert '<a href="#page-1"' in content
assert '<a href="#page-2"' in content
assert '<a href="#page-3"' not in content
assert '<a href="#page-4"' not in content
response = client.get(processed_document.get_absolute_url() + "?page=1")
assert response.status_code == 200
content = response.content.decode("utf-8")
assert '<a href="#page-1"' in content
assert '<a href="#page-2"' in content
assert '<a href="#page-3"' not in content
assert '<a href="#page-4"' not in content
response = client.get(processed_document.get_absolute_url() + "?page=2")
assert response.status_code == 200
content = response.content.decode("utf-8")
assert '<a href="#page-1"' not in content
assert '<a href="#page-2"' in content
assert '<a href="#page-3"' in content
assert '<a href="#page-4"' not in content
@pytest.mark.django_db
def test_document_embed(processed_document, client):
response = client.get(processed_document.get_absolute_domain_embed_url())
assert response.status_code == 200
assert "<h2>{}</h2>".format(
processed_document.title
) not in response.content.decode("utf-8")
processed_document.slug = ""
processed_document.save()
response = client.get(processed_document.get_absolute_domain_embed_url())
assert response.status_code == 200
assert "<h2>{}</h2>".format(
processed_document.title
) not in response.content.decode("utf-8")
@pytest.mark.django_db
def test_document_file_detail(processed_document, client, dummy_user):
processed_document.user = dummy_user
processed_document.public = False
processed_document.save()
response = client.get(processed_document.get_file_url())
assert response.status_code == 404
client.force_login(dummy_user)
response = client.get(processed_document.get_file_url().replace("/ef/", "/aa/"))
assert response.status_code == 404
response = client.get(processed_document.get_file_url())
assert response.status_code == 200
assert response.headers["Content-Type"] == ""
assert response.headers["X-Accel-Redirect"].endswith(
processed_document.get_file_name()
)