def test_migrate_role(descriptiom, new_pvms, pvm_map, external_pvms, deleted_views, deleted_permissions): """ Permission migration: generic tests """ logger.info(descriptiom) with create_old_role(pvm_map, external_pvms) as old_role: role_name = old_role.name session = db.session # Run migrations add_pvms(session, new_pvms) migrate_roles(session, pvm_map) role = db.session.query(Role).filter( Role.name == role_name).one_or_none() for old_pvm, new_pvms in pvm_map.items(): old_pvm_model = security_manager.find_permission_view_menu( old_pvm.permission, old_pvm.view) assert old_pvm_model is None new_pvm_model = security_manager.find_permission_view_menu( new_pvms[0].permission, new_pvms[0].view) assert new_pvm_model is not None assert new_pvm_model in role.permissions # assert deleted view menus for deleted_view in deleted_views: assert security_manager.find_view_menu(deleted_view) is None # assert deleted permissions for deleted_permission in deleted_permissions: assert security_manager.find_permission(deleted_permission) is None # assert externals are still there for external_pvm in external_pvms: assert (security_manager.find_permission_view_menu( external_pvm.permission, external_pvm.view) is not None)
def upgrade(): bind = op.get_bind() session = Session(bind=bind) # Add the new permissions on the migration itself add_pvms(session, NEW_PVMS) migrate_roles(session, PVM_MAP) try: session.commit() except SQLAlchemyError as ex: print(f"An error occurred while upgrading permissions: {ex}") session.rollback()
def downgrade(): bind = op.get_bind() session = Session(bind=bind) # Add the old permissions on the migration itself add_pvms(session, get_reversed_new_pvms(PVM_MAP)) migrate_roles(session, get_reversed_pvm_map(PVM_MAP)) try: session.commit() except SQLAlchemyError as ex: print(f"An error occurred while downgrading permissions: {ex}") session.rollback()