import json import random import re import pytest import time from pybis import DataSet from pybis import Openbis # setup: tests require the dataset type GIT_REPO with the property description def create_external_data_management_system(openbis_instance): code = "TEST-GIT-{:04d}".format(random.randint(0, 9999)) result = openbis_instance.create_external_data_management_system(code, 'Test git', 'localhost:~openbis/repo') return code, result def test_create_external_data_management_system(openbis_instance): code, result = create_external_data_management_system(openbis_instance) assert result is not None assert result.code == code assert result.label == 'Test git' assert result.addressType == 'FILE_SYSTEM' assert result.address == 'localhost:~openbis/repo' def test_new_git_data_set(openbis_instance): dms_code, dms = create_external_data_management_system(openbis_instance) result = openbis_instance.new_git_data_set("GIT_REPO", "./", '12345', dms_code, "/DEFAULT/DEFAULT") assert result is not None openbis_instance.delete_entity('DataSet', result.code, 'Testing.', capitalize=False) # TODO Delete the externaldms (deleteExternalDataManagementSystems) # see http://svnsis.ethz.ch/doc/openbis/S250.0/ch/ethz/sis/openbis/generic/asapi/v3/IApplicationServerApi.html def test_new_git_data_set_with_code(openbis_instance): dms_code, dms = create_external_data_management_system(openbis_instance) data_set_code = openbis_instance.create_perm_id() result = openbis_instance.new_git_data_set("GIT_REPO", "./", '12345', dms_code, "/DEFAULT/DEFAULT", data_set_code=data_set_code) assert result is not None assert result.code == data_set_code openbis_instance.delete_entity('DataSet', result.code, 'Testing.', capitalize=False) def test_new_git_data_set_with_parent(openbis_instance): dms_code, dms = create_external_data_management_system(openbis_instance) result = openbis_instance.new_git_data_set("GIT_REPO", "./", '12345', dms_code, "/DEFAULT/DEFAULT") assert result is not None parent_code = result.code result = openbis_instance.new_git_data_set("GIT_REPO", "./", '23456', dms_code, "/DEFAULT/DEFAULT", parents=parent_code) assert result.code != parent_code assert len(result.parents) == 1 assert result.parents[0] == parent_code openbis_instance.delete_entity('DataSet', parent_code, 'Testing.', capitalize=False) openbis_instance.delete_entity('DataSet', result.code, 'Testing.', capitalize=False) def test_new_git_data_set_with_property(openbis_instance): dms_code, dms = create_external_data_management_system(openbis_instance) data_set_code = openbis_instance.create_perm_id() result = openbis_instance.new_git_data_set("GIT_REPO", "./", '12345', dms_code, "/DEFAULT/DEFAULT", data_set_code=data_set_code, properties={"DESCRIPTION": 'This is a description'}) assert result is not None assert result.code == data_set_code openbis_instance.delete_entity('DataSet', result.code, 'Testing.', capitalize=False) def test_new_git_data_set_with_contents(openbis_instance): dms_code, dms = create_external_data_management_system(openbis_instance) data_set_code = openbis_instance.create_perm_id() contents = [{'crc32': 1234, 'directory': False, 'fileLength': 4321, 'path': 'path/to/the/file.txt'}, {'directory': True, 'path': 'path/to/empty/directory'}] result = openbis_instance.new_git_data_set("GIT_REPO", "./", '12345', dms_code, "/DEFAULT/DEFAULT", data_set_code=data_set_code, properties={"DESCRIPTION": 'This is a description'}, contents=contents) assert result is not None assert result.code == data_set_code openbis_instance.delete_entity('DataSet', result.code, 'Testing.', capitalize=False)