mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
Fixes #865 & adds unit tests
This commit is contained in:
parent
72305de2d8
commit
9d90af4a3d
@ -36,7 +36,7 @@ def refresh_api(api):
|
||||
EveManager.create_character_obj(c, api.user, api.api_id)
|
||||
current_chars = EveCharacter.objects.filter(api_id=api.api_id)
|
||||
for c in current_chars:
|
||||
if not int(c.character_id) in [c.id for c in characters]:
|
||||
if not int(c.character_id) in [d.id for d in characters]:
|
||||
logger.info("Character %s no longer found on API ID %s" % (c, api.api_id))
|
||||
c.delete()
|
||||
except evelink.api.APIError as e:
|
||||
@ -60,7 +60,7 @@ def refresh_api(api):
|
||||
api.api_id, e.required_mask, e.api_mask), level="danger")
|
||||
still_valid = False
|
||||
except EveApiManager.ApiServerUnreachableError as e:
|
||||
logger.warn("Error updating API %s\n%s" % (api.api_id, str(e)))
|
||||
logger.warning("Error updating API %s\n%s" % (api.api_id, str(e)))
|
||||
finally:
|
||||
if not still_valid:
|
||||
EveManager.delete_characters_by_api_id(api.api_id, api.user.id)
|
||||
|
@ -1 +0,0 @@
|
||||
# Create your tests here.
|
0
eveonline/tests/__init__.py
Normal file
0
eveonline/tests/__init__.py
Normal file
125
eveonline/tests/test_tasks.py
Normal file
125
eveonline/tests/test_tasks.py
Normal file
@ -0,0 +1,125 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
try:
|
||||
# Py3
|
||||
from unittest import mock
|
||||
except ImportError:
|
||||
# Py2
|
||||
import mock
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from alliance_auth.tests.auth_utils import AuthUtils
|
||||
from eveonline.providers import Character, Alliance, Corporation
|
||||
from eveonline.managers import EveManager
|
||||
from eveonline import tasks
|
||||
from eveonline.models import EveApiKeyPair, EveCharacter
|
||||
from services.managers.eve_api_manager import EveApiManager
|
||||
|
||||
MODULE_PATH = 'eveonline.tasks'
|
||||
|
||||
|
||||
class EveOnlineTasksTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.user = AuthUtils.create_member('joebloggs')
|
||||
self.api_key = EveApiKeyPair.objects.create(api_id='0118999',
|
||||
api_key='hunter2',
|
||||
user=self.user,
|
||||
sso_verified=True)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.EveApiManager.validate_api')
|
||||
@mock.patch(MODULE_PATH + '.EveManager.get_characters_from_api')
|
||||
def test_refresh_api_characters(self, get_characters_from_api, validate_api):
|
||||
# Arrange
|
||||
provider = mock.MagicMock()
|
||||
|
||||
provider.get_alliance.return_value = Alliance(provider, 22222, 'Test Alliance', 'TEST', [11111], 11111)
|
||||
provider.get_corp.return_value = Corporation(provider, 11111, 'Test Corp', 'HERP', 12345, [12345, 23456], 22222)
|
||||
|
||||
mock_api_data = [
|
||||
Character(provider, 12345, 'testchar1', 11111, 22222),
|
||||
Character(provider, 23456, 'Will beAdded', 11111, 22222)
|
||||
]
|
||||
|
||||
get_characters_from_api.return_value = mock_api_data
|
||||
validate_api.return_value = True
|
||||
|
||||
EveManager.create_character_obj(mock_api_data[0], self.user, '0118999')
|
||||
EveManager.create_character_obj(Character(provider, 34567, 'deletedcharacter', 11111, 22222),
|
||||
self.user, '0118999')
|
||||
|
||||
# Act
|
||||
tasks.refresh_api(self.api_key)
|
||||
|
||||
# Assert
|
||||
self.assertTrue(EveCharacter.objects.filter(character_id='12345').exists())
|
||||
self.assertTrue(EveCharacter.objects.filter(character_id='23456').exists())
|
||||
self.assertFalse(EveCharacter.objects.filter(character_id='34567').exists())
|
||||
|
||||
args, kwargs = validate_api.call_args
|
||||
self.assertEqual(args[0], self.api_key.api_id)
|
||||
self.assertEqual(args[1], self.api_key.api_key)
|
||||
self.assertEqual(args[2], self.api_key.user)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.EveApiManager.validate_api')
|
||||
@mock.patch(MODULE_PATH + '.EveManager')
|
||||
def test_refresh_api_evelink_exception(self, evemanager, validate_api):
|
||||
import evelink
|
||||
|
||||
validate_api.side_effect = evelink.api.APIError()
|
||||
|
||||
tasks.refresh_api(self.api_key)
|
||||
|
||||
self.assertTrue(validate_api.called)
|
||||
self.assertFalse(evemanager.get_characters_from_api.called)
|
||||
self.assertFalse(evemanager.delete_characters_by_api_id.called)
|
||||
self.assertFalse(evemanager.delete_api_key_pair.called)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.EveApiManager.validate_api')
|
||||
@mock.patch(MODULE_PATH + '.EveManager')
|
||||
def test_refresh_api_invalid(self, evemanager, validate_api):
|
||||
validate_api.side_effect = EveApiManager.ApiInvalidError(self.api_key.api_id)
|
||||
|
||||
tasks.refresh_api(self.api_key)
|
||||
|
||||
self.assertTrue(validate_api.called)
|
||||
self.assertFalse(evemanager.get_characters_from_api.called)
|
||||
self.assertTrue(evemanager.delete_characters_by_api_id.called)
|
||||
self.assertTrue(evemanager.delete_api_key_pair.called)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.EveApiManager.validate_api')
|
||||
@mock.patch(MODULE_PATH + '.EveManager')
|
||||
def test_refresh_api_accountvalidationerror(self, evemanager, validate_api):
|
||||
validate_api.side_effect = EveApiManager.ApiAccountValidationError(self.api_key.api_id)
|
||||
|
||||
tasks.refresh_api(self.api_key)
|
||||
|
||||
self.assertTrue(validate_api.called)
|
||||
self.assertFalse(evemanager.get_characters_from_api.called)
|
||||
self.assertTrue(evemanager.delete_characters_by_api_id.called)
|
||||
self.assertTrue(evemanager.delete_api_key_pair.called)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.EveApiManager.validate_api')
|
||||
@mock.patch(MODULE_PATH + '.EveManager')
|
||||
def test_refresh_api_maskvalidationerror(self, evemanager, validate_api):
|
||||
validate_api.side_effect = EveApiManager.ApiMaskValidationError('12345', '1111', self.api_key.api_id)
|
||||
|
||||
tasks.refresh_api(self.api_key)
|
||||
|
||||
self.assertTrue(validate_api.called)
|
||||
self.assertFalse(evemanager.get_characters_from_api.called)
|
||||
self.assertTrue(evemanager.delete_characters_by_api_id.called)
|
||||
self.assertTrue(evemanager.delete_api_key_pair.called)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.EveApiManager.validate_api')
|
||||
@mock.patch(MODULE_PATH + '.EveManager')
|
||||
def test_refresh_api_invalid(self, evemanager, validate_api):
|
||||
validate_api.side_effect = EveApiManager.ApiServerUnreachableError(self.api_key.api_id)
|
||||
|
||||
tasks.refresh_api(self.api_key)
|
||||
|
||||
self.assertTrue(validate_api.called)
|
||||
self.assertFalse(evemanager.get_characters_from_api.called)
|
||||
# Lets hope we never see that again
|
||||
self.assertFalse(evemanager.delete_characters_by_api_id.called)
|
||||
self.assertFalse(evemanager.delete_api_key_pair.called)
|
Loading…
x
Reference in New Issue
Block a user