open_workshop/tests/test_access_rights.py

75 lines
2.7 KiB
Python

'''
/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}")