109 lines
3.3 KiB
Python
109 lines
3.3 KiB
Python
from pytest_httpx import HTTPXMock
|
|
from rest_framework import status
|
|
from rest_framework.test import APIClient
|
|
|
|
from paperless import version
|
|
|
|
|
|
class TestApiRemoteVersion:
|
|
ENDPOINT = "/api/remote_version/"
|
|
|
|
def test_remote_version_enabled_no_update_prefix(
|
|
self,
|
|
rest_api_client: APIClient,
|
|
httpx_mock: HTTPXMock,
|
|
):
|
|
httpx_mock.add_response(
|
|
url="https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest",
|
|
json={"tag_name": "ngx-1.6.0"},
|
|
)
|
|
|
|
response = rest_api_client.get(self.ENDPOINT)
|
|
|
|
assert response.status_code == status.HTTP_200_OK
|
|
assert "version" in response.data
|
|
assert response.data["version"] == "1.6.0"
|
|
|
|
assert "update_available" in response.data
|
|
assert not response.data["update_available"]
|
|
|
|
def test_remote_version_enabled_no_update_no_prefix(
|
|
self,
|
|
rest_api_client: APIClient,
|
|
httpx_mock: HTTPXMock,
|
|
):
|
|
httpx_mock.add_response(
|
|
url="https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest",
|
|
json={"tag_name": version.__full_version_str__},
|
|
)
|
|
|
|
response = rest_api_client.get(self.ENDPOINT)
|
|
|
|
assert response.status_code == status.HTTP_200_OK
|
|
assert "version" in response.data
|
|
assert response.data["version"] == version.__full_version_str__
|
|
|
|
assert "update_available" in response.data
|
|
assert not response.data["update_available"]
|
|
|
|
def test_remote_version_enabled_update(
|
|
self,
|
|
rest_api_client: APIClient,
|
|
httpx_mock: HTTPXMock,
|
|
):
|
|
new_version = (
|
|
version.__version__[0],
|
|
version.__version__[1],
|
|
version.__version__[2] + 1,
|
|
)
|
|
new_version_str = ".".join(map(str, new_version))
|
|
|
|
httpx_mock.add_response(
|
|
url="https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest",
|
|
json={"tag_name": new_version_str},
|
|
)
|
|
|
|
response = rest_api_client.get(self.ENDPOINT)
|
|
|
|
assert response.status_code == status.HTTP_200_OK
|
|
assert "version" in response.data
|
|
assert response.data["version"] == new_version_str
|
|
|
|
assert "update_available" in response.data
|
|
assert response.data["update_available"]
|
|
|
|
def test_remote_version_bad_json(
|
|
self,
|
|
rest_api_client: APIClient,
|
|
httpx_mock: HTTPXMock,
|
|
):
|
|
httpx_mock.add_response(
|
|
content=b'{ "blah":',
|
|
headers={"Content-Type": "application/json"},
|
|
)
|
|
|
|
response = rest_api_client.get(self.ENDPOINT)
|
|
|
|
assert response.status_code == status.HTTP_200_OK
|
|
assert "version" in response.data
|
|
assert response.data["version"] == "0.0.0"
|
|
|
|
assert "update_available" in response.data
|
|
assert not response.data["update_available"]
|
|
|
|
def test_remote_version_exception(
|
|
self,
|
|
rest_api_client: APIClient,
|
|
httpx_mock: HTTPXMock,
|
|
):
|
|
httpx_mock.add_response(status_code=503)
|
|
|
|
response = rest_api_client.get(self.ENDPOINT)
|
|
|
|
assert response.status_code == status.HTTP_200_OK
|
|
assert "version" in response.data
|
|
assert response.data["version"] == "0.0.0"
|
|
|
|
assert "update_available" in response.data
|
|
assert not response.data["update_available"]
|