75 lines
2.7 KiB
Python
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}")
|