Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/misc/test_badges.py
Show All 29 Lines | from swh.web.tests.strategies import ( | ||||
revision, | revision, | ||||
snapshot, | snapshot, | ||||
unknown_content, | unknown_content, | ||||
unknown_directory, | unknown_directory, | ||||
unknown_release, | unknown_release, | ||||
unknown_revision, | unknown_revision, | ||||
unknown_snapshot, | unknown_snapshot, | ||||
) | ) | ||||
from swh.web.tests.utils import check_http_get_response | |||||
@given(content()) | @given(content()) | ||||
def test_content_badge(client, content): | def test_content_badge(client, content): | ||||
_test_badge_endpoints(client, CONTENT, content["sha1_git"]) | _test_badge_endpoints(client, CONTENT, content["sha1_git"]) | ||||
@given(directory()) | @given(directory()) | ||||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | for object_type, object_id in ( | ||||
(DIRECTORY, unknown_directory), | (DIRECTORY, unknown_directory), | ||||
(ORIGIN, new_origin.url), | (ORIGIN, new_origin.url), | ||||
(RELEASE, unknown_release), | (RELEASE, unknown_release), | ||||
(REVISION, unknown_revision), | (REVISION, unknown_revision), | ||||
(SNAPSHOT, unknown_snapshot), | (SNAPSHOT, unknown_snapshot), | ||||
): | ): | ||||
url_args = {"object_type": object_type, "object_id": object_id} | url_args = {"object_type": object_type, "object_id": object_id} | ||||
url = reverse("swh-badge", url_args=url_args) | url = reverse("swh-badge", url_args=url_args) | ||||
resp = client.get(url) | resp = check_http_get_response( | ||||
client, url, status_code=200, content_type="image/svg+xml" | |||||
) | |||||
_check_generated_badge(resp, **url_args, error="not found") | _check_generated_badge(resp, **url_args, error="not found") | ||||
if object_type != ORIGIN: | if object_type != ORIGIN: | ||||
object_swhid = swhid(object_type, object_id) | object_swhid = swhid(object_type, object_id) | ||||
url = reverse("swh-badge-swhid", url_args={"object_swhid": object_swhid}) | url = reverse("swh-badge-swhid", url_args={"object_swhid": object_swhid}) | ||||
resp = client.get(url) | resp = check_http_get_response( | ||||
client, url, status_code=200, content_type="image/svg+xml" | |||||
) | |||||
_check_generated_badge(resp, **url_args, error="not found") | _check_generated_badge(resp, **url_args, error="not found") | ||||
for object_type, object_id in ( | for object_type, object_id in ( | ||||
(CONTENT, invalid_sha1), | (CONTENT, invalid_sha1), | ||||
(DIRECTORY, invalid_sha1), | (DIRECTORY, invalid_sha1), | ||||
(RELEASE, invalid_sha1), | (RELEASE, invalid_sha1), | ||||
(REVISION, invalid_sha1), | (REVISION, invalid_sha1), | ||||
(SNAPSHOT, invalid_sha1), | (SNAPSHOT, invalid_sha1), | ||||
): | ): | ||||
url_args = {"object_type": object_type, "object_id": object_id} | url_args = {"object_type": object_type, "object_id": object_id} | ||||
url = reverse("swh-badge", url_args=url_args) | url = reverse("swh-badge", url_args=url_args) | ||||
resp = client.get(url) | |||||
resp = check_http_get_response( | |||||
client, url, status_code=200, content_type="image/svg+xml" | |||||
) | |||||
_check_generated_badge(resp, **url_args, error="invalid id") | _check_generated_badge(resp, **url_args, error="invalid id") | ||||
object_swhid = f"swh:1:{object_type[:3]}:{object_id}" | object_swhid = f"swh:1:{object_type[:3]}:{object_id}" | ||||
url = reverse("swh-badge-swhid", url_args={"object_swhid": object_swhid}) | url = reverse("swh-badge-swhid", url_args={"object_swhid": object_swhid}) | ||||
resp = client.get(url) | resp = check_http_get_response( | ||||
client, url, status_code=200, content_type="image/svg+xml" | |||||
) | |||||
_check_generated_badge(resp, "", "", error="invalid id") | _check_generated_badge(resp, "", "", error="invalid id") | ||||
@given(origin(), release()) | @given(origin(), release()) | ||||
def test_badge_endpoints_have_cors_header(client, origin, release): | def test_badge_endpoints_have_cors_header(client, origin, release): | ||||
url = reverse( | url = reverse( | ||||
"swh-badge", url_args={"object_type": ORIGIN, "object_id": origin["url"]} | "swh-badge", url_args={"object_type": ORIGIN, "object_id": origin["url"]} | ||||
) | ) | ||||
resp = client.get(url, HTTP_ORIGIN="https://example.org") | |||||
assert resp.status_code == 200, resp.content | resp = check_http_get_response( | ||||
client, | |||||
url, | |||||
status_code=200, | |||||
content_type="image/svg+xml", | |||||
http_origin="https://example.org", | |||||
) | |||||
assert ACCESS_CONTROL_ALLOW_ORIGIN in resp | assert ACCESS_CONTROL_ALLOW_ORIGIN in resp | ||||
release_swhid = swhid(RELEASE, release) | release_swhid = swhid(RELEASE, release) | ||||
url = reverse("swh-badge-swhid", url_args={"object_swhid": release_swhid}) | url = reverse("swh-badge-swhid", url_args={"object_swhid": release_swhid}) | ||||
resp = client.get(url, HTTP_ORIGIN="https://example.org") | resp = check_http_get_response( | ||||
assert resp.status_code == 200, resp.content | client, | ||||
url, | |||||
status_code=200, | |||||
content_type="image/svg+xml", | |||||
http_origin="https://example.org", | |||||
) | |||||
assert ACCESS_CONTROL_ALLOW_ORIGIN in resp | assert ACCESS_CONTROL_ALLOW_ORIGIN in resp | ||||
def _test_badge_endpoints(client, object_type, object_id): | def _test_badge_endpoints(client, object_type, object_id): | ||||
url_args = {"object_type": object_type, "object_id": object_id} | url_args = {"object_type": object_type, "object_id": object_id} | ||||
url = reverse("swh-badge", url_args=url_args) | url = reverse("swh-badge", url_args=url_args) | ||||
resp = client.get(url) | resp = check_http_get_response( | ||||
client, url, status_code=200, content_type="image/svg+xml" | |||||
) | |||||
_check_generated_badge(resp, **url_args) | _check_generated_badge(resp, **url_args) | ||||
if object_type != ORIGIN: | if object_type != ORIGIN: | ||||
obj_swhid = swhid(object_type, object_id) | obj_swhid = swhid(object_type, object_id) | ||||
url = reverse("swh-badge-swhid", url_args={"object_swhid": obj_swhid}) | url = reverse("swh-badge-swhid", url_args={"object_swhid": obj_swhid}) | ||||
resp = client.get(url) | resp = check_http_get_response( | ||||
client, url, status_code=200, content_type="image/svg+xml" | |||||
) | |||||
_check_generated_badge(resp, **url_args) | _check_generated_badge(resp, **url_args) | ||||
def _check_generated_badge(response, object_type, object_id, error=None): | def _check_generated_badge(response, object_type, object_id, error=None): | ||||
assert response.status_code == 200, response.content | assert response.status_code == 200, response.content | ||||
assert response["Content-Type"] == "image/svg+xml" | assert response["Content-Type"] == "image/svg+xml" | ||||
if not object_type: | if not object_type: | ||||
Show All 27 Lines |