mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
feat(archives): add {archive}.sha256 and construct archives in tmpdir
This change brings some new additions to our archives: - SHA-256 .sha256 hexdigests - We construct our archives in a tmpdir now and move them to the archive destination when all are completed. This removes some corrupted downloading when archiving is in-process. Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
parent
828847cfcd
commit
40a0e866e7
6 changed files with 135 additions and 61 deletions
|
@ -1,5 +1,10 @@
|
|||
""" A test suite used to test HTML renders in different cases. """
|
||||
import hashlib
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
from http import HTTPStatus
|
||||
from unittest import mock
|
||||
|
||||
import fastapi
|
||||
import pytest
|
||||
|
@ -7,7 +12,7 @@ import pytest
|
|||
from fastapi import HTTPException
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from aurweb import asgi, db
|
||||
from aurweb import asgi, config, db
|
||||
from aurweb.models import PackageBase
|
||||
from aurweb.models.account_type import TRUSTED_USER_ID, USER_ID
|
||||
from aurweb.models.user import User
|
||||
|
@ -125,6 +130,29 @@ def test_get_successes():
|
|||
assert successes[0].text.strip() == "Test"
|
||||
|
||||
|
||||
def test_archive_sig(client: TestClient):
|
||||
hash_value = hashlib.sha256(b'test').hexdigest()
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
packages_sha256 = os.path.join(tmpdir, "packages.gz.sha256")
|
||||
with open(packages_sha256, "w") as f:
|
||||
f.write(hash_value)
|
||||
|
||||
config_get = config.get
|
||||
|
||||
def mock_config(section: str, key: str):
|
||||
if key == "archivedir":
|
||||
return tmpdir
|
||||
return config_get(section, key)
|
||||
|
||||
with mock.patch("aurweb.config.get", side_effect=mock_config):
|
||||
with client as request:
|
||||
resp = request.get("/packages.gz.sha256")
|
||||
|
||||
assert resp.status_code == int(HTTPStatus.OK)
|
||||
assert resp.text == hash_value
|
||||
|
||||
|
||||
def test_metrics(client: TestClient):
|
||||
with client as request:
|
||||
resp = request.get("/metrics")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue