diff --git a/swh/web/tests/browse/views/data/directory_test_data.py b/swh/web/tests/browse/views/data/directory_test_data.py deleted file mode 100644 index 51be3647..00000000 --- a/swh/web/tests/browse/views/data/directory_test_data.py +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (C) 2017-2018 The Software Heritage developers -# See the AUTHORS file at the top-level directory of this distribution -# License: GNU Affero General Public License version 3, or any later version -# See top-level LICENSE file for more information - -# flake8: noqa - -stub_root_directory_sha1 = '08e8329257dad3a3ef7adea48aa6e576cd82de5b' \ No newline at end of file diff --git a/swh/web/tests/browse/views/test_identifiers.py b/swh/web/tests/browse/views/test_identifiers.py index 2531bc78..041366f1 100644 --- a/swh/web/tests/browse/views/test_identifiers.py +++ b/swh/web/tests/browse/views/test_identifiers.py @@ -1,136 +1,162 @@ -# Copyright (C) 2018 The Software Heritage developers +# Copyright (C) 2018-2019 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU Affero General Public License version 3, or any later version # See top-level LICENSE file for more information -# flake8: noqa +from hypothesis import given -from unittest.mock import patch - -from swh.web.common.exc import BadInputExc from swh.web.common.utils import reverse +from swh.web.tests.strategies import ( + content, directory, revision, release, snapshot +) from swh.web.tests.testcase import WebTestCase -from .data.content_test_data import stub_content_text_data - -from .data.directory_test_data import stub_root_directory_sha1 - -from .data.revision_test_data import revision_id_test - -from .data.release_test_data import stub_release - swh_id_prefix = 'swh:1:' class SwhBrowseIdTest(WebTestCase): - def test_content_id_browse(self): - cnt_sha1_git = stub_content_text_data['checksums']['sha1_git'] + @given(content()) + def test_content_id_browse(self, content): + cnt_sha1_git = content['sha1_git'] swh_id = swh_id_prefix + 'cnt:' + cnt_sha1_git url = reverse('browse-swh-id', url_args={'swh_id': swh_id}) query_string = 'sha1_git:' + cnt_sha1_git content_browse_url = reverse('browse-content', url_args={'query_string': query_string}) resp = self.client.get(url) self.assertEqual(resp.status_code, 302) self.assertEqual(resp['location'], content_browse_url) - def test_directory_id_browse(self): - swh_id = swh_id_prefix + 'dir:' + stub_root_directory_sha1 + @given(directory()) + def test_directory_id_browse(self, directory): + swh_id = swh_id_prefix + 'dir:' + directory url = reverse('browse-swh-id', url_args={'swh_id': swh_id}) directory_browse_url = reverse('browse-directory', - url_args={'sha1_git': stub_root_directory_sha1}) + url_args={'sha1_git': directory}) resp = self.client.get(url) self.assertEqual(resp.status_code, 302) self.assertEqual(resp['location'], directory_browse_url) - def test_revision_id_browse(self): - swh_id = swh_id_prefix + 'rev:' + revision_id_test + @given(revision()) + def test_revision_id_browse(self, revision): + swh_id = swh_id_prefix + 'rev:' + revision url = reverse('browse-swh-id', url_args={'swh_id': swh_id}) revision_browse_url = reverse('browse-revision', - url_args={'sha1_git': revision_id_test}) + url_args={'sha1_git': revision}) resp = self.client.get(url) self.assertEqual(resp.status_code, 302) self.assertEqual(resp['location'], revision_browse_url) query_params = {'origin_type': 'git', - 'origin': 'https://github.com/webpack/webpack'} + 'origin': 'https://github.com/user/repo'} url = reverse('browse-swh-id', url_args={'swh_id': swh_id}, query_params=query_params) revision_browse_url = reverse('browse-revision', - url_args={'sha1_git': revision_id_test}, - query_params=query_params) + url_args={'sha1_git': revision}, + query_params=query_params) resp = self.client.get(url) self.assertEqual(resp.status_code, 302) self.assertEqual(resp['location'], revision_browse_url) - def test_release_id_browse(self): - swh_id = swh_id_prefix + 'rel:' + stub_release['id'] + @given(release()) + def test_release_id_browse(self, release): + swh_id = swh_id_prefix + 'rel:' + release url = reverse('browse-swh-id', url_args={'swh_id': swh_id}) release_browse_url = reverse('browse-release', - url_args={'sha1_git': stub_release['id']}) + url_args={'sha1_git': release}) resp = self.client.get(url) self.assertEqual(resp.status_code, 302) self.assertEqual(resp['location'], release_browse_url) query_params = {'origin_type': 'git', - 'origin': 'https://github.com/python/cpython'} + 'origin': 'https://github.com/user/repo'} url = reverse('browse-swh-id', url_args={'swh_id': swh_id}, query_params=query_params) release_browse_url = reverse('browse-release', - url_args={'sha1_git': stub_release['id']}, + url_args={'sha1_git': release}, query_params=query_params) resp = self.client.get(url) self.assertEqual(resp.status_code, 302) self.assertEqual(resp['location'], release_browse_url) - def test_bad_id_browse(self): - swh_id = swh_id_prefix + 'foo:' + stub_release['id'] + @given(snapshot()) + def test_snapshot_id_browse(self, snapshot): + swh_id = swh_id_prefix + 'snp:' + snapshot + url = reverse('browse-swh-id', + url_args={'swh_id': swh_id}) + + snapshot_browse_url = reverse('browse-snapshot', + url_args={'snapshot_id': snapshot}) + + resp = self.client.get(url) + + self.assertEqual(resp.status_code, 302) + self.assertEqual(resp['location'], snapshot_browse_url) + + query_params = {'origin_type': 'git', + 'origin': 'https://github.com/user/repo'} + + url = reverse('browse-swh-id', + url_args={'swh_id': swh_id}, + query_params=query_params) + + release_browse_url = reverse('browse-snapshot', + url_args={'snapshot_id': snapshot}, + query_params=query_params) + + resp = self.client.get(url) + self.assertEqual(resp.status_code, 302) + self.assertEqual(resp['location'], release_browse_url) + + @given(release()) + def test_bad_id_browse(self, release): + swh_id = swh_id_prefix + 'foo:' + release url = reverse('browse-swh-id', url_args={'swh_id': swh_id}) resp = self.client.get(url) self.assertEqual(resp.status_code, 400) - def test_content_id_optional_parts_browse(self): - cnt_sha1_git = stub_content_text_data['checksums']['sha1_git'] + @given(content()) + def test_content_id_optional_parts_browse(self, content): + cnt_sha1_git = content['sha1_git'] optional_parts = ';lines=4-20;origin=https://github.com/user/repo' swh_id = swh_id_prefix + 'cnt:' + cnt_sha1_git + optional_parts url = reverse('browse-swh-id', url_args={'swh_id': swh_id}) query_string = 'sha1_git:' + cnt_sha1_git - content_browse_url = reverse('browse-content', - url_args={'query_string': query_string}, - query_params={'origin' : 'https://github.com/user/repo'}) + content_browse_url = reverse( + 'browse-content', url_args={'query_string': query_string}, + query_params={'origin': 'https://github.com/user/repo'}) content_browse_url += '#L4-L20' resp = self.client.get(url) self.assertEqual(resp.status_code, 302) self.assertEqual(resp['location'], content_browse_url) -