changeset 887f013a702e in modules/web_user:default
details: https://hg.tryton.org/modules/web_user?cmd=changeset&node=887f013a702e
description:
        Replace test setuptools command by unittest discover

        issue9215
        review389851002
diffstat:

 setup.py               |    4 +-
 tests/__init__.py      |    7 -
 tests/test_module.py   |  200 +++++++++++++++++++++++++++++++++++++++++++++++
 tests/test_web_user.py |  207 -------------------------------------------------
 tox.ini                |    3 +-
 5 files changed, 203 insertions(+), 218 deletions(-)

diffs (461 lines):

diff -r a96f5fe467a1 -r 887f013a702e setup.py
--- a/setup.py  Mon Apr 11 22:13:53 2022 +0200
+++ b/setup.py  Sat Apr 16 18:30:20 2022 +0200
@@ -138,6 +138,7 @@
     install_requires=requires,
     extras_require={
         'BCrypt': ['bcrypt'],
+        'test': tests_require,
         'html2text': ['html2text'],
         },
     dependency_links=dependency_links,
@@ -146,7 +147,4 @@
     [trytond.modules]
     web_user = trytond.modules.web_user
     """,
-    test_suite='tests',
-    test_loader='trytond.test_loader:Loader',
-    tests_require=tests_require,
     )
diff -r a96f5fe467a1 -r 887f013a702e tests/__init__.py
--- a/tests/__init__.py Mon Apr 11 22:13:53 2022 +0200
+++ b/tests/__init__.py Sat Apr 16 18:30:20 2022 +0200
@@ -1,9 +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.
-
-try:
-    from trytond.modules.web_user.tests.test_web_user import suite
-except ImportError:
-    from .test_web_user import suite
-
-__all__ = ['suite']
diff -r a96f5fe467a1 -r 887f013a702e tests/test_module.py
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_module.py      Sat Apr 16 18:30:20 2022 +0200
@@ -0,0 +1,200 @@
+# 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
+
+from trytond.config import config
+from trytond.modules.party.tests import PartyCheckEraseMixin
+from trytond.modules.web_user import user as user_module
+from trytond.pool import Pool
+from trytond.tests.test_tryton import ModuleTestCase, with_transaction
+
+VALIDATION_URL = 'http://www.example.com/validation'
+RESET_PASSWORD_URL = 'http://www.example.com/reset_password'
+FROM = '[email protected]'
+
+
+class WebUserTestCase(PartyCheckEraseMixin, ModuleTestCase):
+    'Test Web User module'
+    module = 'web_user'
+
+    def setUp(self):
+        super(WebUserTestCase, self).setUp()
+        validation_url = config.get('web', 'email_validation_url', default='')
+        config.set('web', 'email_validation_url', VALIDATION_URL)
+        self.addCleanup(
+            lambda: config.set('web', 'email_validation_url', validation_url))
+        reset_password_url = config.get(
+            'web', 'reset_password_url', default='')
+        config.set('web', 'reset_password_url', RESET_PASSWORD_URL)
+        self.addCleanup(lambda: config.set(
+                'web', 'reset_password_url', reset_password_url))
+        reset_from = config.get('email', 'from', default='')
+        config.set('email', 'from', FROM)
+        self.addCleanup(lambda: config.set('email', 'from', reset_from))
+
+        length = config.get('password', 'length', default='')
+        config.set('password', 'length', '4')
+        self.addCleanup(config.set, 'password', 'length', length)
+
+        entropy = config.get('password', 'entropy', default='')
+        config.set('password', 'entropy', '0.8')
+        self.addCleanup(config.set, 'password', 'entropy', entropy)
+
+    def create_user(self, email, password):
+        pool = Pool()
+        User = pool.get('web.user')
+
+        user = User(email=email)
+        user.password = password
+        user.save()
+
+        self.assertEqual(user.password, 'x' * 10)
+        self.assertNotEqual(user.password_hash, password)
+
+    def check_user(self, email, password):
+        pool = Pool()
+        User = pool.get('web.user')
+
+        user, = User.search([('email', '=', email)])
+        auth_user = User.authenticate(email, password)
+        self.assertEqual(auth_user, user)
+
+        bad_user = User.authenticate(email, password + 'wrong')
+        self.assertEqual(bad_user, None)
+
+        bad_user = User.authenticate(email + 'wrong', password)
+        self.assertEqual(bad_user, None)
+
+    @with_transaction()
+    def test_default_hash(self):
+        'Test default hash'
+        self.create_user('[email protected]', 'secret')
+        self.check_user('[email protected]', 'secret')
+
+    @with_transaction()
+    def test_session(self):
+        'Test session'
+        pool = Pool()
+        User = pool.get('web.user')
+
+        user = User(email='[email protected]')
+        user.save()
+
+        key = user.new_session()
+        self.assertTrue(key)
+
+        session_user = User.get_user(key)
+        self.assertEqual(session_user, user)
+
+        wrong_session_user = User.get_user('foo')
+        self.assertEqual(wrong_session_user, None)
+
+    @with_transaction()
+    def test_validate_email(self):
+        'Test email validation'
+        pool = Pool()
+        User = pool.get('web.user')
+
+        user = User(email='[email protected]')
+        user.save()
+        self.assertFalse(user.email_valid)
+        self.assertFalse(user.email_token)
+
+        with patch.object(user_module, 'sendmail_transactional') as sendmail:
+            User.validate_email([user])
+            sendmail.assert_called_once_with(FROM, ['[email protected]'], ANY)
+
+        token = user.email_token
+        self.assertTrue(token)
+
+        self.assertEqual(
+            user.get_email_validation_url(),
+            '%s?token=%s' % (VALIDATION_URL, token))
+
+        self.assertFalse(
+            User.validate_email_url(VALIDATION_URL))
+        self.assertFalse(
+            User.validate_email_url('%s?token=12345' % VALIDATION_URL))
+
+        self.assertTrue(
+            User.validate_email_url(user.get_email_validation_url()))
+
+        self.assertTrue(user.email_valid)
+        self.assertFalse(user.email_token)
+
+    @with_transaction()
+    def test_reset_password(self):
+        'Test reset password'
+        pool = Pool()
+        User = pool.get('web.user')
+
+        user = User(email='[email protected]', email_valid=True)
+        user.save()
+        self.assertFalse(user.password_hash)
+
+        with patch.object(user_module, 'sendmail_transactional') as sendmail:
+            User.reset_password([user])
+            sendmail.assert_called_once_with(FROM, ['[email protected]'], ANY)
+
+        token = user.reset_password_token
+        self.assertTrue(token)
+        self.assertTrue(user.reset_password_token_expire)
+
+        self.assertEqual(
+            user.get_email_reset_password_url(),
+            '%s?email=user%%40example.com&token=%s'
+            % (RESET_PASSWORD_URL, token))
+
+        self.assertFalse(
+            User.set_password_token('[email protected]', '12345', 'secret'))
+        self.assertFalse(
+            User.set_password_token('[email protected]', '12345', 'secret'))
+        self.assertFalse(
+            User.set_password_token('[email protected]', token, 'secret'))
+        self.assertFalse(user.password_hash)
+
+        self.assertTrue(User.set_password_url(
+                user.get_email_reset_password_url(), 'secret'))
+
+        self.assertTrue(user.password_hash)
+        self.assertFalse(user.reset_password_token)
+        self.assertFalse(user.reset_password_token_expire)
+
+    @with_transaction()
+    def test_create_format_email(self):
+        "Test create format email"
+        pool = Pool()
+        User = pool.get('web.user')
+
+        user = User(email='[email protected]')
+        user.save()
+
+        self.assertEqual(user.email, '[email protected]')
+
+    @with_transaction()
+    def test_write_format_email(self):
+        "Test write format email"
+        pool = Pool()
+        User = pool.get('web.user')
+
+        user = User(email='[email protected]')
+        user.save()
+        User.write([user], {'email': '[email protected]'})
+
+        self.assertEqual(user.email, '[email protected]')
+
+    @with_transaction()
+    def test_authenticate_case_insensitive(self):
+        "Test authenticate case insensitive"
+        pool = Pool()
+        User = pool.get('web.user')
+
+        user = User(email='[email protected]', password='secret')
+        user.save()
+        auth_user = User.authenticate('[email protected]', 'secret')
+
+        self.assertEqual(auth_user, user)
+
+
+del ModuleTestCase
diff -r a96f5fe467a1 -r 887f013a702e tests/test_web_user.py
--- a/tests/test_web_user.py    Mon Apr 11 22:13:53 2022 +0200
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +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
-
-from trytond.config import config
-from trytond.modules.party.tests import PartyCheckEraseMixin
-from trytond.modules.web_user import user as user_module
-from trytond.pool import Pool
-from trytond.tests.test_tryton import ModuleTestCase
-from trytond.tests.test_tryton import suite as test_suite
-from trytond.tests.test_tryton import with_transaction
-
-VALIDATION_URL = 'http://www.example.com/validation'
-RESET_PASSWORD_URL = 'http://www.example.com/reset_password'
-FROM = '[email protected]'
-
-
-class WebUserTestCase(PartyCheckEraseMixin, ModuleTestCase):
-    'Test Web User module'
-    module = 'web_user'
-
-    def setUp(self):
-        super(WebUserTestCase, self).setUp()
-        validation_url = config.get('web', 'email_validation_url', default='')
-        config.set('web', 'email_validation_url', VALIDATION_URL)
-        self.addCleanup(
-            lambda: config.set('web', 'email_validation_url', validation_url))
-        reset_password_url = config.get(
-            'web', 'reset_password_url', default='')
-        config.set('web', 'reset_password_url', RESET_PASSWORD_URL)
-        self.addCleanup(lambda: config.set(
-                'web', 'reset_password_url', reset_password_url))
-        reset_from = config.get('email', 'from', default='')
-        config.set('email', 'from', FROM)
-        self.addCleanup(lambda: config.set('email', 'from', reset_from))
-
-        length = config.get('password', 'length', default='')
-        config.set('password', 'length', '4')
-        self.addCleanup(config.set, 'password', 'length', length)
-
-        entropy = config.get('password', 'entropy', default='')
-        config.set('password', 'entropy', '0.8')
-        self.addCleanup(config.set, 'password', 'entropy', entropy)
-
-    def create_user(self, email, password):
-        pool = Pool()
-        User = pool.get('web.user')
-
-        user = User(email=email)
-        user.password = password
-        user.save()
-
-        self.assertEqual(user.password, 'x' * 10)
-        self.assertNotEqual(user.password_hash, password)
-
-    def check_user(self, email, password):
-        pool = Pool()
-        User = pool.get('web.user')
-
-        user, = User.search([('email', '=', email)])
-        auth_user = User.authenticate(email, password)
-        self.assertEqual(auth_user, user)
-
-        bad_user = User.authenticate(email, password + 'wrong')
-        self.assertEqual(bad_user, None)
-
-        bad_user = User.authenticate(email + 'wrong', password)
-        self.assertEqual(bad_user, None)
-
-    @with_transaction()
-    def test_default_hash(self):
-        'Test default hash'
-        self.create_user('[email protected]', 'secret')
-        self.check_user('[email protected]', 'secret')
-
-    @with_transaction()
-    def test_session(self):
-        'Test session'
-        pool = Pool()
-        User = pool.get('web.user')
-
-        user = User(email='[email protected]')
-        user.save()
-
-        key = user.new_session()
-        self.assertTrue(key)
-
-        session_user = User.get_user(key)
-        self.assertEqual(session_user, user)
-
-        wrong_session_user = User.get_user('foo')
-        self.assertEqual(wrong_session_user, None)
-
-    @with_transaction()
-    def test_validate_email(self):
-        'Test email validation'
-        pool = Pool()
-        User = pool.get('web.user')
-
-        user = User(email='[email protected]')
-        user.save()
-        self.assertFalse(user.email_valid)
-        self.assertFalse(user.email_token)
-
-        with patch.object(user_module, 'sendmail_transactional') as sendmail:
-            User.validate_email([user])
-            sendmail.assert_called_once_with(FROM, ['[email protected]'], ANY)
-
-        token = user.email_token
-        self.assertTrue(token)
-
-        self.assertEqual(
-            user.get_email_validation_url(),
-            '%s?token=%s' % (VALIDATION_URL, token))
-
-        self.assertFalse(
-            User.validate_email_url(VALIDATION_URL))
-        self.assertFalse(
-            User.validate_email_url('%s?token=12345' % VALIDATION_URL))
-
-        self.assertTrue(
-            User.validate_email_url(user.get_email_validation_url()))
-
-        self.assertTrue(user.email_valid)
-        self.assertFalse(user.email_token)
-
-    @with_transaction()
-    def test_reset_password(self):
-        'Test reset password'
-        pool = Pool()
-        User = pool.get('web.user')
-
-        user = User(email='[email protected]', email_valid=True)
-        user.save()
-        self.assertFalse(user.password_hash)
-
-        with patch.object(user_module, 'sendmail_transactional') as sendmail:
-            User.reset_password([user])
-            sendmail.assert_called_once_with(FROM, ['[email protected]'], ANY)
-
-        token = user.reset_password_token
-        self.assertTrue(token)
-        self.assertTrue(user.reset_password_token_expire)
-
-        self.assertEqual(
-            user.get_email_reset_password_url(),
-            '%s?email=user%%40example.com&token=%s'
-            % (RESET_PASSWORD_URL, token))
-
-        self.assertFalse(
-            User.set_password_token('[email protected]', '12345', 'secret'))
-        self.assertFalse(
-            User.set_password_token('[email protected]', '12345', 'secret'))
-        self.assertFalse(
-            User.set_password_token('[email protected]', token, 'secret'))
-        self.assertFalse(user.password_hash)
-
-        self.assertTrue(User.set_password_url(
-                user.get_email_reset_password_url(), 'secret'))
-
-        self.assertTrue(user.password_hash)
-        self.assertFalse(user.reset_password_token)
-        self.assertFalse(user.reset_password_token_expire)
-
-    @with_transaction()
-    def test_create_format_email(self):
-        "Test create format email"
-        pool = Pool()
-        User = pool.get('web.user')
-
-        user = User(email='[email protected]')
-        user.save()
-
-        self.assertEqual(user.email, '[email protected]')
-
-    @with_transaction()
-    def test_write_format_email(self):
-        "Test write format email"
-        pool = Pool()
-        User = pool.get('web.user')
-
-        user = User(email='[email protected]')
-        user.save()
-        User.write([user], {'email': '[email protected]'})
-
-        self.assertEqual(user.email, '[email protected]')
-
-    @with_transaction()
-    def test_authenticate_case_insensitive(self):
-        "Test authenticate case insensitive"
-        pool = Pool()
-        User = pool.get('web.user')
-
-        user = User(email='[email protected]', password='secret')
-        user.save()
-        auth_user = User.authenticate('[email protected]', 'secret')
-
-        self.assertEqual(auth_user, user)
-
-
-def suite():
-    suite = test_suite()
-    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
-            WebUserTestCase))
-    return suite
diff -r a96f5fe467a1 -r 887f013a702e tox.ini
--- a/tox.ini   Mon Apr 11 22:13:53 2022 +0200
+++ b/tox.ini   Sat Apr 16 18:30:20 2022 +0200
@@ -2,8 +2,9 @@
 envlist = {py37,py38,py39,py310}-{sqlite,postgresql}
 
 [testenv]
+extras = test
 commands =
-    coverage run --include=.*/web_user/* setup.py test
+    coverage run --include=.*/web_user/* -m unittest discover -s tests
     coverage report --include=.*/web_user/* --omit=*/tests/*
 deps =
     coverage

Reply via email to