Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/api/views/test_release.py
# Copyright (C) 2015-2018 The Software Heritage developers | # Copyright (C) 2015-2018 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU Affero General Public License version 3, or any later version | # License: GNU Affero General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from datetime import datetime | from datetime import datetime | ||||
from hypothesis import given | from hypothesis import given | ||||
from rest_framework.test import APITestCase | from rest_framework.test import APITestCase | ||||
from swh.model.hashutil import hash_to_bytes | from swh.model.hashutil import hash_to_bytes | ||||
from swh.web.common.utils import reverse | from swh.web.common.utils import reverse | ||||
from swh.web.tests.data import random_sha1 | |||||
from swh.web.tests.strategies import ( | from swh.web.tests.strategies import ( | ||||
release, unknown_release, sha1, content, directory | release, sha1, content, directory | ||||
) | ) | ||||
from swh.web.tests.testcase import WebTestCase | from swh.web.tests.testcase import WebTestCase | ||||
class ReleaseApiTestCase(WebTestCase, APITestCase): | class ReleaseApiTestCase(WebTestCase, APITestCase): | ||||
@given(release()) | @given(release()) | ||||
def test_api_release(self, release): | def test_api_release(self, release): | ||||
▲ Show 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | def test_api_release_target_type_not_a_revision(self, new_rel1, new_rel2, | ||||
url_args=url_args) | url_args=url_args) | ||||
expected_release['author_url'] = author_url | expected_release['author_url'] = author_url | ||||
expected_release['target_url'] = target_url | expected_release['target_url'] = target_url | ||||
self.assertEqual(rv.status_code, 200) | self.assertEqual(rv.status_code, 200) | ||||
self.assertEqual(rv['Content-Type'], 'application/json') | self.assertEqual(rv['Content-Type'], 'application/json') | ||||
self.assertEqual(rv.data, expected_release) | self.assertEqual(rv.data, expected_release) | ||||
@given(unknown_release()) | def test_api_release_not_found(self): | ||||
def test_api_release_not_found(self, unknown_release): | unknown_release_ = random_sha1() | ||||
url = reverse('api-release', url_args={'sha1_git': unknown_release}) | url = reverse('api-release', url_args={'sha1_git': unknown_release_}) | ||||
rv = self.client.get(url) | rv = self.client.get(url) | ||||
self.assertEqual(rv.status_code, 404) | self.assertEqual(rv.status_code, 404) | ||||
self.assertEqual(rv['Content-Type'], 'application/json') | self.assertEqual(rv['Content-Type'], 'application/json') | ||||
self.assertEqual(rv.data, { | self.assertEqual(rv.data, { | ||||
'exception': 'NotFoundExc', | 'exception': 'NotFoundExc', | ||||
'reason': 'Release with sha1_git %s not found.' % unknown_release | 'reason': 'Release with sha1_git %s not found.' % unknown_release_ | ||||
}) | }) | ||||
@given(release()) | @given(release()) | ||||
def test_api_release_uppercase(self, release): | def test_api_release_uppercase(self, release): | ||||
url = reverse('api-release-uppercase-checksum', | url = reverse('api-release-uppercase-checksum', | ||||
url_args={'sha1_git': release.upper()}) | url_args={'sha1_git': release.upper()}) | ||||
resp = self.client.get(url) | resp = self.client.get(url) | ||||
self.assertEqual(resp.status_code, 302) | self.assertEqual(resp.status_code, 302) | ||||
redirect_url = reverse('api-release-uppercase-checksum', | redirect_url = reverse('api-release-uppercase-checksum', | ||||
url_args={'sha1_git': release}) | url_args={'sha1_git': release}) | ||||
self.assertEqual(resp['location'], redirect_url) | self.assertEqual(resp['location'], redirect_url) |