''' /odoo_env/src/odoo/odoo-bin \ -d hh16-test \ --data-dir=/env/filestore/ \ --addons-path=/odoo_env/src/odoo/addons,/odoo_env/src/odoo/odoo/addons,/odoo_env/src/openupgrade,/odoo_env/src/OCA/web,/odoo_env/src/OCA/server-tools,/odoo_env/src/vvow \ --test-enable \ --stop-after-init \ --test-tags open_workshop \ --log-level=debug \ --http-port=9070 \ --db_host=db \ --db_user=odoo \ --db_password=odoo ''' from odoo.tests.common import TransactionCase from odoo.tests import tagged import logging _logger = logging.getLogger(__name__) @tagged('post_install', 'open_workshop', 'access_rights') class TestOpenWorkshopAccessRights(TransactionCase): def setUp(self): super().setUp() self.group_user = self.env.ref('base.group_user') self.test_user = self.env['res.users'].create({ 'name': 'Access Test User', 'login': 'access_test_user', 'groups_id': [(6, 0, [self.group_user.id])], }) self.models_to_test = [ 'ows.machine', 'ows.machine.access', 'ows.machine.product', 'ows.machine.training', 'ows.machine.area', 'ows.user', ] def test_model_access_rights(self): for model_name in self.models_to_test: with self.subTest(model=model_name): model = self.env[model_name].with_user(self.test_user) records = model.search([], limit=1) # Test Lesezugriff self.assertTrue(records.exists(), f"Kein Zugriff auf {model_name} oder leer") # Test Schreib-, Erstell- und Löschrechte nur wenn Eintrag existiert if records: # Schreibtest write_fields = [f for f in records._fields if records._fields[f].type in ('char', 'text') and f != 'id'] if write_fields: field = write_fields[0] test_value = 'Test Write' try: records.write({field: test_value}) except Exception as e: self.fail(f"❌ Schreibrechte auf {model_name}.{field} verweigert: {e}") # Erstellung try: new = records.copy() self.assertTrue(new.exists(), f"❌ Kein Erstellrecht auf {model_name}") except Exception as e: self.fail(f"❌ Erstellung in {model_name} verweigert: {e}") # Löschung try: new.unlink() except Exception as e: self.fail(f"❌ Löschrechte auf {model_name} verweigert: {e}")