Passed
Push — master ( dfe4f2...9c85cc )
by Matěj
02:22
created

test_build_cpe.test_extract_env_obj()   A

Complexity

Conditions 1

Size

Total Lines 34
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 12
nop 0
dl 0
loc 34
rs 9.8
c 0
b 0
f 0
1
import pytest
2
3
import os
4
import re
5
import ssg.build_cpe
6
import ssg.xml
7
8
ET = ssg.xml.ElementTree
9
10
11
def test_extract_element():
12
    obj = """<?xml version="1.0"?>
13
    <variables>
14
        <var>
15
            <subelement>
16
                <random id="test">This</random>
17
            </subelement>
18
        </var>
19
        <var>
20
            <subelement>
21
                <random random="not-me">That</random>
22
            </subelement>
23
        </var>
24
    </variables>
25
    """
26
    tree = ET.fromstring(obj)
27
28
    assert ssg.build_cpe.extract_subelement(tree, 'id') == 'test'
29
    assert ssg.build_cpe.extract_subelement(tree, 'random') == 'not-me'
30
    assert ssg.build_cpe.extract_subelement(tree, 'missing') is None
31
    assert ssg.build_cpe.extract_subelement(tree, 'subelement') is None
32
33
34
def test_extract_env_obj():
35
    local_var_text = """
36
    <var>
37
        <subelement>
38
            <random object_ref="magical">elements</random>
39
        </subelement>
40
    </var>
41
    """
42
    local_var = ET.fromstring(local_var_text)
43
44
    local_var_missing_text = """
45
    <var>
46
        <subelement>
47
            <random object_ref="nothing">here</random>
48
        </subelement>
49
    </var>
50
    """
51
    local_var_missing = ET.fromstring(local_var_missing_text)
52
53
    objects_text = """
54
    <objects>
55
        <object id="something">something</object>
56
        <object id="magical">magical</object>
57
        <object id="here">here</object>
58
    </objects>
59
    """
60
    objects = ET.fromstring(objects_text)
61
62
    present = ssg.build_cpe.extract_env_obj(objects, local_var)
63
    assert present is not None
64
    assert present.text == 'magical'
65
66
    missing = ssg.build_cpe.extract_env_obj(objects, local_var_missing)
67
    assert missing is None
68
69
70
def test_extract_referred_nodes():
71
    tree_with_refs_text = """
72
    <references>
73
        <reference object_ref="something_borrowed" />
74
        <reference object_ref="something_missing" />
75
    </references>
76
    """
77
    tree_with_refs = ET.fromstring(tree_with_refs_text)
78
79
    tree_with_ids_text = """
80
    <objects>
81
        <object id="something_old">Brno</object>
82
        <object id="something_new">Boston</object>
83
        <object id="something_borrowed">Source Code</object>
84
        <object id="something_blue">Fedora</object>
85
    </objects>
86
    """
87
    tree_with_ids = ET.fromstring(tree_with_ids_text)
88
89
    results = ssg.build_cpe.extract_referred_nodes(tree_with_refs, tree_with_ids, 'object_ref')
90
91
    assert len(results) == 1
92
    assert results[0].text == 'Source Code'
93