Ejemplo n.º 1
0
def test_object_count():
    """Test object_count"""
    obj1 = o.object(p.identifier('x', 'y1', 'object'))
    obj2 = o.object(p.identifier('x', 'y2', 'object'))
    obj3 = o.object(p.identifier('x', 'y3', 'object'))
    prem = p.premis(child_elements=[obj1, obj2, obj3])
    assert o.object_count(prem) == 3
Ejemplo n.º 2
0
def test_find_object_by_id():
    """Test find_object_by_id"""
    object1 = o.object(p.identifier('local', 'id1', 'object'))
    object2 = o.object(p.identifier('local', 'id2', 'object'))
    object3 = o.object(p.identifier('local', 'id3', 'object'))
    xml = p.premis(child_elements=[object1, object2, object3])
    obj = o.find_object_by_id(xml, 'id2')
    assert p.parse_identifier_type_value(p.parse_identifier(obj)) == ('local',
                                                                      'id2')
Ejemplo n.º 3
0
def test_contains_object():
    """Test contains_object"""
    obj1 = o.object(p.identifier('x', 'y1', 'object'))
    obj2 = o.object(p.identifier('x', 'y2', 'object'))
    obj3 = o.object(p.identifier('x', 'y3', 'object'))
    prem1 = p.premis(child_elements=[obj1, obj2, obj3])
    prem2 = p.premis(child_elements=[obj1, obj2])

    assert o.contains_object(obj3, prem1)
    assert not o.contains_object(obj3, prem2)
def test_iter_elements():
    """Test iter_elements"""
    obj1 = o.object(p.identifier('local', 'id01'), original_name='nimi1')
    obj2 = o.object(p.identifier('local', 'id02'), original_name='nimi2')
    obj3 = o.object(p.identifier('local', 'id03'), original_name='nimi3')
    xml = p.premis(child_elements=[obj1, obj2, obj3])
    i = 0
    for name in p.iter_elements(xml, 'originalName'):
        i = i + 1
        assert name.text == 'nimi' + str(i)
    assert i == 3
Ejemplo n.º 5
0
def test_objects_with_type():
    """Test objects_with_type"""
    obj1 = o.object(p.identifier('x1', 'y1', 'object'))
    obj2 = o.object(p.identifier('x1', 'y2', 'object'))
    obj3 = o.object(p.identifier('x2', 'y3', 'object'))
    filtered = o.objects_with_type([obj1, obj2, obj3], 'x1')
    i = 0
    for filt_el in filtered:
        i = i + 1
        (id_type, _) = p.parse_identifier_type_value(
            p.parse_identifier(filt_el, 'object'), 'object')
        assert id_type == 'x1'
    assert i == 2
Ejemplo n.º 6
0
def test_iter_objects():
    """Test iter_objects"""
    obj1 = o.object(p.identifier('x', 'y1', 'object'))
    obj2 = o.object(p.identifier('x', 'y2', 'object'))
    obj3 = o.object(p.identifier('x', 'y3', 'object'))
    prem = p.premis(child_elements=[obj1, obj2, obj3])
    iterator = o.iter_objects(prem)
    i = 0
    for iter_elem in iterator:
        i = i + 1
        (_, id_value) = p.parse_identifier_type_value(
            p.parse_identifier(iter_elem, 'object'), 'object')
        assert id_value == 'y' + six.text_type(i)
    assert i == 3
Ejemplo n.º 7
0
def test_filter_objects():
    """Test filter_objects"""
    obj1 = o.object(p.identifier('x', 'y1', 'object'))
    obj2 = o.object(p.identifier('x', 'y2', 'object'))
    obj3 = o.object(p.identifier('x', 'y3', 'object'))
    prem1 = p.premis(child_elements=[obj1, obj2, obj3])
    prem2 = p.premis(child_elements=[obj1, obj3])
    filtered = o.filter_objects(o.iter_objects(prem1), prem2)
    i = 0
    for filt_el in filtered:
        i = i + 1
        (_, id_value) = p.parse_identifier_type_value(
            p.parse_identifier(filt_el, 'object'), 'object')
        assert id_value == 'y2'
    assert i == 1
