mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
Add unit tests to cover the extension engine.
This commit is contained in:
@@ -5,7 +5,6 @@ from django.conf.urls import include
|
||||
|
||||
|
||||
class ModoExtension(object):
|
||||
|
||||
"""
|
||||
Base extension class.
|
||||
|
||||
@@ -23,22 +22,23 @@ class ModoExtension(object):
|
||||
available_for_topredirection = False
|
||||
|
||||
def infos(self):
|
||||
return dict(
|
||||
name=self.name, label=self.label, version=self.version,
|
||||
description=self.description, url=self.url,
|
||||
always_active=self.always_active
|
||||
)
|
||||
"""Information about this extension."""
|
||||
return {
|
||||
"name": self.name, "label": self.label, "version": self.version,
|
||||
"description": self.description, "url": self.url,
|
||||
"always_active": self.always_active
|
||||
}
|
||||
|
||||
def load_initial_data(self):
|
||||
"""Declare extension data in this method."""
|
||||
pass
|
||||
|
||||
def load(self):
|
||||
"""Add extension loading tasks in this method."""
|
||||
pass
|
||||
|
||||
|
||||
class ExtensionsPool(object):
|
||||
|
||||
"""The extensions manager"""
|
||||
|
||||
def __init__(self):
|
||||
@@ -60,11 +60,8 @@ class ExtensionsPool(object):
|
||||
self.extensions[name]["instance"] = self.extensions[name]["cls"]()
|
||||
return self.extensions[name]["instance"]
|
||||
|
||||
def is_extension_installed(self, name):
|
||||
"""Check if an extension is installed ir not."""
|
||||
return name in settings.MODOBOA_APPS
|
||||
|
||||
def get_extension_infos(self, name):
|
||||
"""Return information about the specified extension."""
|
||||
instance = self.get_extension(name)
|
||||
if instance is None:
|
||||
return None
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
"""A stupid extension used for tests."""
|
||||
|
||||
from modoboa.core import extensions
|
||||
|
||||
|
||||
class StupidExtension1(extensions.ModoExtension):
|
||||
"""Stupid extension to use with tests."""
|
||||
|
||||
name = "stupid_extension_1"
|
||||
label = "Stupid extension"
|
||||
version = "1.0.0"
|
||||
description = "A stupid extension"
|
||||
|
||||
def load(self):
|
||||
pass
|
||||
|
||||
def load_initial_data(self):
|
||||
pass
|
||||
|
||||
extensions.exts_pool.register_extension(StupidExtension1)
|
||||
@@ -0,0 +1,20 @@
|
||||
"""A stupid extension used for tests."""
|
||||
|
||||
from modoboa.core import extensions
|
||||
|
||||
|
||||
class StupidExtension2(extensions.ModoExtension):
|
||||
"""Stupid extension to use with tests."""
|
||||
|
||||
name = "stupid_extension_2"
|
||||
label = "Stupid extension"
|
||||
version = "1.0.0"
|
||||
description = "A stupid extension"
|
||||
|
||||
def load(self):
|
||||
pass
|
||||
|
||||
def load_initial_data(self):
|
||||
pass
|
||||
|
||||
extensions.exts_pool.register_extension(StupidExtension2, show=False)
|
||||
@@ -0,0 +1,3 @@
|
||||
"""Custom urls."""
|
||||
|
||||
urlpatterns = []
|
||||
@@ -13,9 +13,9 @@ from modoboa.lib import parameters
|
||||
from modoboa.lib.tests import ModoTestCase
|
||||
from modoboa.lib.tests import NO_LDAP
|
||||
|
||||
from . import factories
|
||||
from . import mocks
|
||||
from . import models
|
||||
from .. import factories
|
||||
from .. import mocks
|
||||
from .. import models
|
||||
|
||||
|
||||
class AuthenticationTestCase(ModoTestCase):
|
||||
@@ -0,0 +1,63 @@
|
||||
"""Extensions management related test cases."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
from django.test import TestCase, override_settings
|
||||
|
||||
from .. import extensions
|
||||
|
||||
CUSTOM_APPS = (
|
||||
"modoboa",
|
||||
"modoboa.core",
|
||||
"modoboa.lib",
|
||||
"modoboa.admin",
|
||||
"modoboa.limits",
|
||||
"modoboa.relaydomains",
|
||||
"stupid_extension_1",
|
||||
"stupid_extension_2",
|
||||
)
|
||||
|
||||
sys.path.append(os.path.dirname(__file__))
|
||||
|
||||
|
||||
class StupidExtension2(extensions.ModoExtension):
|
||||
"""Stupid extension to use with tests."""
|
||||
|
||||
name = "stupid_extension_2"
|
||||
label = "Stupid extension"
|
||||
version = "1.0.0"
|
||||
description = "A stupid extension"
|
||||
|
||||
def load(self):
|
||||
pass
|
||||
|
||||
def load_initial_data(self):
|
||||
pass
|
||||
|
||||
|
||||
@override_settings(MODOBOA_APPS=CUSTOM_APPS)
|
||||
class ExtensionTestCase(TestCase):
|
||||
"""Extensions related tests."""
|
||||
|
||||
def setUp(self):
|
||||
"""Initiate test context."""
|
||||
self.pool = extensions.exts_pool
|
||||
self.pool.load_all()
|
||||
|
||||
def test_register(self):
|
||||
"""Test if registering works."""
|
||||
self.assertIn("stupid_extension_1", self.pool.extensions)
|
||||
|
||||
def test_get_extension(self):
|
||||
"""Check getter method."""
|
||||
self.assertIsNone(self.pool.get_extension("toto"))
|
||||
instance = self.pool.get_extension("stupid_extension_1")
|
||||
self.assertEqual(instance.__class__.__name__, "StupidExtension1")
|
||||
|
||||
def test_list_all(self):
|
||||
"""Check list_all method."""
|
||||
result = self.pool.list_all()
|
||||
self.assertEqual(len(result), 1)
|
||||
ext = result[0]
|
||||
self.assertEqual(ext["id"], "stupid_extension_1")
|
||||
Reference in New Issue
Block a user