Test Failed
Pull Request — master (#203)
by Jan
03:38
created

test_converter_js_tree   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 202
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 14
eloc 142
dl 0
loc 202
rs 10
c 0
b 0
f 0

13 Functions

Rating   Name   Duplication   Size   Complexity  
A get_tree_true_one_node() 0 5 1
A get_tree_error_one_node() 0 5 1
A get_tree_true() 0 10 1
A get_negated_operator_node_true() 0 11 1
A test_transformation_xml_rule_to_json_for_js_tree() 0 25 1
A get_tree_false_one_node() 0 5 1
A get_negated_operator_node_false() 0 11 1
A get_negated_value_node_true() 0 6 1
A get_test_data_json() 0 5 2
A test_create_node_dict_for_js_tree() 0 16 1
A get_negated_value_node_false() 0 6 1
A get_tree_noteval() 0 10 1
A get_simple_tree() 0 30 1
1
import json
2
import os
3
4
import pytest
5
6
from oval_graph.arf_xml_parser.arf_xml_parser import ARFXMLParser
7
from oval_graph.oval_tree.converter import Converter
8
from oval_graph.oval_tree.oval_node import OvalNode
9
10
11
def get_test_data_json(src):
12
    top_patch = os.path.dirname(os.path.realpath(__file__))
13
    patch = os.path.join(top_patch, src)
14
    with open(patch, 'r') as f:
15
        return json.load(f)
16
17
18
def get_simple_tree():
19
    return OvalNode(
20
        node_id=1,
21
        node_type='operator',
22
        value='and',
23
        children=[
24
            OvalNode(
25
                node_id=2,
26
                node_type='value',
27
                value='true',
28
            ),
29
            OvalNode(
30
                node_id=3,
31
                node_type='value',
32
                value='false',
33
            ),
34
            OvalNode(
35
                node_id=4,
36
                node_type='operator',
37
                value='or',
38
                children=[
39
                    OvalNode(
40
                        node_id=5,
41
                        node_type='value',
42
                        value='false',
43
                    ),
44
                    OvalNode(
45
                        node_id=6,
46
                        node_type='value',
47
                        value="true",
48
                    ),
49
                ]
50
            )
51
        ]
52
    )
53
54
55
def get_tree_true():
56
    return OvalNode(
57
        node_id=1,
58
        node_type='operator',
59
        value='and',
60
        children=[
61
            OvalNode(
62
                node_id=2,
63
                node_type='value',
64
                value='true',
65
            )
66
        ]
67
    )
68
69
70
def get_tree_noteval():
71
    return OvalNode(
72
        node_id=1,
73
        node_type='operator',
74
        value='and',
75
        children=[
76
            OvalNode(
77
                node_id=2,
78
                node_type='value',
79
                value='noteval',
80
            )
81
        ]
82
    )
83
84
85
def get_tree_false_one_node():
86
    return OvalNode(
87
        node_id=1,
88
        node_type='value',
89
        value='false',
90
    )
91
92
93
def get_tree_true_one_node():
94
    return OvalNode(
95
        node_id=1,
96
        node_type='value',
97
        value='true',
98
    )
99
100
101
def get_tree_error_one_node():
102
    return OvalNode(
103
        node_id=1,
104
        node_type='value',
105
        value='error',
106
    )
107
108
109
def get_negated_operator_node_false():
110
    return OvalNode(
111
        node_id=1,
112
        node_type='operator',
113
        value='and',
114
        negation=True,
115
        children=[
116
            OvalNode(
117
                node_id=2,
118
                node_type='value',
119
                value='false',
120
            )
121
        ]
122
    )
123
124
125
def get_negated_operator_node_true():
126
    return OvalNode(
127
        node_id=1,
128
        node_type='operator',
129
        value='and',
130
        negation=True,
131
        children=[
132
            OvalNode(
133
                node_id=2,
134
                node_type='value',
135
                value='true',
136
            )
137
        ]
138
    )
139
140
141
def get_negated_value_node_true():
142
    return OvalNode(
143
        node_id=2,
144
        node_type='value',
145
        value='true',
146
        negation=True,
147
    )
148
149
150
def get_negated_value_node_false():
151
    return OvalNode(
152
        node_id=2,
153
        node_type='value',
154
        value='false',
155
        negation=True,
156
    )
157
158
159
@pytest.mark.parametrize("tree_getter, json_src", [
160
    (get_simple_tree, 'test_data/test_JsTree_data/JsTree_data_0.json'),
161
    (get_tree_true, 'test_data/test_JsTree_data/JsTree_data_1.json'),
162
    (get_tree_noteval, 'test_data/test_JsTree_data/JsTree_data_2.json'),
163
    (get_tree_false_one_node, 'test_data/test_JsTree_data/JsTree_data_3.json'),
164
    (get_tree_true_one_node, 'test_data/test_JsTree_data/JsTree_data_4.json'),
165
    (get_tree_error_one_node, 'test_data/test_JsTree_data/JsTree_data_5.json'),
166
    (get_negated_operator_node_false, 'test_data/test_JsTree_data/JsTree_data_negated_0.json'),
167
    (get_negated_operator_node_true, 'test_data/test_JsTree_data/JsTree_data_negated_1.json'),
168
    (get_negated_value_node_true, 'test_data/test_JsTree_data/JsTree_data_negated_2.json'),
169
    (get_negated_value_node_false, 'test_data/test_JsTree_data/JsTree_data_negated_3.json'),
170
])
171
def test_create_node_dict_for_js_tree(tree_getter, json_src):
172
    data = get_test_data_json(json_src)
173
    oval_tree = tree_getter()
174
    assert Converter(oval_tree).to_js_tree_dict() == data
175
176
177
@pytest.mark.parametrize("src, test_data_src, rule_id", [
178
    (
179
        '../global_test_data/ssg-fedora-ds-arf.xml',
180
        'test_data/JsTree_json1.json',
181
        'xccdf_org.ssgproject.content_rule_disable_host_auth',
182
    ),
183
    (
184
        '../global_test_data/ssg-fedora-ds-arf.xml',
185
        'test_data/JsTree_json0.json',
186
        'xccdf_org.ssgproject.content_rule_accounts_passwords_pam_faillock_deny',
187
    ),
188
])
189
def test_transformation_xml_rule_to_json_for_js_tree(
190
        src, test_data_src, rule_id):
191
    test_data = get_test_data_json(test_data_src)
192
193
    top_patch = os.path.dirname(os.path.realpath(__file__))
194
    patch_to_xml = os.path.join(top_patch, src)
195
196
    parser = ARFXMLParser(patch_to_xml)
197
    oval_tree = parser.get_oval_tree(rule_id)
198
199
    assert oval_tree.node_id == rule_id
200
    out_data = Converter(oval_tree).to_js_tree_dict()
201
    assert out_data == test_data
202