Ejemplo n.º 8
0
def test_object_order():
    """Test that elements in premis:object are ordered as intended."""
    fixity = o.fixity('xxx', 'yyy')
    oc = o.object_characteristics(child_elements=[fixity])
    env = o.environment(child_elements=[])
    obj1 = o.object(p.identifier('a', 'b'),
                    original_name='c',
                    child_elements=[env, oc])
    xml1 = ('<premis:object xmlns:premis="info:lc/xmlns/premis-v2" '
            'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
            'xsi:type="premis:file"><premis:objectIdentifier>'
            '<premis:objectIdentifierType>a</premis:objectIdentifierType>'
            '<premis:objectIdentifierValue>b</premis:objectIdentifierValue>'
            '</premis:objectIdentifier><premis:objectCharacteristics '
            'xmlns:premis="info:lc/xmlns/premis-v2"><premis:compositionLevel>'
            '0</premis:compositionLevel><premis:fixity>'
            '<premis:messageDigestAlgorithm>yyy'
            '</premis:messageDigestAlgorithm>'
            '<premis:messageDigest>xxx</premis:messageDigest>'
            '</premis:fixity></premis:objectCharacteristics>'
            '<premis:originalName>c</premis:originalName>'
            '<premis:environment/></premis:object>')
    assert u.compare_trees(obj1, ET.fromstring(xml1))
    assert obj1[0].tag == '{info:lc/xmlns/premis-v2}objectIdentifier'
    assert obj1[1].tag == '{info:lc/xmlns/premis-v2}objectCharacteristics'
    assert obj1[2].tag == '{info:lc/xmlns/premis-v2}originalName'
    assert obj1[3].tag == '{info:lc/xmlns/premis-v2}environment'
Ejemplo n.º 9
0
def test_environments_with_purpose():
    """Test the environments_with_purpose function. Only one
    environment should be returned from the created test data
    containing two environments.
    """
    env = o.environment(child_elements=[
        o.dependency(identifiers=[p.identifier('c', 'd', 'dependency')])
    ])
    env2 = o.environment(
        purposes=['a'],
        child_elements=[
            o.dependency(identifiers=[p.identifier('c', 'd', 'dependency')])
        ])
    obj = o.object(p.identifier('x', 'y', 'object'),
                   child_elements=[env, env2])
    xml = ('<premis:environment xmlns:premis="info:lc/xmlns/premis-v2" '
           'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
           '<premis:environmentPurpose>a</premis:environmentPurpose>'
           '<premis:dependency>'
           '<premis:dependencyIdentifier><premis:dependencyIdentifierType>'
           'c</premis:dependencyIdentifierType>'
           '<premis:dependencyIdentifierValue>'
           'd</premis:dependencyIdentifierValue></premis:dependencyIdentifier>'
           '</premis:dependency></premis:environment>')

    environments = o.iter_environments(obj)

    penvs = o.environments_with_purpose(environments, purpose='a')
    assert len(list(penvs)) == 1
    for penv in penvs:
        assert u.compare_trees(penv, ET.fromstring(xml))
Ejemplo n.º 10
0
def test_parse_format_registry():
    """Test parse_format"""
    fd = o.format_registry('xxx', 'yyy')
    form = o.format(child_elements=[fd])
    oc = o.object_characteristics(child_elements=[form])
    obj = o.object(p.identifier('x', 'y', 'object'), child_elements=[oc])
    assert o.parse_format_registry(obj) == ('xxx', 'yyy')
Ejemplo n.º 11
0
def test_parse_format_noversion():
    """Test parse_format"""
    fd = o.format_designation('xxx')
    form = o.format(child_elements=[fd])
    oc = o.object_characteristics(child_elements=[form])
    obj = o.object(p.identifier('x', 'y', 'object'), child_elements=[oc])
    assert o.parse_format(obj) == ('xxx', None)
def test_parse_identifier():
    """Test parse_identifier"""
    obj = o.object(p.identifier('local', 'id01'))
    object_id = (
        '<premis:objectIdentifier xmlns:premis="info:lc/xmlns/premis-v2" '
        'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
        '<premis:objectIdentifierType>local</premis:objectIdentifierType>'
        '<premis:objectIdentifierValue>id01</premis:objectIdentifierValue>'
        '</premis:objectIdentifier>')

    assert u.compare_trees(p.parse_identifier(obj), ET.fromstring(object_id))
Ejemplo n.º 13
0
def test_object():
    """Test premis_premis"""
    obj1 = o.object(p.identifier('a', 'b'), original_name='c')
    obj2 = o.object(p.identifier('a', 'b'), representation=True)
    xml1 = ('<premis:object xmlns:premis="info:lc/xmlns/premis-v2" '
            'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
            'xsi:type="premis:file"><premis:objectIdentifier>'
            '<premis:objectIdentifierType>a</premis:objectIdentifierType>'
            '<premis:objectIdentifierValue>b</premis:objectIdentifierValue>'
            '</premis:objectIdentifier><premis:originalName>c'
            '</premis:originalName></premis:object>')
    xml2 = ('<premis:object xmlns:premis="info:lc/xmlns/premis-v2" '
            'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
            'xsi:type="premis:representation"><premis:objectIdentifier>'
            '<premis:objectIdentifierType>a</premis:objectIdentifierType>'
            '<premis:objectIdentifierValue>b</premis:objectIdentifierValue>'
            '</premis:objectIdentifier></premis:object>')

    assert u.compare_trees(obj1, ET.fromstring(xml1))
    assert u.compare_trees(obj2, ET.fromstring(xml2))
