import pytest from ucc.gshortcut import HMGShortcutClient from ucc.database import ProtectedConnection from ucc.abstract import Permission from ucc import InvalidError from .test_gshortcut import PERMISSION_RWD, PERMISSION_R, check_file_node client: HMGShortcutClient = None @pytest.fixture(scope='module', autouse=True) def set_globals(path_client, ucc_client): global client client = HMGShortcutClient(ucc_client, ProtectedConnection(':memory:')) from .import test_gshortcut test_gshortcut.client = client def test_get_folder_node(): # .shortcut-targets check_node(client.get_node('shortcut_targets_root')) # internal_folder_shortcut check_node(client.get_node('1OsnvIVWAmd8ZAsIKGKNwZZAk6u43Idzj')) # 1st_external_folder_shortcut check_node(client.get_node('1PLm3WAuHgnmZvPLTBZfl6HztA2WTHGJ2')) # 2nd_external_folder_shortcut check_node(client.get_node('1pEg_hIMNZ7QGCyga7g9Qyw4DyzREkPsi')) # broken_folder_shortcut check_node(client.get_node('188vol-0nw6XcJhW5QIGodi9qLce-Zdum')) def test_list_children_folder(): parent_id = '1EOqfCM9FMR8uPBB-5Krr_ru1TWD6Ys5Y' children = client.list_children(parent_id) nodes = dict() for node in children: nodes[node.name] = node if node.id == '1VM1TpN59BiLVSi473XF6dxkW_rc7GRB8': continue assert parent_id == node.parent_id check_node(nodes['internal_folder_shortcut']) check_node(nodes['1st_external_folder_shortcut']) check_node(nodes['2nd_external_folder_shortcut']) check_node(nodes['broken_folder_shortcut']) check_node(nodes['1VM1TpN59BiLVSi473XF6dxkW_rc7GRB8']) def test_find_folder(): parent_id = '1EOqfCM9FMR8uPBB-5Krr_ru1TWD6Ys5Y' check_node(client.find(parent_id, 'internal_folder_shortcut')) check_node(client.find(parent_id, '1st_external_folder_shortcut')) check_node(client.find(parent_id, '2nd_external_folder_shortcut')) check_node(client.find(parent_id, 'broken_folder_shortcut')) def test_find_gshortcut_folder(): parent_id = '1EOqfCM9FMR8uPBB-5Krr_ru1TWD6Ys5Y' check_node(client.find(parent_id, 'internal_folder_shortcut.gshortcut')) check_node(client.find(parent_id, '1st_external_folder_shortcut.gshortcut')) check_node(client.find(parent_id, '2nd_external_folder_shortcut.gshortcut')) check_node(client.find(parent_id, 'broken_folder_shortcut.gshortcut')) def test_create_file(): with pytest.raises(InvalidError): parent_id = 'shortcut_targets_root' client.create_file(parent_id, 'foobar', None) def test_create_folder(): with pytest.raises(InvalidError): parent_id = 'shortcut_targets_root' client.create_folder(parent_id, 'foobar') def check_node(node): assert node is not None # internal_folder_shortcut if node.id == '1OsnvIVWAmd8ZAsIKGKNwZZAk6u43Idzj': assert 'internal_folder_shortcut' == node.name assert False == node.is_dir assert True == node.is_shortcut assert PERMISSION_RWD == node.permission return # 1st_external_folder_shortcut elif node.id == '1PLm3WAuHgnmZvPLTBZfl6HztA2WTHGJ2': assert '1st_external_folder_shortcut' == node.name assert False == node.is_dir assert True == node.is_shortcut assert PERMISSION_RWD == node.permission return # 2nd_external_folder_shortcut elif node.id == '1pEg_hIMNZ7QGCyga7g9Qyw4DyzREkPsi': assert '2nd_external_folder_shortcut' == node.name assert False == node.is_dir assert True == node.is_shortcut assert PERMISSION_RWD == node.permission return # broken_folder_shortcut elif node.id == '188vol-0nw6XcJhW5QIGodi9qLce-Zdum': assert 'broken_folder_shortcut' == node.name assert False == node.is_dir assert True == node.is_shortcut assert PERMISSION_RWD == node.permission return # 1VM1TpN59BiLVSi473XF6dxkW_rc7GRB8 elif node.id == '1VM1TpN59BiLVSi473XF6dxkW_rc7GRB8': assert '1VM1TpN59BiLVSi473XF6dxkW_rc7GRB8' == node.name assert 'shortcut_targets_root' == node.parent_id assert True == node.is_dir assert False == node.is_shortcut assert PERMISSION_R == node.permission return # .shortcut-targets elif node.id == 'shortcut_targets_root': assert '.shortcut-targets' == node.name assert '0AID03OitPOVgUk9PVA' == node.parent_id assert True == node.is_dir assert False == node.is_shortcut assert PERMISSION_R == node.permission return else: check_file_node(node)