Skip to content
Snippets Groups Projects
test_external_dms.py 4.04 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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)