Ejemplo n.º 14
0
def test_parse_relationship():
    """Test parse_relationship"""
    rel = o.relationship('a', 'b', p.identifier('c', 'd'))
    obj = o.object(p.identifier('x', 'y', 'object'), child_elements=[rel])
    rel2 = o.parse_relationship(obj)
    xml = ('<premis:relationship xmlns:premis="info:lc/xmlns/premis-v2" '
           'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
           '<premis:relationshipType>a</premis:relationshipType>'
           '<premis:relationshipSubType>b</premis:relationshipSubType>'
           '<premis:relatedObjectIdentification>'
           '<premis:relatedObjectIdentifierType>'
           'c</premis:relatedObjectIdentifierType>'
           '<premis:relatedObjectIdentifierValue>'
           'd</premis:relatedObjectIdentifierValue>'
           '</premis:relatedObjectIdentification></premis:relationship>')
    assert u.compare_trees(rel2, ET.fromstring(xml))
Ejemplo n.º 15
0
def test_parse_dependency():
    """Test parse_dependency"""

    env = o.environment(child_elements=[
        o.dependency(
            identifiers=[p.identifier('e', 'f', prefix='dependency')]),
        o.dependency(identifiers=[p.identifier('c', 'd', prefix='dependency')])
    ])
    obj = o.object(p.identifier('x', 'y', 'object'), child_elements=[env])
    dep = o.parse_dependency(obj)

    xml1 = ('<premis:dependency xmlns:premis="info:lc/xmlns/premis-v2" '
            'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
            '<premis:dependencyIdentifier><premis:dependencyIdentifierType>'
            'e</premis:dependencyIdentifierType>'
            '<premis:dependencyIdentifierValue>'
            'f</premis:dependencyIdentifierValue>'
            '</premis:dependencyIdentifier>'
            '</premis:dependency>')

    xml2 = ('<premis:dependency xmlns:premis="info:lc/xmlns/premis-v2" '
            'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
            '<premis:dependencyIdentifier><premis:dependencyIdentifierType>'
            'c</premis:dependencyIdentifierType>'
            '<premis:dependencyIdentifierValue>'
            'd</premis:dependencyIdentifierValue>'
            '</premis:dependencyIdentifier>'
            '</premis:dependency>')

    test_list = [xml1, xml2]

    i = 0

    for iter_depend in dep:
        assert u.compare_trees(iter_depend, ET.fromstring(test_list[i]))
        i += 1
Ejemplo n.º 16
0
def test_iter_environments():
    """Test the iter_environments function. Test asserts that the
    environment was yielded from the created test data and that its
    contents matches the expected premis XML.
    """
    env = o.environment(child_elements=[
        o.dependency(identifiers=[p.identifier('c', 'd', 'dependency')])
    ])
    obj = o.object(p.identifier('x', 'y', 'object'), child_elements=[env])

    xml = ('<premis:environment xmlns:premis="info:lc/xmlns/premis-v2" '
           'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
           '<premis:dependency>'
           '<premis:dependencyIdentifier><premis:dependencyIdentifierType>'
           'c</premis:dependencyIdentifierType>'
           '<premis:dependencyIdentifierValue>'
           'd</premis:dependencyIdentifierValue></premis:dependencyIdentifier>'
           '</premis:dependency></premis:environment>')

    i = 0
    for penv in o.iter_environments(obj):
        i = i + 1
        assert u.compare_trees(penv, ET.fromstring(xml))
    assert i == 1
Ejemplo n.º 17
0
def test_parse_object_type():
    """Test parse_object_type"""
    obj = o.object(p.identifier('x', 'y', 'object'), representation=True)
    assert o.parse_object_type(obj).endswith('representation')
Ejemplo n.º 18
0
def test_iter_environments_empty():
    """Test that non-existing environment results in no elements being
    yielded.
    """
    obj = o.object(p.identifier('x', 'y', 'object'))
    assert not list(o.iter_environments(obj))
Ejemplo n.º 19
0
def test_parse_fixity():
    """Test parse_fixity"""
    fixity = o.fixity('xxx', 'yyy')
    oc = o.object_characteristics(child_elements=[fixity])
    obj = o.object(p.identifier('x', 'y', 'object'), child_elements=[oc])
    assert o.parse_fixity(obj) == ('yyy', 'xxx')
Ejemplo n.º 20
0
def test_parse_original_name():
    """Test parse_original_name"""
    obj = o.object(p.identifier('x', 'y', 'object'), original_name='aaa')
    assert o.parse_original_name(obj) == 'aaa'