changeset f0fba679878a in modules/ldap_authentication:default
details:
https://hg.tryton.org/modules/ldap_authentication?cmd=changeset&node=f0fba679878a
description:
Replace test setuptools command by unittest discover
issue9215
review389851002
diffstat:
setup.py | 6 +-
tests/__init__.py | 4 -
tests/test_ldap_authentication.py | 108 --------------------------------------
tests/test_module.py | 103 ++++++++++++++++++++++++++++++++++++
tox.ini | 3 +-
5 files changed, 108 insertions(+), 116 deletions(-)
diffs (263 lines):
diff -r 43b76eb45f95 -r f0fba679878a setup.py
--- a/setup.py Sun Apr 10 19:11:38 2022 +0200
+++ b/setup.py Sat Apr 16 18:30:17 2022 +0200
@@ -139,13 +139,13 @@
license='GPL-3',
python_requires='>=3.7',
install_requires=requires,
+ extras_require={
+ 'test': tests_require,
+ },
dependency_links=dependency_links,
zip_safe=False,
entry_points="""
[trytond.modules]
ldap_authentication = trytond.modules.ldap_authentication
""",
- test_suite='tests',
- test_loader='trytond.test_loader:Loader',
- tests_require=tests_require,
)
diff -r 43b76eb45f95 -r f0fba679878a tests/__init__.py
--- a/tests/__init__.py Sun Apr 10 19:11:38 2022 +0200
+++ b/tests/__init__.py Sat Apr 16 18:30:17 2022 +0200
@@ -1,6 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-
-from .test_ldap_authentication import suite
-
-__all__ = ['suite']
diff -r 43b76eb45f95 -r f0fba679878a tests/test_ldap_authentication.py
--- a/tests/test_ldap_authentication.py Sun Apr 10 19:11:38 2022 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-# This file is part of Tryton. The COPYRIGHT file at the top level of
-# this repository contains the full copyright notices and license terms.
-import unittest
-from unittest.mock import ANY, patch
-
-import ldap3
-
-import trytond.tests.test_tryton
-from trytond.config import config
-from trytond.modules.ldap_authentication.res import parse_ldap_url
-from trytond.pool import Pool
-from trytond.tests.test_tryton import ModuleTestCase, with_transaction
-
-section = 'ldap_authentication'
-
-
-class LDAPAuthenticationTestCase(ModuleTestCase):
- 'Test LDAPAuthentication module'
- module = 'ldap_authentication'
-
- def setUp(self):
- super(LDAPAuthenticationTestCase, self).setUp()
- methods = config.get('session', 'authentications', default='')
- config.set('session', 'authentications', 'ldap')
- self.addCleanup(config.set, 'session', 'authentications', methods)
- config.add_section(section)
- config.set(section, 'uri', 'ldap://localhost/dc=tryton,dc=org')
- self.addCleanup(config.remove_section, section)
-
- @with_transaction()
- def test_user_get_login(self):
- 'Test User.get_login'
- pool = Pool()
- User = pool.get('res.user')
-
- @patch.object(ldap3, 'Connection')
- @patch.object(User, 'ldap_search_user')
- def get_login(login, password, find, ldap_search_user, Connection):
- con = Connection.return_value
- con.bind.return_value = bool(find)
- if find:
- ldap_search_user.return_value = [('dn', {'uid': [find]})]
- else:
- ldap_search_user.return_value = None
- user_id = User.get_login(login, {
- 'password': password,
- })
- if find:
- Connection.assert_called_with(ANY, ANY, password)
- return user_id
-
- # Test existing user
- user, = User.search([('login', '=', 'admin')])
- self.assertEqual(get_login('admin', 'admin', 'admin'), user.id)
- self.assertEqual(get_login('AdMiN', 'admin', 'admin'), user.id)
-
- # Test new user
- self.assertFalse(get_login('foo', 'bar', None))
- self.assertFalse(get_login('foo', 'bar', 'foo'))
-
- # Test create new user
- config.set(section, 'create_user', 'True')
- user_id = get_login('foo', 'bar', 'foo')
- foo, = User.search([('login', '=', 'foo')])
- self.assertEqual(user_id, foo.id)
- self.assertEqual(foo.name, 'foo')
-
- # Test create new user with different case
- user_id = get_login('BaR', 'foo', 'bar')
- bar, = User.search([('login', '=', 'bar')])
- self.assertEqual(user_id, bar.id)
- self.assertEqual(bar.name, 'bar')
-
- def test_parse_ldap_url(self):
- 'Test parse_ldap_url'
- self.assertEqual(
- parse_ldap_url('ldap:///o=University%20of%20Michigan,c=US')[1],
- 'o=University of Michigan,c=US')
- self.assertEqual(
- parse_ldap_url(
- 'ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US'
- )[1],
- 'o=University of Michigan,c=US')
- self.assertEqual(
- parse_ldap_url(
- 'ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,'
- 'c=US?postalAddress')[2],
- 'postalAddress')
- self.assertEqual(
- parse_ldap_url(
- 'ldap://host.com:6666/o=University%20of%20Michigan,'
- 'c=US??sub?(cn=Babs%20Jensen)')[3:5],
- ('sub', '(cn=Babs Jensen)'))
- self.assertEqual(
- parse_ldap_url(
- 'ldap:///??sub??bindname=cn=Manager%2co=Foo')[5],
- {'bindname': ['cn=Manager,o=Foo']})
- self.assertEqual(
- parse_ldap_url(
- 'ldap:///??sub??!bindname=cn=Manager%2co=Foo')[5],
- {'!bindname': ['cn=Manager,o=Foo']})
-
-
-def suite():
- suite = trytond.tests.test_tryton.suite()
- suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
- LDAPAuthenticationTestCase))
- return suite
diff -r 43b76eb45f95 -r f0fba679878a tests/test_module.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_module.py Sat Apr 16 18:30:17 2022 +0200
@@ -0,0 +1,103 @@
+# This file is part of Tryton. The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+
+from unittest.mock import ANY, patch
+
+import ldap3
+
+from trytond.config import config
+from trytond.modules.ldap_authentication.res import parse_ldap_url
+from trytond.pool import Pool
+from trytond.tests.test_tryton import ModuleTestCase, with_transaction
+
+section = 'ldap_authentication'
+
+
+class LDAPAuthenticationTestCase(ModuleTestCase):
+ 'Test LDAPAuthentication module'
+ module = 'ldap_authentication'
+
+ def setUp(self):
+ super(LDAPAuthenticationTestCase, self).setUp()
+ methods = config.get('session', 'authentications', default='')
+ config.set('session', 'authentications', 'ldap')
+ self.addCleanup(config.set, 'session', 'authentications', methods)
+ config.add_section(section)
+ config.set(section, 'uri', 'ldap://localhost/dc=tryton,dc=org')
+ self.addCleanup(config.remove_section, section)
+
+ @with_transaction()
+ def test_user_get_login(self):
+ 'Test User.get_login'
+ pool = Pool()
+ User = pool.get('res.user')
+
+ @patch.object(ldap3, 'Connection')
+ @patch.object(User, 'ldap_search_user')
+ def get_login(login, password, find, ldap_search_user, Connection):
+ con = Connection.return_value
+ con.bind.return_value = bool(find)
+ if find:
+ ldap_search_user.return_value = [('dn', {'uid': [find]})]
+ else:
+ ldap_search_user.return_value = None
+ user_id = User.get_login(login, {
+ 'password': password,
+ })
+ if find:
+ Connection.assert_called_with(ANY, ANY, password)
+ return user_id
+
+ # Test existing user
+ user, = User.search([('login', '=', 'admin')])
+ self.assertEqual(get_login('admin', 'admin', 'admin'), user.id)
+ self.assertEqual(get_login('AdMiN', 'admin', 'admin'), user.id)
+
+ # Test new user
+ self.assertFalse(get_login('foo', 'bar', None))
+ self.assertFalse(get_login('foo', 'bar', 'foo'))
+
+ # Test create new user
+ config.set(section, 'create_user', 'True')
+ user_id = get_login('foo', 'bar', 'foo')
+ foo, = User.search([('login', '=', 'foo')])
+ self.assertEqual(user_id, foo.id)
+ self.assertEqual(foo.name, 'foo')
+
+ # Test create new user with different case
+ user_id = get_login('BaR', 'foo', 'bar')
+ bar, = User.search([('login', '=', 'bar')])
+ self.assertEqual(user_id, bar.id)
+ self.assertEqual(bar.name, 'bar')
+
+ def test_parse_ldap_url(self):
+ 'Test parse_ldap_url'
+ self.assertEqual(
+ parse_ldap_url('ldap:///o=University%20of%20Michigan,c=US')[1],
+ 'o=University of Michigan,c=US')
+ self.assertEqual(
+ parse_ldap_url(
+ 'ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US'
+ )[1],
+ 'o=University of Michigan,c=US')
+ self.assertEqual(
+ parse_ldap_url(
+ 'ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,'
+ 'c=US?postalAddress')[2],
+ 'postalAddress')
+ self.assertEqual(
+ parse_ldap_url(
+ 'ldap://host.com:6666/o=University%20of%20Michigan,'
+ 'c=US??sub?(cn=Babs%20Jensen)')[3:5],
+ ('sub', '(cn=Babs Jensen)'))
+ self.assertEqual(
+ parse_ldap_url(
+ 'ldap:///??sub??bindname=cn=Manager%2co=Foo')[5],
+ {'bindname': ['cn=Manager,o=Foo']})
+ self.assertEqual(
+ parse_ldap_url(
+ 'ldap:///??sub??!bindname=cn=Manager%2co=Foo')[5],
+ {'!bindname': ['cn=Manager,o=Foo']})
+
+
+del ModuleTestCase
diff -r 43b76eb45f95 -r f0fba679878a tox.ini
--- a/tox.ini Sun Apr 10 19:11:38 2022 +0200
+++ b/tox.ini Sat Apr 16 18:30:17 2022 +0200
@@ -2,8 +2,9 @@
envlist = {py37,py38,py39,py310}-{sqlite,postgresql}
[testenv]
+extras = test
commands =
- coverage run --include=.*/ldap_authentication/* setup.py test
+ coverage run --include=.*/ldap_authentication/* -m unittest discover -s
tests
coverage report --include=.*/ldap_authentication/* --omit=*/tests/*
deps =
coverage