Format code with black. Add makefile to run fmt/tests
This commit is contained in:
parent
d00bce9288
commit
c2c7fa311a
299 changed files with 19037 additions and 11611 deletions
|
|
@ -20,12 +20,15 @@ class TestAccountSessionHandler(TestCase):
|
|||
|
||||
def setUp(self):
|
||||
self.account = create.create_account(
|
||||
f"TestAccount{randint(0, 999999)}", email="test@test.com",
|
||||
password="testpassword", typeclass=DefaultAccount)
|
||||
f"TestAccount{randint(0, 999999)}",
|
||||
email="test@test.com",
|
||||
password="testpassword",
|
||||
typeclass=DefaultAccount,
|
||||
)
|
||||
self.handler = AccountSessionHandler(self.account)
|
||||
|
||||
def tearDown(self):
|
||||
if hasattr(self, 'account'):
|
||||
if hasattr(self, "account"):
|
||||
self.account.delete()
|
||||
|
||||
def test_get(self):
|
||||
|
|
@ -67,22 +70,24 @@ class TestAccountSessionHandler(TestCase):
|
|||
class TestDefaultGuest(EvenniaTest):
|
||||
"Check DefaultGuest class"
|
||||
|
||||
ip = '212.216.134.22'
|
||||
|
||||
ip = "212.216.134.22"
|
||||
|
||||
@override_settings(GUEST_ENABLED=False)
|
||||
def test_create_not_enabled(self):
|
||||
# Guest account should not be permitted
|
||||
account, errors = DefaultGuest.authenticate(ip=self.ip)
|
||||
self.assertFalse(account, 'Guest account was created despite being disabled.')
|
||||
self.assertFalse(account, "Guest account was created despite being disabled.")
|
||||
|
||||
def test_authenticate(self):
|
||||
# Create a guest account
|
||||
account, errors = DefaultGuest.authenticate(ip=self.ip)
|
||||
self.assertTrue(account, 'Guest account should have been created.')
|
||||
self.assertTrue(account, "Guest account should have been created.")
|
||||
|
||||
# Create a second guest account
|
||||
account, errors = DefaultGuest.authenticate(ip=self.ip)
|
||||
self.assertFalse(account, 'Two guest accounts were created with a single entry on the guest list!')
|
||||
self.assertFalse(
|
||||
account, "Two guest accounts were created with a single entry on the guest list!"
|
||||
)
|
||||
|
||||
@patch("evennia.accounts.accounts.ChannelDB.objects.get_channel")
|
||||
def test_create(self, get_channel):
|
||||
|
|
@ -112,42 +117,52 @@ class TestDefaultGuest(EvenniaTest):
|
|||
|
||||
|
||||
class TestDefaultAccountAuth(EvenniaTest):
|
||||
|
||||
def setUp(self):
|
||||
super(TestDefaultAccountAuth, self).setUp()
|
||||
|
||||
self.password = "testpassword"
|
||||
self.account.delete()
|
||||
self.account = create.create_account(f"TestAccount{randint(100000, 999999)}", email="test@test.com", password=self.password, typeclass=DefaultAccount)
|
||||
self.account = create.create_account(
|
||||
f"TestAccount{randint(100000, 999999)}",
|
||||
email="test@test.com",
|
||||
password=self.password,
|
||||
typeclass=DefaultAccount,
|
||||
)
|
||||
|
||||
def test_authentication(self):
|
||||
"Confirm Account authentication method is authenticating/denying users."
|
||||
# Valid credentials
|
||||
obj, errors = DefaultAccount.authenticate(self.account.name, self.password)
|
||||
self.assertTrue(obj, 'Account did not authenticate given valid credentials.')
|
||||
self.assertTrue(obj, "Account did not authenticate given valid credentials.")
|
||||
|
||||
# Invalid credentials
|
||||
obj, errors = DefaultAccount.authenticate(self.account.name, 'xyzzy')
|
||||
self.assertFalse(obj, 'Account authenticated using invalid credentials.')
|
||||
obj, errors = DefaultAccount.authenticate(self.account.name, "xyzzy")
|
||||
self.assertFalse(obj, "Account authenticated using invalid credentials.")
|
||||
|
||||
def test_create(self):
|
||||
"Confirm Account creation is working as expected."
|
||||
# Create a normal account
|
||||
account, errors = DefaultAccount.create(username='ziggy', password='stardust11')
|
||||
self.assertTrue(account, 'New account should have been created.')
|
||||
account, errors = DefaultAccount.create(username="ziggy", password="stardust11")
|
||||
self.assertTrue(account, "New account should have been created.")
|
||||
|
||||
# Try creating a duplicate account
|
||||
account2, errors = DefaultAccount.create(username='Ziggy', password='starman11')
|
||||
self.assertFalse(account2, 'Duplicate account name should not have been allowed.')
|
||||
account2, errors = DefaultAccount.create(username="Ziggy", password="starman11")
|
||||
self.assertFalse(account2, "Duplicate account name should not have been allowed.")
|
||||
account.delete()
|
||||
|
||||
def test_throttle(self):
|
||||
"Confirm throttle activates on too many failures."
|
||||
for x in range(20):
|
||||
obj, errors = DefaultAccount.authenticate(self.account.name, 'xyzzy', ip='12.24.36.48')
|
||||
self.assertFalse(obj, 'Authentication was provided a bogus password; this should NOT have returned an account!')
|
||||
obj, errors = DefaultAccount.authenticate(self.account.name, "xyzzy", ip="12.24.36.48")
|
||||
self.assertFalse(
|
||||
obj,
|
||||
"Authentication was provided a bogus password; this should NOT have returned an account!",
|
||||
)
|
||||
|
||||
self.assertTrue('too many login failures' in errors[-1].lower(), 'Failed logins should have been throttled.')
|
||||
self.assertTrue(
|
||||
"too many login failures" in errors[-1].lower(),
|
||||
"Failed logins should have been throttled.",
|
||||
)
|
||||
|
||||
def test_username_validation(self):
|
||||
"Check username validators deny relevant usernames"
|
||||
|
|
@ -156,7 +171,7 @@ class TestDefaultAccountAuth(EvenniaTest):
|
|||
if not uses_database("mysql"):
|
||||
# TODO As of Mar 2019, mysql does not pass this test due to collation problems
|
||||
# that has not been possible to resolve
|
||||
result, error = DefaultAccount.validate_username('¯\_(ツ)_/¯')
|
||||
result, error = DefaultAccount.validate_username("¯\_(ツ)_/¯")
|
||||
self.assertFalse(result, "Validator allowed kanji in username.")
|
||||
|
||||
# Should not allow duplicate username
|
||||
|
|
@ -164,35 +179,44 @@ class TestDefaultAccountAuth(EvenniaTest):
|
|||
self.assertFalse(result, "Duplicate username should not have passed validation.")
|
||||
|
||||
# Should not allow username too short
|
||||
result, error = DefaultAccount.validate_username('xx')
|
||||
result, error = DefaultAccount.validate_username("xx")
|
||||
self.assertFalse(result, "2-character username passed validation.")
|
||||
|
||||
def test_password_validation(self):
|
||||
"Check password validators deny bad passwords"
|
||||
|
||||
account = create.create_account(f"TestAccount{randint(100000, 999999)}",
|
||||
email="test@test.com", password="testpassword", typeclass=DefaultAccount)
|
||||
for bad in ('', '123', 'password', 'TestAccount', '#', 'xyzzy'):
|
||||
account = create.create_account(
|
||||
f"TestAccount{randint(100000, 999999)}",
|
||||
email="test@test.com",
|
||||
password="testpassword",
|
||||
typeclass=DefaultAccount,
|
||||
)
|
||||
for bad in ("", "123", "password", "TestAccount", "#", "xyzzy"):
|
||||
self.assertFalse(account.validate_password(bad, account=self.account)[0])
|
||||
|
||||
"Check validators allow sufficiently complex passwords"
|
||||
for better in ('Mxyzptlk', "j0hn, i'M 0n1y d4nc1nG"):
|
||||
for better in ("Mxyzptlk", "j0hn, i'M 0n1y d4nc1nG"):
|
||||
self.assertTrue(account.validate_password(better, account=self.account)[0])
|
||||
account.delete()
|
||||
|
||||
def test_password_change(self):
|
||||
"Check password setting and validation is working as expected"
|
||||
account = create.create_account(f"TestAccount{randint(100000, 999999)}",
|
||||
email="test@test.com", password="testpassword", typeclass=DefaultAccount)
|
||||
account = create.create_account(
|
||||
f"TestAccount{randint(100000, 999999)}",
|
||||
email="test@test.com",
|
||||
password="testpassword",
|
||||
typeclass=DefaultAccount,
|
||||
)
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
# Try setting some bad passwords
|
||||
for bad in ('', '#', 'TestAccount', 'password'):
|
||||
for bad in ("", "#", "TestAccount", "password"):
|
||||
valid, error = account.validate_password(bad, account)
|
||||
self.assertFalse(valid)
|
||||
|
||||
# Try setting a better password (test for False; returns None on success)
|
||||
self.assertFalse(account.set_password('Mxyzptlk'))
|
||||
self.assertFalse(account.set_password("Mxyzptlk"))
|
||||
account.delete()
|
||||
|
||||
|
||||
|
|
@ -228,8 +252,11 @@ class TestDefaultAccount(TestCase):
|
|||
import evennia.server.sessionhandler
|
||||
|
||||
account = create.create_account(
|
||||
f"TestAccount{randint(0, 999999)}", email="test@test.com",
|
||||
password="testpassword", typeclass=DefaultAccount)
|
||||
f"TestAccount{randint(0, 999999)}",
|
||||
email="test@test.com",
|
||||
password="testpassword",
|
||||
typeclass=DefaultAccount,
|
||||
)
|
||||
self.s1.uid = account.uid
|
||||
evennia.server.sessionhandler.SESSIONS[self.s1.uid] = self.s1
|
||||
|
||||
|
|
@ -239,7 +266,9 @@ class TestDefaultAccount(TestCase):
|
|||
obj = Mock()
|
||||
self.s1.puppet = obj
|
||||
account.puppet_object(self.s1, obj)
|
||||
self.s1.data_out.assert_called_with(options=None, text="You are already puppeting this object.")
|
||||
self.s1.data_out.assert_called_with(
|
||||
options=None, text="You are already puppeting this object."
|
||||
)
|
||||
self.assertIsNone(obj.at_post_puppet.call_args)
|
||||
|
||||
def test_puppet_object_no_permission(self):
|
||||
|
|
@ -247,7 +276,12 @@ class TestDefaultAccount(TestCase):
|
|||
|
||||
import evennia.server.sessionhandler
|
||||
|
||||
account = create.create_account(f"TestAccount{randint(0, 999999)}", email="test@test.com", password="testpassword", typeclass=DefaultAccount)
|
||||
account = create.create_account(
|
||||
f"TestAccount{randint(0, 999999)}",
|
||||
email="test@test.com",
|
||||
password="testpassword",
|
||||
typeclass=DefaultAccount,
|
||||
)
|
||||
self.s1.uid = account.uid
|
||||
evennia.server.sessionhandler.SESSIONS[self.s1.uid] = self.s1
|
||||
|
||||
|
|
@ -257,7 +291,9 @@ class TestDefaultAccount(TestCase):
|
|||
|
||||
account.puppet_object(self.s1, obj)
|
||||
|
||||
self.assertTrue(self.s1.data_out.call_args[1]['text'].startswith("You don't have permission to puppet"))
|
||||
self.assertTrue(
|
||||
self.s1.data_out.call_args[1]["text"].startswith("You don't have permission to puppet")
|
||||
)
|
||||
self.assertIsNone(obj.at_post_puppet.call_args)
|
||||
|
||||
@override_settings(MULTISESSION_MODE=0)
|
||||
|
|
@ -266,7 +302,12 @@ class TestDefaultAccount(TestCase):
|
|||
|
||||
import evennia.server.sessionhandler
|
||||
|
||||
account = create.create_account(f"TestAccount{randint(0, 999999)}", email="test@test.com", password="testpassword", typeclass=DefaultAccount)
|
||||
account = create.create_account(
|
||||
f"TestAccount{randint(0, 999999)}",
|
||||
email="test@test.com",
|
||||
password="testpassword",
|
||||
typeclass=DefaultAccount,
|
||||
)
|
||||
self.s1.uid = account.uid
|
||||
evennia.server.sessionhandler.SESSIONS[self.s1.uid] = self.s1
|
||||
|
||||
|
|
@ -281,7 +322,9 @@ class TestDefaultAccount(TestCase):
|
|||
|
||||
account.puppet_object(self.s1, obj)
|
||||
# works because django.conf.settings.MULTISESSION_MODE is not in (1, 3)
|
||||
self.assertTrue(self.s1.data_out.call_args[1]['text'].endswith("from another of your sessions.|n"))
|
||||
self.assertTrue(
|
||||
self.s1.data_out.call_args[1]["text"].endswith("from another of your sessions.|n")
|
||||
)
|
||||
self.assertTrue(obj.at_post_puppet.call_args[1] == {})
|
||||
|
||||
def test_puppet_object_already_puppeted(self):
|
||||
|
|
@ -289,7 +332,12 @@ class TestDefaultAccount(TestCase):
|
|||
|
||||
import evennia.server.sessionhandler
|
||||
|
||||
account = create.create_account(f"TestAccount{randint(0, 999999)}", email="test@test.com", password="testpassword", typeclass=DefaultAccount)
|
||||
account = create.create_account(
|
||||
f"TestAccount{randint(0, 999999)}",
|
||||
email="test@test.com",
|
||||
password="testpassword",
|
||||
typeclass=DefaultAccount,
|
||||
)
|
||||
self.account = account
|
||||
self.s1.uid = account.uid
|
||||
evennia.server.sessionhandler.SESSIONS[self.s1.uid] = self.s1
|
||||
|
|
@ -304,28 +352,33 @@ class TestDefaultAccount(TestCase):
|
|||
obj.at_post_puppet = Mock()
|
||||
|
||||
account.puppet_object(self.s1, obj)
|
||||
self.assertTrue(self.s1.data_out.call_args[1]['text'].endswith("is already puppeted by another Account."))
|
||||
self.assertTrue(
|
||||
self.s1.data_out.call_args[1]["text"].endswith(
|
||||
"is already puppeted by another Account."
|
||||
)
|
||||
)
|
||||
self.assertIsNone(obj.at_post_puppet.call_args)
|
||||
|
||||
|
||||
class TestAccountPuppetDeletion(EvenniaTest):
|
||||
|
||||
@override_settings(MULTISESSION_MODE=2)
|
||||
def test_puppet_deletion(self):
|
||||
# Check for existing chars
|
||||
self.assertFalse(self.account.db._playable_characters,
|
||||
'Account should not have any chars by default.')
|
||||
self.assertFalse(
|
||||
self.account.db._playable_characters, "Account should not have any chars by default."
|
||||
)
|
||||
|
||||
# Add char1 to account's playable characters
|
||||
self.account.db._playable_characters.append(self.char1)
|
||||
self.assertTrue(self.account.db._playable_characters,
|
||||
'Char was not added to account.')
|
||||
self.assertTrue(self.account.db._playable_characters, "Char was not added to account.")
|
||||
|
||||
# See what happens when we delete char1.
|
||||
self.char1.delete()
|
||||
# Playable char list should be empty.
|
||||
self.assertFalse(self.account.db._playable_characters,
|
||||
f'Playable character list is not empty! {self.account.db._playable_characters}')
|
||||
self.assertFalse(
|
||||
self.account.db._playable_characters,
|
||||
f"Playable character list is not empty! {self.account.db._playable_characters}",
|
||||
)
|
||||
|
||||
|
||||
class TestDefaultAccountEv(EvenniaTest):
|
||||
|
|
@ -333,6 +386,7 @@ class TestDefaultAccountEv(EvenniaTest):
|
|||
Testing using the EvenniaTest parent
|
||||
|
||||
"""
|
||||
|
||||
def test_characters_property(self):
|
||||
"test existence of None in _playable_characters Attr"
|
||||
self.account.db._playable_characters = [self.char1, None]
|
||||
|
|
@ -353,7 +407,9 @@ class TestDefaultAccountEv(EvenniaTest):
|
|||
self.assertEqual(idle, 10)
|
||||
|
||||
# test no sessions
|
||||
with patch("evennia.accounts.accounts._SESSIONS.sessions_from_account", return_value=[]) as mock_sessh:
|
||||
with patch(
|
||||
"evennia.accounts.accounts._SESSIONS.sessions_from_account", return_value=[]
|
||||
) as mock_sessh:
|
||||
idle = self.account.idle_time
|
||||
self.assertEqual(idle, None)
|
||||
|
||||
|
|
@ -364,18 +420,21 @@ class TestDefaultAccountEv(EvenniaTest):
|
|||
self.assertEqual(conn, 10)
|
||||
|
||||
# test no sessions
|
||||
with patch("evennia.accounts.accounts._SESSIONS.sessions_from_account", return_value=[]) as mock_sessh:
|
||||
with patch(
|
||||
"evennia.accounts.accounts._SESSIONS.sessions_from_account", return_value=[]
|
||||
) as mock_sessh:
|
||||
idle = self.account.connection_time
|
||||
self.assertEqual(idle, None)
|
||||
|
||||
def test_create_account(self):
|
||||
acct = create.account(
|
||||
"TestAccount3", "test@test.com", "testpassword123",
|
||||
"TestAccount3",
|
||||
"test@test.com",
|
||||
"testpassword123",
|
||||
locks="test:all()",
|
||||
tags=[("tag1", "category1"), ("tag2", "category2", "data1"), ("tag3", None)],
|
||||
attributes=[("key1", "value1", "category1",
|
||||
"edit:false()", True),
|
||||
("key2", "value2")])
|
||||
attributes=[("key1", "value1", "category1", "edit:false()", True), ("key2", "value2")],
|
||||
)
|
||||
acct.save()
|
||||
self.assertTrue(acct.pk)
|
||||
|
||||
|
|
@ -389,7 +448,7 @@ class TestDefaultAccountEv(EvenniaTest):
|
|||
ret = self.account.at_look(target=self.obj1, session=self.session)
|
||||
self.assertTrue("Obj" in ret)
|
||||
ret = self.account.at_look(target="Invalid", session=self.session)
|
||||
self.assertEqual(ret, 'Invalid has no in-game appearance.')
|
||||
self.assertEqual(ret, "Invalid has no in-game appearance.")
|
||||
|
||||
def test_msg(self):
|
||||
self.account.msg
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue