173 lines
6 KiB
Python
173 lines
6 KiB
Python
|
"""
|
||
|
This module provides tests for :py:mod:`userdbs.admin`.
|
||
|
|
||
|
"""
|
||
|
from __future__ import absolute_import
|
||
|
|
||
|
from django.contrib.admin import AdminSite
|
||
|
from django.test import TestCase
|
||
|
|
||
|
from userdbs.admin import (DatabaseUserAdmin, DatabaseUserCreationForm,
|
||
|
UserDatabaseAdmin, UserDatabaseCreationForm)
|
||
|
from userdbs.models import DB_TYPES, DatabaseUser, UserDatabase
|
||
|
|
||
|
try:
|
||
|
from unittest.mock import MagicMock, Mock, patch
|
||
|
except ImportError:
|
||
|
from mock import MagicMock, Mock, patch
|
||
|
|
||
|
|
||
|
class DatabaseUserCreationFormTest(TestCase):
|
||
|
|
||
|
@patch('userdbs.admin.DatabaseUser.objects.create_database_user')
|
||
|
def test_save(self, create_database_user):
|
||
|
create_database_user.return_value = Mock()
|
||
|
form = DatabaseUserCreationForm()
|
||
|
mockuser = Mock(name='osuser')
|
||
|
form.cleaned_data = {
|
||
|
'osuser': mockuser,
|
||
|
'db_type': DB_TYPES.pgsql
|
||
|
}
|
||
|
retval = form.save()
|
||
|
self.assertTrue(create_database_user.called_with(
|
||
|
osuser=mockuser, db_type=DB_TYPES.pgsql, commit=True))
|
||
|
self.assertEqual(retval, create_database_user.return_value)
|
||
|
|
||
|
def test_save_m2m_returns_none(self):
|
||
|
form = DatabaseUserCreationForm()
|
||
|
self.assertIsNone(form.save_m2m())
|
||
|
|
||
|
|
||
|
class UserDatabaseCreationFormTest(TestCase):
|
||
|
|
||
|
@patch('userdbs.admin.UserDatabase.objects.create_userdatabase')
|
||
|
def test_save(self, create_userdatabase):
|
||
|
create_userdatabase.return_value = Mock()
|
||
|
form = UserDatabaseCreationForm()
|
||
|
mockuser = Mock(name='mockuser')
|
||
|
form.cleaned_data = {'db_user': mockuser}
|
||
|
retval = form.save()
|
||
|
self.assertTrue(create_userdatabase.called_with(
|
||
|
db_user=mockuser, commit=True))
|
||
|
self.assertEqual(retval, create_userdatabase.return_value)
|
||
|
|
||
|
def test_save_m2m_returns_none(self):
|
||
|
form = UserDatabaseCreationForm()
|
||
|
self.assertIsNone(form.save_m2m())
|
||
|
|
||
|
|
||
|
class DatabaseUserAdminTest(TestCase):
|
||
|
|
||
|
def setUp(self):
|
||
|
site = AdminSite()
|
||
|
self.dbuadmin = DatabaseUserAdmin(DatabaseUser, site)
|
||
|
super(DatabaseUserAdminTest, self).setUp()
|
||
|
|
||
|
def test_get_form_with_instance(self):
|
||
|
form = self.dbuadmin.get_form(
|
||
|
Mock(name='request'), obj=Mock(name='dbuser'))
|
||
|
self.assertEqual(
|
||
|
form.Meta.fields,
|
||
|
['osuser', 'name', 'db_type']
|
||
|
)
|
||
|
|
||
|
def test_get_form_without_instance(self):
|
||
|
form = self.dbuadmin.get_form(Mock(name='request'))
|
||
|
self.assertEqual(
|
||
|
form.Meta.fields,
|
||
|
['osuser', 'db_type']
|
||
|
)
|
||
|
|
||
|
def test_get_readonly_fields_with_instance(self):
|
||
|
fields = self.dbuadmin.get_readonly_fields(
|
||
|
Mock(name='request'), obj=Mock(name='dbuser'))
|
||
|
self.assertEqual(
|
||
|
fields, ['osuser', 'name', 'db_type'])
|
||
|
|
||
|
def test_get_readonly_fields_without_instance(self):
|
||
|
fields = self.dbuadmin.get_readonly_fields(
|
||
|
Mock(name='request'))
|
||
|
self.assertEqual(fields, [])
|
||
|
|
||
|
def test_save_model_change(self):
|
||
|
objmock = Mock()
|
||
|
self.dbuadmin.save_model(Mock(name='request'), objmock, Mock(), True)
|
||
|
self.assertTrue(objmock.create_in_database.not_called())
|
||
|
|
||
|
def test_save_model_no_change(self):
|
||
|
objmock = Mock()
|
||
|
self.dbuadmin.save_model(Mock(name='request'), objmock, Mock(), False)
|
||
|
self.assertTrue(objmock.create_in_database.called_with())
|
||
|
|
||
|
def test_perform_delete_selected(self):
|
||
|
usermock = Mock()
|
||
|
selected = Mock()
|
||
|
selected.all.return_value = [usermock]
|
||
|
self.dbuadmin.perform_delete_selected(Mock(name='request'), selected)
|
||
|
self.assertTrue(selected.all.called_with())
|
||
|
self.assertTrue(usermock.delete.called_with())
|
||
|
|
||
|
def test_get_actions(self):
|
||
|
requestmock = MagicMock(name='request')
|
||
|
self.assertNotIn(
|
||
|
'delete_selected',
|
||
|
self.dbuadmin.get_actions(requestmock))
|
||
|
self.assertIn(
|
||
|
'perform_delete_selected',
|
||
|
self.dbuadmin.get_actions(requestmock))
|
||
|
|
||
|
|
||
|
class UserDatabaseAdminTest(TestCase):
|
||
|
|
||
|
def setUp(self):
|
||
|
site = AdminSite()
|
||
|
self.udbadmin = UserDatabaseAdmin(UserDatabase, site)
|
||
|
super(UserDatabaseAdminTest, self).setUp()
|
||
|
|
||
|
def test_get_form_with_instance(self):
|
||
|
form = self.udbadmin.get_form(
|
||
|
Mock(name='request'), obj=Mock(name='userdb'))
|
||
|
self.assertEqual(form.Meta.fields, ['db_name', 'db_user'])
|
||
|
|
||
|
def test_get_form_without_instance(self):
|
||
|
form = self.udbadmin.get_form(Mock(name='request'))
|
||
|
self.assertEqual(form.Meta.fields, ['db_user'])
|
||
|
|
||
|
def test_get_readonly_fields_with_instance(self):
|
||
|
fields = self.udbadmin.get_readonly_fields(
|
||
|
Mock(name='request'), obj=Mock(name='userdb'))
|
||
|
self.assertEqual(
|
||
|
fields, ['db_name', 'db_user'])
|
||
|
|
||
|
def test_get_readonly_fields_without_instance(self):
|
||
|
fields = self.udbadmin.get_readonly_fields(
|
||
|
Mock(name='request'))
|
||
|
self.assertEqual(fields, [])
|
||
|
|
||
|
def test_save_model_change(self):
|
||
|
objmock = Mock()
|
||
|
self.udbadmin.save_model(Mock(name='request'), objmock, Mock(), True)
|
||
|
self.assertTrue(objmock.create_in_database.not_called())
|
||
|
|
||
|
def test_save_model_no_change(self):
|
||
|
objmock = Mock()
|
||
|
self.udbadmin.save_model(Mock(name='request'), objmock, Mock(), False)
|
||
|
self.assertTrue(objmock.create_in_database.called_with())
|
||
|
|
||
|
def test_perform_delete_selected(self):
|
||
|
userdbmock = Mock()
|
||
|
selected = Mock()
|
||
|
selected.all.return_value = [userdbmock]
|
||
|
self.udbadmin.perform_delete_selected(Mock(name='request'), selected)
|
||
|
self.assertTrue(selected.all.called_with())
|
||
|
self.assertTrue(userdbmock.delete.called_with())
|
||
|
|
||
|
def test_get_actions(self):
|
||
|
requestmock = MagicMock(name='request')
|
||
|
self.assertNotIn(
|
||
|
'delete_selected',
|
||
|
self.udbadmin.get_actions(requestmock))
|
||
|
self.assertIn(
|
||
|
'perform_delete_selected',
|
||
|
self.udbadmin.get_actions(requestmock))
|