This repository has been archived on 2025-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
szurubooru/server/szurubooru/tests/api/test_info.py

122 lines
3.9 KiB
Python

from datetime import datetime
from szurubooru import api, db, model
def test_info_api(
tmpdir,
config_injector,
context_factory,
post_factory,
user_factory,
fake_datetime,
):
directory = tmpdir.mkdir("data")
directory.join("test.txt").write("abc")
auth_user = user_factory(rank=model.User.RANK_REGULAR)
anon_user = user_factory(rank=model.User.RANK_ANONYMOUS)
config_injector(
{
"name": "test installation",
"contact_email": "test@example.com",
"enable_safety": True,
"data_dir": str(directory),
"user_name_regex": "1",
"password_regex": "2",
"tag_name_regex": "3",
"tag_category_name_regex": "4",
"default_rank": "5",
"privileges": {
"test_key1": "test_value1",
"test_key2": "test_value2",
"posts:view:featured": "regular",
},
"smtp": {
"host": "example.com",
},
}
)
db.session.add_all([post_factory(), post_factory()])
db.session.flush()
expected_config_key = {
"name": "test installation",
"contactEmail": "test@example.com",
"enableSafety": True,
"userNameRegex": "1",
"passwordRegex": "2",
"tagNameRegex": "3",
"tagCategoryNameRegex": "4",
"defaultUserRank": "5",
"privileges": {
"testKey1": "test_value1",
"testKey2": "test_value2",
"posts:view:featured": "regular",
},
"canSendMails": True,
}
with fake_datetime("2016-01-01 13:00"):
assert api.info_api.get_info(context_factory(user=auth_user)) == {
"postCount": 2,
"diskUsage": 3,
"featuredPost": None,
"featuringTime": None,
"featuringUser": None,
"serverTime": datetime(2016, 1, 1, 13, 0),
"config": expected_config_key,
}
directory.join("test2.txt").write("abc")
with fake_datetime("2016-01-03 12:59"):
assert api.info_api.get_info(context_factory(user=auth_user)) == {
"postCount": 2,
"diskUsage": 3, # still 3 - it's cached
"featuredPost": None,
"featuringTime": None,
"featuringUser": None,
"serverTime": datetime(2016, 1, 3, 12, 59),
"config": expected_config_key,
}
with fake_datetime("2016-01-03 13:01"):
assert api.info_api.get_info(context_factory(user=auth_user)) == {
"postCount": 2,
"diskUsage": 6, # cache expired
"featuredPost": None,
"featuringTime": None,
"featuringUser": None,
"serverTime": datetime(2016, 1, 3, 13, 1),
"config": expected_config_key,
}
with fake_datetime("2016-01-03 13:01"):
assert api.info_api.get_info(context_factory(user=anon_user)) == {
"postCount": 2,
"diskUsage": 6, # cache expired
"serverTime": datetime(2016, 1, 3, 13, 1),
"config": expected_config_key,
}
def test_manifest(config_injector, context_factory):
config_injector({"name": "test installation"})
ctx = context_factory()
ctx.url_prefix = "/someprefix"
expected_manifest = {
"name": "test installation",
"icons": [
{
"src": "/someprefix/img/android-chrome-192x192.png",
"type": "image/png",
"sizes": "192x192",
},
{
"src": "/someprefix/img/android-chrome-512x512.png",
"type": "image/png",
"sizes": "512x512",
},
],
"start_url": "/someprefix/",
"theme_color": "#24aadd",
"background_color": "#ffffff",
"display": "standalone",
}
assert api.info_api.generate_manifest(ctx) == expected_manifest