Files
modoboa/modoboa/lib/tests.py
T
2015-11-15 16:01:49 +01:00

117 lines
3.6 KiB
Python

# coding: utf-8
"""Testing utilities."""
import json
from django import forms
from django.core import management
from django.test import TestCase
from django.test.client import Client
from modoboa.lib import parameters
class ModoTestCase(TestCase):
"""All test cases must inherit from this one."""
@classmethod
def setUpTestData(cls):
"""Create a default user."""
management.call_command("load_initial_data")
def setUp(self, username="admin", password="password"):
self.clt = Client()
self.assertEqual(
self.clt.login(username=username, password=password), True)
def ajax_request(self, method, url, params=None, status=200):
if params is None:
params = {}
response = getattr(self.clt, method)(
url, params, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, status)
return json.loads(response.content)
def ajax_post(self, *args, **kwargs):
return self.ajax_request('post', *args, **kwargs)
def ajax_put(self, *args, **kwargs):
return self.ajax_request('put', *args, **kwargs)
def ajax_delete(self, *args, **kwargs):
return self.ajax_request('delete', *args, **kwargs)
def ajax_get(self, *args, **kwargs):
return self.ajax_request('get', *args, **kwargs)
class TestParams(parameters.AdminParametersForm):
app = "test"
param1 = forms.CharField(label="Test", initial="toto")
param2 = forms.IntegerField(label="Int", initial=42)
def update_param2(self, value):
raise RuntimeError("new value %d" % value)
class TestUserParams(parameters.UserParametersForm):
app = "test"
param1 = forms.CharField(label="Test", initial="titi")
param2 = forms.IntegerField(label="Int", initial=42)
def update_param2(self, value):
raise RuntimeError("new value %d" % value)
class ParameterTestCase(TestCase):
"""Simple test cases for ``modoboa.lib.parameters`` module.
"""
@classmethod
def setUpTestData(cls):
super(ParameterTestCase, cls).setUpTestData()
from modoboa.core.models import User
parameters.register(TestParams, "Test")
parameters.register(TestUserParams, "TestUser")
cls.user = User.objects.create(username="tester")
def test_register_form(self):
self.assertIn("test", parameters._params['A'])
def test_unregister(self):
parameters.unregister("test")
self.assertNotIn("test", parameters._params['A'])
def test_get_parameter_form(self):
self.assertIs(
parameters.get_parameter_form('A', 'PARAM1', 'test'),
TestParams
)
def test_save_admin(self):
parameters.save_admin("PARAM1", "45", app="test")
self.assertEqual(parameters.get_admin("PARAM1", app="test"), "45")
def test_update_param(self):
with self.assertRaisesRegexp(RuntimeError, "new value 35"):
parameters.save_admin("PARAM2", 35, app="test")
def test_get_admin(self):
self.assertEqual(parameters.get_admin("PARAM1", "test"), "toto")
with self.assertRaises(parameters.NotDefined):
parameters.get_admin("TOTO", "test")
def test_get_user(self):
self.assertEqual(
parameters.get_user(self.user, "PARAM1", "test"), "titi")
with self.assertRaises(parameters.NotDefined):
parameters.get_user(self.user, "TOTO", "test")
def test_save_user(self):
parameters.save_user(self.user, "PARAM1", "pouet", "test")
self.assertEqual(
parameters.get_user(self.user, "PARAM1", "test"), "pouet")