|
1 |
| -import unittest |
2 |
| - |
3 |
| -from django.core import mail |
4 |
| -from django.test import TestCase, TransactionTestCase |
| 1 | +from django.test import TransactionTestCase |
5 | 2 | from django.contrib.auth.models import User
|
6 | 3 |
|
7 |
| -from main.models import Package, Repo |
| 4 | +from main.models import Repo |
8 | 5 | from packages.models import PackageRelation
|
9 | 6 | from devel.models import UserProfile
|
10 | 7 |
|
11 |
| -from .alpm import AlpmAPI |
12 |
| - |
13 |
| - |
14 |
| -alpm = AlpmAPI() |
15 |
| - |
16 |
| - |
17 |
| -class AlpmTestCase(unittest.TestCase): |
18 |
| - |
19 |
| - @unittest.skipUnless(alpm.available, "ALPM is unavailable") |
20 |
| - def test_version(self): |
21 |
| - version = alpm.version() |
22 |
| - self.assertIsNotNone(version) |
23 |
| - version = version.split(b'.') |
24 |
| - # version is a 3-tuple, e.g., '7.0.2' |
25 |
| - self.assertEqual(3, len(version)) |
26 |
| - |
27 |
| - @unittest.skipUnless(alpm.available, "ALPM is unavailable") |
28 |
| - def test_vercmp(self): |
29 |
| - self.assertEqual(0, alpm.vercmp("1.0", "1.0")) |
30 |
| - self.assertEqual(1, alpm.vercmp("1.1", "1.0")) |
31 |
| - |
32 |
| - @unittest.skipUnless(alpm.available, "ALPM is unavailable") |
33 |
| - def test_compare_versions(self): |
34 |
| - self.assertTrue(alpm.compare_versions("1.0", "<=", "2.0")) |
35 |
| - self.assertTrue(alpm.compare_versions("1.0", "<", "2.0")) |
36 |
| - self.assertFalse(alpm.compare_versions("1.0", ">=", "2.0")) |
37 |
| - self.assertFalse(alpm.compare_versions("1.0", ">", "2.0")) |
38 |
| - self.assertTrue(alpm.compare_versions("1:1.0", ">", "2.0")) |
39 |
| - self.assertFalse(alpm.compare_versions("1.0.2", ">=", "2.1.0")) |
40 |
| - |
41 |
| - self.assertTrue(alpm.compare_versions("1.0", "=", "1.0")) |
42 |
| - self.assertTrue(alpm.compare_versions("1.0", "=", "1.0-1")) |
43 |
| - self.assertFalse(alpm.compare_versions("1.0", "!=", "1.0")) |
44 |
| - |
45 |
| - def test_behavior_when_unavailable(self): |
46 |
| - mock_alpm = AlpmAPI() |
47 |
| - mock_alpm.available = False |
48 |
| - |
49 |
| - self.assertIsNone(mock_alpm.version()) |
50 |
| - self.assertIsNone(mock_alpm.vercmp("1.0", "1.0")) |
51 |
| - self.assertIsNone(mock_alpm.compare_versions("1.0", "=", "1.0")) |
52 |
| - |
53 |
| - |
54 |
| -class PackagesTest(TestCase): |
55 |
| - |
56 |
| - def test_feed(self): |
57 |
| - response = self.client.get('/feeds/packages/') |
58 |
| - self.assertEqual(response.status_code, 200) |
59 |
| - |
60 |
| - def test_sitemap(self): |
61 |
| - for sitemap in ['packages', 'package-groups', 'package-files', 'split-packages']: |
62 |
| - response = self.client.get('/sitemap-{}.xml'.format(sitemap)) |
63 |
| - self.assertEqual(response.status_code, 200) |
64 |
| - |
65 |
| - |
66 |
| -class PackageSearchJson(TestCase): |
67 |
| - fixtures = ['main/fixtures/arches.json', 'main/fixtures/repos.json', |
68 |
| - 'main/fixtures/package.json'] |
69 |
| - |
70 |
| - def test_invalid(self): |
71 |
| - response = self.client.get('/packages/search/json/') |
72 |
| - self.assertEqual(response.status_code, 200) |
73 |
| - data = response.json() |
74 |
| - self.assertEqual(data['limit'], 250) |
75 |
| - self.assertEqual(data['results'], []) |
76 |
| - self.assertEqual(data['valid'], False) |
77 |
| - |
78 |
| - def test_reponame(self): |
79 |
| - response = self.client.get('/packages/search/json/?repository=core') |
80 |
| - self.assertEqual(response.status_code, 200) |
81 |
| - data = response.json() |
82 |
| - self.assertEqual(len(data['results']), 5) |
83 |
| - self.assertEqual(set([r['pkgname'] for r in data['results']]), |
84 |
| - {"coreutils", "glibc", "linux", "pacman", "systemd"}) |
85 |
| - |
86 |
| - def test_packagename(self): |
87 |
| - response = self.client.get('/packages/search/json/?name=linux') |
88 |
| - self.assertEqual(response.status_code, 200) |
89 |
| - data = response.json() |
90 |
| - self.assertEqual(len(data['results']), 1) |
91 |
| - |
92 |
| - def test_no_results(self): |
93 |
| - response = self.client.get('/packages/search/json/?name=none') |
94 |
| - self.assertEqual(response.status_code, 200) |
95 |
| - data = response.json() |
96 |
| - self.assertEqual(len(data['results']), 0) |
97 |
| - |
98 |
| - def test_limit_four(self): |
99 |
| - response = self.client.get('/packages/search/json/?limit=4') |
100 |
| - self.assertEqual(response.status_code, 200) |
101 |
| - data = response.json() |
102 |
| - self.assertEqual(data['page'], 1) |
103 |
| - self.assertEqual(data['num_pages'], 2) |
104 |
| - self.assertEqual(data['limit'], 4) |
105 |
| - self.assertEqual(len(data['results']), 4) |
106 |
| - |
107 |
| - def test_second_page(self): |
108 |
| - response = self.client.get('/packages/search/json/?limit=4&page=2') |
109 |
| - self.assertEqual(response.status_code, 200) |
110 |
| - data = response.json() |
111 |
| - self.assertEqual(data['page'], 2) |
112 |
| - self.assertEqual(data['num_pages'], 2) |
113 |
| - self.assertEqual(len(data['results']), 1) |
114 |
| - |
115 |
| - |
116 |
| -class PackageSearch(TestCase): |
117 |
| - fixtures = ['main/fixtures/arches.json', 'main/fixtures/repos.json', |
118 |
| - 'main/fixtures/package.json'] |
119 |
| - |
120 |
| - def test_invalid(self): |
121 |
| - response = self.client.get('/packages/?q=test') |
122 |
| - self.assertEqual(response.status_code, 200) |
123 |
| - self.assertIn('0 matching packages found', response.content.decode()) |
124 |
| - |
125 |
| - def test_exact_match(self): |
126 |
| - response = self.client.get('/packages/?q=linux') |
127 |
| - self.assertEqual(response.status_code, 200) |
128 |
| - self.assertIn('1 matching package found', response.content.decode()) |
129 |
| - |
130 |
| - def test_filter_name(self): |
131 |
| - response = self.client.get('/packages/?name=name') |
132 |
| - self.assertEqual(response.status_code, 200) |
133 |
| - self.assertIn('0 matching packages found', response.content.decode()) |
134 |
| - |
135 |
| - def test_filter_repo(self): |
136 |
| - response = self.client.get('/packages/?repo=Core') |
137 |
| - self.assertEqual(response.status_code, 200) |
138 |
| - self.assertIn('5 matching packages found', response.content.decode()) |
139 |
| - |
140 |
| - def test_filter_desc(self): |
141 |
| - response = self.client.get('/packages/?desc=kernel') |
142 |
| - self.assertEqual(response.status_code, 200) |
143 |
| - self.assertIn('1 matching package found', response.content.decode()) |
144 |
| - |
145 |
| - def test_filter_flagged(self): |
146 |
| - response = self.client.get('/packages/?flagged=Flagged') |
147 |
| - self.assertEqual(response.status_code, 200) |
148 |
| - self.assertIn('0 matching packages found', response.content.decode()) |
149 |
| - |
150 |
| - def test_filter_not_flagged(self): |
151 |
| - response = self.client.get('/packages/?flagged=Not Flagged') |
152 |
| - self.assertEqual(response.status_code, 200) |
153 |
| - self.assertIn('5 matching packages found', response.content.decode()) |
154 |
| - |
155 |
| - def test_filter_arch(self): |
156 |
| - response = self.client.get('/packages/?arch=any') |
157 |
| - self.assertEqual(response.status_code, 200) |
158 |
| - self.assertIn('0 matching packages found', response.content.decode()) |
159 |
| - |
160 |
| - def test_filter_maintainer_orphan(self): |
161 |
| - response = self.client.get('/packages/?maintainer=orphan') |
162 |
| - self.assertEqual(response.status_code, 200) |
163 |
| - self.assertIn('5 matching packages found', response.content.decode()) |
164 |
| - |
165 |
| - def test_filter_packager_unknown(self): |
166 |
| - response = self.client.get('/packages/?packager=unknown') |
167 |
| - self.assertEqual(response.status_code, 200) |
168 |
| - self.assertIn('5 matching packages found', response.content.decode()) |
169 |
| - |
170 |
| - def test_sort(self): |
171 |
| - response = self.client.get('/packages/?sort=pkgname') |
172 |
| - self.assertEqual(response.status_code, 200) |
173 |
| - self.assertIn('5 matching packages found', response.content.decode()) |
174 |
| - |
175 |
| - def test_head(self): |
176 |
| - response = self.client.head('/packages/?q=unknown') |
177 |
| - self.assertEqual(response.status_code, 200) |
178 |
| - |
179 |
| - |
180 |
| -class OpenSearch(TestCase): |
181 |
| - fixtures = ['main/fixtures/arches.json', 'main/fixtures/repos.json', |
182 |
| - 'main/fixtures/package.json'] |
183 |
| - |
184 |
| - def test_packages(self): |
185 |
| - response = self.client.get('/opensearch/packages/') |
186 |
| - self.assertEqual(response.status_code, 200) |
187 |
| - |
188 |
| - def test_packages_suggest(self): |
189 |
| - response = self.client.get('/opensearch/packages/suggest') |
190 |
| - self.assertEqual(response.status_code, 200) |
191 |
| - |
192 |
| - def test_packages_suggest_lowercase(self): |
193 |
| - response = self.client.get('/opensearch/packages/suggest?q=linux') |
194 |
| - self.assertEqual(response.status_code, 200) |
195 |
| - self.assertIn('linux', response.content.decode()) |
196 |
| - |
197 |
| - def test_packages_suggest_uppercase(self): |
198 |
| - response = self.client.get('/opensearch/packages/suggest?q=LINUX') |
199 |
| - self.assertEqual(response.status_code, 200) |
200 |
| - self.assertIn('linux', response.content.decode()) |
201 |
| - |
202 |
| - response = self.client.get('/opensearch/packages/suggest?q=LINux') |
203 |
| - self.assertEqual(response.status_code, 200) |
204 |
| - self.assertIn('linux', response.content.decode()) |
205 |
| - |
206 |
| - |
207 |
| -class PackageViews(TestCase): |
208 |
| - fixtures = ['main/fixtures/arches.json', 'main/fixtures/repos.json', |
209 |
| - 'main/fixtures/package.json'] |
210 |
| - |
211 |
| - def test_arch_differences(self): |
212 |
| - response = self.client.get('/packages/differences/') |
213 |
| - self.assertEqual(response.status_code, 200) |
214 |
| - |
215 |
| - |
216 |
| -class PackageDisplay(TestCase): |
217 |
| - fixtures = ['main/fixtures/arches.json', 'main/fixtures/repos.json', |
218 |
| - 'main/fixtures/package.json'] |
219 |
| - |
220 |
| - def test_packages_detail(self): |
221 |
| - response = self.client.get('/packages/core/x86_64/linux/') |
222 |
| - self.assertEqual(response.status_code, 200) |
223 |
| - |
224 |
| - response = self.client.get('/packages/core/x86_64/nope/') |
225 |
| - self.assertEqual(response.status_code, 404) |
226 |
| - |
227 |
| - # Redirect to search |
228 |
| - response = self.client.get('/packages/core/x86_64/') |
229 |
| - self.assertEqual(response.status_code, 302) |
230 |
| - |
231 |
| - def test_packages_json(self): |
232 |
| - response = self.client.get('/packages/core/x86_64/linux/json/') |
233 |
| - self.assertEqual(response.status_code, 200) |
234 |
| - data = response.json() |
235 |
| - self.assertEqual(data['pkgbase'], 'linux') |
236 |
| - # TODO verify more of the structure |
237 |
| - |
238 |
| - def test_packages_files(self): |
239 |
| - response = self.client.get('/packages/core/x86_64/linux/files/') |
240 |
| - self.assertEqual(response.status_code, 200) |
241 |
| - |
242 |
| - def test_packages_files_json(self): |
243 |
| - response = self.client.get('/packages/core/x86_64/linux/files/json/') |
244 |
| - self.assertEqual(response.status_code, 200) |
245 |
| - data = response.json() |
246 |
| - self.assertEqual(data['pkgname'], 'linux') |
247 |
| - # TODO verify more of the structure |
248 |
| - |
249 |
| - def test_packages_download(self): |
250 |
| - response = self.client.get('/packages/core/x86_64/linux/download/') |
251 |
| - self.assertEqual(response.status_code, 404) |
252 |
| - # TODO: Figure out how to fake a mirror |
253 |
| - |
254 |
| - def test_head(self): |
255 |
| - response = self.client.head('/packages/core/x86_64/linux/') |
256 |
| - self.assertEqual(response.status_code, 200) |
257 |
| - |
258 |
| - def test_groups(self): |
259 |
| - response = self.client.get('/groups/') |
260 |
| - self.assertEqual(response.status_code, 200) |
261 |
| - |
262 |
| - def test_groups_arch(self): |
263 |
| - response = self.client.get('/groups/x86_64/') |
264 |
| - self.assertEqual(response.status_code, 200) |
265 |
| - |
266 |
| - def test_groups_details(self): |
267 |
| - response = self.client.get('/groups/x86_64/base/') |
268 |
| - self.assertEqual(response.status_code, 404) |
269 |
| - # FIXME: add group fixtures. |
270 |
| - |
271 |
| - |
272 |
| -class FlagPackage(TestCase): |
273 |
| - fixtures = ['main/fixtures/arches.json', 'main/fixtures/repos.json', |
274 |
| - 'main/fixtures/package.json'] |
275 |
| - |
276 |
| - def test_flag_package(self): |
277 |
| - data = { |
278 |
| - 'website': '', |
279 |
| - |
280 |
| - 'message': 'new linux version', |
281 |
| - } |
282 |
| - response = self.client.post('/packages/core/x86_64/linux/flag/', |
283 |
| - data, |
284 |
| - follow=True) |
285 |
| - self.assertEqual(response.status_code, 200) |
286 |
| - self.assertIn('Package Flagged - linux', response.content.decode()) |
287 |
| - self.assertEqual(len(mail.outbox), 1) |
288 |
| - self.assertIn('package [linux] marked out-of-date', mail.outbox[0].subject) |
289 |
| - |
290 |
| - # Flag again, should fail |
291 |
| - response = self.client.post('/packages/core/x86_64/linux/flag/', |
292 |
| - data, |
293 |
| - follow=True) |
294 |
| - self.assertEqual(response.status_code, 200) |
295 |
| - self.assertIn('has already been flagged out-of-date.', response.content.decode()) |
296 |
| - |
297 |
| - def test_flag_package_invalid(self): |
298 |
| - data = { |
299 |
| - 'website': '', |
300 |
| - |
301 |
| - 'message': 'a', |
302 |
| - } |
303 |
| - response = self.client.post('/packages/core/x86_64/linux/flag/', |
304 |
| - data, |
305 |
| - follow=True) |
306 |
| - self.assertEqual(response.status_code, 200) |
307 |
| - self.assertIn('Enter a valid and useful out-of-date message', response.content.decode()) |
308 |
| - self.assertEqual(len(mail.outbox), 0) |
309 |
| - |
310 |
| - def test_flag_help(self): |
311 |
| - response = self.client.get('/packages/flaghelp/') |
312 |
| - self.assertEqual(response.status_code, 200) |
313 | 8 |
|
314 | 9 |
|
315 | 10 | class UnFlagPackage(TransactionTestCase):
|
|
0 commit comments