2017-11-27 01:37:02 +00:00
|
|
|
import pytest
|
|
|
|
|
2018-05-06 00:26:19 +00:00
|
|
|
from mastodon.Mastodon import MastodonVersionError
|
2022-11-23 23:37:47 +00:00
|
|
|
from mastodon.Mastodon import parse_version_string
|
2022-11-17 21:25:41 +00:00
|
|
|
import datetime
|
2022-11-17 22:29:26 +00:00
|
|
|
import os
|
|
|
|
import pickle
|
2018-05-06 00:26:19 +00:00
|
|
|
|
2017-11-27 01:37:02 +00:00
|
|
|
@pytest.mark.vcr()
|
2017-11-27 13:35:02 +00:00
|
|
|
def test_instance(api):
|
|
|
|
instance = api.instance()
|
2017-11-27 01:37:02 +00:00
|
|
|
|
|
|
|
assert isinstance(instance, dict) # hehe, instance is instance
|
|
|
|
|
|
|
|
expected_keys = set(('description', 'email', 'title', 'uri', 'version', 'urls'))
|
|
|
|
assert set(instance.keys()) >= expected_keys
|
2018-05-06 00:26:19 +00:00
|
|
|
|
|
|
|
@pytest.mark.vcr()
|
|
|
|
def test_instance_activity(api):
|
|
|
|
activity = api.instance_activity()
|
|
|
|
|
|
|
|
assert len(activity) > 0
|
|
|
|
assert "statuses" in activity[0]
|
|
|
|
assert "logins" in activity[0]
|
|
|
|
assert "week" in activity[0]
|
|
|
|
|
|
|
|
@pytest.mark.vcr()
|
|
|
|
def test_instance_peers(api):
|
|
|
|
assert len(api.instance_peers()) == 0
|
|
|
|
|
|
|
|
@pytest.mark.vcr()
|
|
|
|
def test_low_version(api_low_version):
|
|
|
|
with pytest.raises(MastodonVersionError):
|
|
|
|
instance = api_low_version.instance()
|
2018-05-06 13:52:55 +00:00
|
|
|
|
|
|
|
@pytest.mark.vcr()
|
|
|
|
def test_emoji(api):
|
2018-06-04 18:55:44 +00:00
|
|
|
assert len(api.custom_emojis()) == 0
|
2019-10-12 18:25:55 +00:00
|
|
|
|
|
|
|
@pytest.mark.vcr()
|
|
|
|
def test_health(api):
|
2022-11-20 19:22:48 +00:00
|
|
|
assert api.instance_health() is True
|
2022-11-17 21:25:41 +00:00
|
|
|
|
|
|
|
@pytest.mark.vcr()
|
|
|
|
def test_server_time(api):
|
2022-11-18 23:59:17 +00:00
|
|
|
# present date...
|
2022-11-17 22:29:26 +00:00
|
|
|
present_time = api.get_approx_server_time()
|
|
|
|
# hahahahaha
|
|
|
|
|
|
|
|
if os.path.exists("tests/cassettes/test_server_time_datetimeobjects.pkl"):
|
|
|
|
present_time_real = datetime.datetime.fromtimestamp(pickle.load(open("tests/cassettes/test_server_time_datetimeobjects.pkl", 'rb')))
|
|
|
|
else:
|
|
|
|
present_time_real = datetime.datetime.now()
|
|
|
|
pickle.dump(present_time_real.timestamp(), open("tests/cassettes/test_server_time_datetimeobjects.pkl", 'wb'))
|
|
|
|
|
2022-11-17 21:25:41 +00:00
|
|
|
assert isinstance(api.get_approx_server_time(), datetime.datetime)
|
2022-11-17 22:29:26 +00:00
|
|
|
assert abs((api.get_approx_server_time() - present_time_real).total_seconds()) < 5
|
2022-11-17 21:25:41 +00:00
|
|
|
|
2019-10-12 18:51:29 +00:00
|
|
|
@pytest.mark.vcr()
|
|
|
|
def test_nodeinfo(api):
|
|
|
|
nodeinfo = api.instance_nodeinfo()
|
|
|
|
assert nodeinfo
|
|
|
|
assert nodeinfo.version == '2.0'
|
|
|
|
|
2019-10-12 20:05:35 +00:00
|
|
|
@pytest.mark.vcr()
|
|
|
|
def test_directory(api):
|
|
|
|
directory = api.directory()
|
|
|
|
assert directory
|
|
|
|
assert isinstance(directory, list)
|
|
|
|
assert len(directory) > 0
|
|
|
|
|
2022-11-18 22:53:25 +00:00
|
|
|
@pytest.mark.vcr()
|
|
|
|
def test_instance_rules(api):
|
|
|
|
assert isinstance(api.instance_rules(), list)
|
2022-11-23 23:37:47 +00:00
|
|
|
|
|
|
|
def test_version_parsing(api):
|
2022-11-30 17:28:42 +00:00
|
|
|
assert parse_version_string(api._Mastodon__normalize_version_string("4.0.2")) == (4, 0, 2)
|
|
|
|
assert parse_version_string(api._Mastodon__normalize_version_string("2.1.0rc3")) == (2, 1, 0)
|
|
|
|
assert parse_version_string(api._Mastodon__normalize_version_string("1.0.7+3.5.5")) == (3, 5, 5)
|
|
|
|
assert parse_version_string(api._Mastodon__normalize_version_string("1.0.7+3.5.5rc2")) == (3, 5, 5)
|
|
|
|
assert parse_version_string(api._Mastodon__normalize_version_string("3.5.1+chitter")) == (3, 5, 1)
|
|
|
|
assert parse_version_string(api._Mastodon__normalize_version_string("3.5.1+chitter-6.6.6")) == (3, 5, 1)
|
|
|
|
assert parse_version_string(api._Mastodon__normalize_version_string("3.5.1rc4+chitter-6.6.6")) == (3, 5, 1)
|
|
|
|
assert parse_version_string(api._Mastodon__normalize_version_string("3.5.1+chitter6.6.6")) == (3, 5, 1)
|
|
|
|
assert parse_version_string(api._Mastodon__normalize_version_string("3.5.0 (compatible; Pleroma 1.2.3)")) == (3, 5, 0)
|
|
|
|
assert parse_version_string(api._Mastodon__normalize_version_string("3.2.1rc3 (compatible; Akkoma 3.2.4+shinychariot)")) == (3, 2, 1)
|