-
Notifications
You must be signed in to change notification settings - Fork 65
/
test_renderer.py
140 lines (98 loc) · 4.8 KB
/
test_renderer.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
import os
import pytest
from mfr.core.provider import ProviderMetadata
from mfr.core.exceptions import RendererError
from mfr.extensions.jasp import JASPRenderer
@pytest.fixture
def metadata():
return ProviderMetadata('JASP', '.jasp', 'application/octet-stream', '1234', 'http://wb.osf.io/file/JASP.jasp?token=1234')
@pytest.fixture
def ok_old_manifest_path():
return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files', 'ok-old-manifest.jasp')
@pytest.fixture
def ok_new_manifest_path():
return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files', 'ok-new-manifest.jasp')
@pytest.fixture
def not_a_zip_file_path():
return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files', 'not-a-zip-file.jasp')
@pytest.fixture
def no_manifest_path():
return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files', 'no-manifest.jasp')
@pytest.fixture
def no_data_archive_version_in_manifest_path():
return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files', 'no-data-archive-version-in-manifest.jasp')
@pytest.fixture
def data_archive_version_is_too_old_path():
return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files', 'data-archive-version-is-too-old.jasp')
@pytest.fixture
def no_index_html_path():
return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files', 'no-index_html.jasp')
@pytest.fixture
def contains_malicious_script_path():
return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files', 'contains-malicious-script.jasp')
@pytest.fixture
def url():
return 'http://wb.osf.io/file/JASP.jasp'
@pytest.fixture
def assets_url():
return 'http://mfr.osf.io/assets'
@pytest.fixture
def export_url():
return 'http://mfr.osf.io/export?url=' + url()
@pytest.fixture
def extension():
return '.jasp'
@pytest.fixture
def renderer(metadata, ok_new_manifest_path, url, assets_url, export_url):
return JASPRenderer(metadata, ok_new_manifest_path, url, assets_url, export_url)
class TestCodeJASPRenderer:
def test_render_JASP(self, renderer):
body = renderer.render()
assert '<div style="word-wrap: break-word; overflow: auto;" class="mfrViewer">' in body
def test_render_JASP_old_manifest(self, metadata, ok_old_manifest_path, url, assets_url, export_url):
renderer = JASPRenderer(metadata, ok_old_manifest_path, url, assets_url, export_url)
body = renderer.render()
assert '<div style="word-wrap: break-word; overflow: auto;" class="mfrViewer">' in body
def test_render_JASP_not_a_zip_file(self, metadata, not_a_zip_file_path, url, assets_url, export_url):
try:
renderer = JASPRenderer(metadata, not_a_zip_file_path, url, assets_url, export_url)
renderer.render()
except RendererError:
return
assert False # should not get here
def test_render_JASP_no_manifest(self, metadata, no_manifest_path, url, assets_url, export_url):
try:
renderer = JASPRenderer(metadata, no_manifest_path, url, assets_url, export_url)
renderer.render()
except RendererError:
return
assert False # should not get here
def test_render_JASP_no_data_archive_version_in_manifest(self, metadata, no_data_archive_version_in_manifest_path, url, assets_url, export_url):
try:
renderer = JASPRenderer(metadata, no_data_archive_version_in_manifest_path, url, assets_url, export_url)
renderer.render()
except RendererError:
return
assert False # should not get here
def test_render_JASP_data_archive_is_too_old(self, metadata, data_archive_version_is_too_old_path, url, assets_url, export_url):
try:
renderer = JASPRenderer(metadata, data_archive_version_is_too_old_path, url, assets_url, export_url)
renderer.render()
except RendererError:
return
assert False # should not get here
def test_render_JASP_no_index_html(self, metadata, no_index_html_path, url, assets_url, export_url):
try:
renderer = JASPRenderer(metadata, no_index_html_path, url, assets_url, export_url)
renderer.render()
except RendererError:
return
assert False # should not get here
def test_render_JASP_contains_malicious_script(self, metadata, contains_malicious_script_path, url, assets_url, export_url):
renderer = JASPRenderer(metadata, contains_malicious_script_path, url, assets_url, export_url)
body = renderer.render()
assert '<script src="link-to-something-malicious.js">' not in body
def test_render_JASP_file_required(self, renderer):
assert renderer.file_required is True
def test_render_JASP_cache_result(self, renderer):
assert renderer.cache_result is True