From 56011b4996f2c343220981958c34443008fc9c9a Mon Sep 17 00:00:00 2001 From: pvachhani <priva@heliconia.in> Date: Wed, 29 Jan 2025 18:05:06 +0530 Subject: [PATCH] [MIG] base_user_signature: Migration to 18.0 --- base_user_signature/README.rst | 3 + base_user_signature/__manifest__.py | 2 +- base_user_signature/readme/CONTRIBUTORS.md | 2 + .../static/description/index.html | 4 ++ base_user_signature/tests/__init__.py | 1 + .../tests/test_base_user_signature.py | 65 +++++++++++++++++++ 6 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 base_user_signature/tests/__init__.py create mode 100644 base_user_signature/tests/test_base_user_signature.py diff --git a/base_user_signature/README.rst b/base_user_signature/README.rst index b37e61371f..05577f10d3 100644 --- a/base_user_signature/README.rst +++ b/base_user_signature/README.rst @@ -72,6 +72,9 @@ Contributors - Maxime Chambreuil <mchambreuil@opensourceintegrators.com> - Italo LOPES <contact@ilopes.me> - Saran Lim. <saranl@ecosoft.co.th> +- `Heliconia Solutions Pvt. Ltd. <https://www.heliconia.io>`__ + + - Bhavesh Heliconia Maintainers ----------- diff --git a/base_user_signature/__manifest__.py b/base_user_signature/__manifest__.py index 32ebf7de93..cd24d303d6 100644 --- a/base_user_signature/__manifest__.py +++ b/base_user_signature/__manifest__.py @@ -6,7 +6,7 @@ { "name": "Base User Signature", - "version": "16.0.1.0.0", + "version": "18.0.1.0.0", "author": "Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "license": "AGPL-3", diff --git a/base_user_signature/readme/CONTRIBUTORS.md b/base_user_signature/readme/CONTRIBUTORS.md index 2b74afc5c3..10c041aa91 100644 --- a/base_user_signature/readme/CONTRIBUTORS.md +++ b/base_user_signature/readme/CONTRIBUTORS.md @@ -6,3 +6,5 @@ - Maxime Chambreuil \<<mchambreuil@opensourceintegrators.com>\> - Italo LOPES \<<contact@ilopes.me>\> - Saran Lim. \<<saranl@ecosoft.co.th>\> +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/base_user_signature/static/description/index.html b/base_user_signature/static/description/index.html index 87657299b5..a38170711e 100644 --- a/base_user_signature/static/description/index.html +++ b/base_user_signature/static/description/index.html @@ -420,6 +420,10 @@ <h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2> <li>Maxime Chambreuil <<a class="reference external" href="mailto:mchambreuil@opensourceintegrators.com">mchambreuil@opensourceintegrators.com</a>></li> <li>Italo LOPES <<a class="reference external" href="mailto:contact@ilopes.me">contact@ilopes.me</a>></li> <li>Saran Lim. <<a class="reference external" href="mailto:saranl@ecosoft.co.th">saranl@ecosoft.co.th</a>></li> +<li><a class="reference external" href="https://www.heliconia.io">Heliconia Solutions Pvt. Ltd.</a><ul> +<li>Bhavesh Heliconia</li> +</ul> +</li> </ul> </div> <div class="section" id="maintainers"> diff --git a/base_user_signature/tests/__init__.py b/base_user_signature/tests/__init__.py new file mode 100644 index 0000000000..da998a1a59 --- /dev/null +++ b/base_user_signature/tests/__init__.py @@ -0,0 +1 @@ +from . import test_base_user_signature diff --git a/base_user_signature/tests/test_base_user_signature.py b/base_user_signature/tests/test_base_user_signature.py new file mode 100644 index 0000000000..0ece54a750 --- /dev/null +++ b/base_user_signature/tests/test_base_user_signature.py @@ -0,0 +1,65 @@ +from base64 import b64encode +from io import BytesIO + +from PIL import Image + +from odoo.addons.base.tests.common import SavepointCaseWithUserDemo + + +class TestResUsersDigitalSignature(SavepointCaseWithUserDemo): + def setUp(self): + super().setUp() + self.user_model = self.env["res.users"] + + # Create a test user + self.user = self.user_model.create( + { + "name": "Test User", + "login": "test_user", + "email": "test_user@example.com", + } + ) + + def _generate_sample_image(self): + """Generate a small valid image and return its base64-encoded content.""" + img = Image.new("RGB", (10, 10), color="red") # Create a red 10x10 image + buffer = BytesIO() + img.save(buffer, format="PNG") + return b64encode(buffer.getvalue()).decode("ascii") + + def test_digital_signature_field(self): + """Test assigning and clearing the digital signature field.""" + # Generate a valid base64-encoded image + test_signature = self._generate_sample_image() + + # Assign a digital signature to the user + self.user.digital_signature = test_signature + self.assertEqual( + self.user.digital_signature.decode("ascii"), + test_signature, + "Digital signature should be set correctly.", + ) + + # Clear the digital signature using the method + self.user.clear_digital_signature() + self.assertFalse( + self.user.digital_signature, "Digital signature should be cleared." + ) + + def test_self_readable_fields(self): + """Test if 'digital_signature' is included in SELF_READABLE_FIELDS.""" + readable_fields = self.user.SELF_READABLE_FIELDS + self.assertIn( + "digital_signature", + readable_fields, + "'digital_signature' should be in SELF_READABLE_FIELDS.", + ) + + def test_self_writeable_fields(self): + """Test if 'digital_signature' is included in SELF_WRITEABLE_FIELDS.""" + writeable_fields = self.user.SELF_WRITEABLE_FIELDS + self.assertIn( + "digital_signature", + writeable_fields, + "'digital_signature' should be in SELF_WRITEABLE_FIELDS.", + )