Passed
Push — master ( 009541...003b5e )
by Jan
01:36 queued 12s
created

any_test_help.any_test_treeEvaluation_with_tree()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 2
rs 10
c 0
b 0
f 0
cc 1
nop 2
1
import os
2
import json
3
import sys
4
import mock
5
import pytest
6
7
from oval_graph.oval_node import restore_dict_to_tree, OvalNode
8
from oval_graph.converter import Converter
9
from oval_graph.xml_parser import XmlParser
10
11
12
def any_test_treeEvaluation(tree, expect, file_name=None):
13
    if file_name is not None and tree is None:
14
        if file_name.startswith('AND'):
15
            dir = 'test_data_and'
16
        elif file_name.startswith('OR'):
17
            dir = 'test_data_or'
18
        elif file_name.startswith('XOR'):
19
            dir = 'test_data_xor'
20
        elif file_name.startswith('ONE'):
21
            dir = 'test_data_one'
22
        else:
23
            dir = 'test_data_NONE'
24
25
        src = 'test_data/' + dir + '/' + file_name
26
        data = dict()
27
        with open(get_src(src), "r") as f:
28
            data = json.load(f)
29
        assert restore_dict_to_tree(
30
            data).evaluate_tree() == expect
31
    else:
32
        assert tree.evaluate_tree() == expect
33
34
35
def any_test_parsing_and_evaluate_scan_rule(src, rule_id, result):
36
    parser = XmlParser(get_src(src))
37
    oval_tree = parser.get_oval_tree(rule_id)
38
    any_test_treeEvaluation(oval_tree, result)
39
40
41
def any_get_test_data_json(src):
42
    with open(get_src(src), 'r') as f:
43
        return json.load(f)
44
45
46
def any_get_tested_file(src):
47
    with open(get_src(src), 'r') as f:
48
        return f.readlines()
49
50
51
def get_Converter_simple_tree():
52
    return Converter(get_simple_tree())
53
54
55
def any_test_create_node_dict_for_JsTree(Tree, json_src):
56
    data = dict()
57
    with open(get_src(json_src), "r") as f:
58
        data = json.load(f)
59
    assert Converter(Tree).to_JsTree_dict() == data
60
61
62
def get_simple_tree():
63
    return OvalNode(1, 'operator', 'and', False, None, None, [
64
        OvalNode(2, 'value', "true", False, None, None),
65
        OvalNode(3, 'value', "false", False, None, None),
66
        OvalNode(4, 'operator', 'or', False, None, None, [
67
            OvalNode(5, 'value', "false", False, None, None),
68
            OvalNode(6, 'value', "true", False, None, None)
69
        ]
70
        )
71
    ]
72
    )
73
74
75
def get_dict_of_simple_tree():
76
    return get_simple_tree().save_tree_to_dict()
77
78
79
def any_test_transformation_tree_to_Json_for_JsTree(
80
        src, test_data_src, rule_id):
81
    test_data = any_get_test_data_json(test_data_src)
82
83
    parser = XmlParser(get_src(src))
84
    oval_tree = parser.get_oval_tree(rule_id)
85
86
    assert oval_tree.node_id == rule_id
87
    out_data = Converter(oval_tree).to_JsTree_dict()
88
    assert out_data == test_data
89
90
91
def any_test_tree_to_dict_of_tree(tree, dict_of_tree):
92
    assert tree.save_tree_to_dict() == dict_of_tree
93
94
95
def find_any_node(Tree, node_id):
96
    findTree = Tree.find_node_with_ID(node_id)
97
    assert findTree.node_id == node_id
98
99
100
def any_test_treeEvaluation_with_tree(tree, expect):
101
    assert tree.evaluate_tree() == expect
102
103
104
def any_test_dict_to_tree(dict_of_tree):
105
    treedict_of_tree = restore_dict_to_tree(dict_of_tree)
106
    assert treedict_of_tree.save_tree_to_dict() == dict_of_tree
107
108
109
def get_parser(src):
110
    return XmlParser(get_src(src))
111
112
113
def get_src(src):
114
    _dir = os.path.dirname(os.path.realpath(__file__))
115
    FIXTURE_DIR = os.path.join(_dir, src)
116
    return str(FIXTURE_DIR)
117
118
119
def compare_results_html(result):
120
    result_ = any_get_tested_file(result)
121
    referenc_pattern = any_get_tested_file(
122
        'test_data/referenc_pattern_html_report.html')
123
    matched_rows = []
124
    for row in result_:
125
        for row_in_pattern in referenc_pattern:
126
            if row == row_in_pattern:
127
                matched_rows.append(row)
128
    assert matched_rows == referenc_pattern
129
130
131
def compare_results_json(result):
132
    result = any_get_test_data_json(result)
133
    referenc_result = any_get_test_data_json(
134
        'test_data/referenc_result_data_json.json')
135
    assert result[list(result.keys())[
136
        0]] == referenc_result["xccdf_org.ssgproject.content_rule_package_abrt_removed"]
137
138
139
def get_questions_not_selected(capsys, client):
140
    out = client.get_questions()[0].choices
141
    outResult = [
142
        'xccdf_org.ssgproject.content_rule_package_abrt_removed',
143
        'xccdf_org.ssgproject.content_rule_package_sendmail_removed']
144
    assert out == outResult
145
    captured = capsys.readouterr()
146
# Problem with CI when si called function test_arf_to_hml.test_get_question_not_selected
147
# other calls work with ==.
148
    assert (('== The not selected rule IDs ==\n'
149
             'xccdf_org.ssgproject.content_rule_package_nis_removed(Not selected)\n'
150
             'xccdf_org.ssgproject.content_rule_package_ntpdate_removed(Not selected)\n'
151
             'xccdf_org.ssgproject.content_rule_package_telnetd_removed(Not selected)\n'
152
             'xccdf_org.ssgproject.content_rule_package_gdm_removed(Not selected)\n'
153
             'xccdf_org.ssgproject.content_rule_package_setroubleshoot_removed(Not selected)\n'
154
             'xccdf_org.ssgproject.content_rule_package_mcstrans_removed(Not selected)\n')
155
            in captured.out)
156
157
158
def get_questions_not_selected_and_show_fail_rules(capsys, client):
159
    out = client.get_questions()[0].choices
160
    outResult = ['xccdf_org.ssgproject.content_rule_package_abrt_removed']
161
    assert out == outResult
162
    captured = capsys.readouterr()
163
    assert captured.out == (
164
        '== The not selected rule IDs ==\n'
165
        'xccdf_org.ssgproject.content_rule_package_nis_removed(Not selected)\n'
166
        'xccdf_org.ssgproject.content_rule_package_ntpdate_removed(Not selected)\n'
167
        'xccdf_org.ssgproject.content_rule_package_telnetd_removed(Not selected)\n'
168
        'xccdf_org.ssgproject.content_rule_package_gdm_removed(Not selected)\n'
169
        'xccdf_org.ssgproject.content_rule_package_setroubleshoot_removed(Not selected)\n'
170
        'xccdf_org.ssgproject.content_rule_package_mcstrans_removed(Not selected)\n')
171
172
173
def get_questions_with_option_show_fail_rules(client):
174
    out = client.get_questions()[0].choices
175
    rule1 = 'xccdf_org.ssgproject.content_rule_package_abrt_removed'
176
    assert out[0] == rule1
177
    with pytest.raises(Exception, match="list index out of range"):
178
        assert out[2] is None
179
180
181
def if_not_installed_inquirer_with_option_show_fail_rules(capsys, client):
182
    with mock.patch.dict(sys.modules, {'inquirer': None}):
183
        out = client.run_gui_and_return_answers()
184
        assert out is None
185
        captured = capsys.readouterr()
186
        assert captured.out == (
187
            '== The Rule IDs ==\n'
188
            "'xccdf_org.ssgproject.content_rule_package_abrt_removed\\b'\n"
189
            "You haven't got installed inquirer lib. Please copy id rule with you"
190
            " want use and put it in command\n")
191
192
193
def if_not_installed_inquirer_with_option_show_not_selected_rules(
194
        capsys, client):
195
    with mock.patch.dict(sys.modules, {'inquirer': None}):
196
        out = client.run_gui_and_return_answers()
197
        assert out is None
198
        captured = capsys.readouterr()
199
        assert captured.out == (
200
            '== The Rule IDs ==\n'
201
            "'xccdf_org.ssgproject.content_rule_package_abrt_removed\\b'\n"
202
            "'xccdf_org.ssgproject.content_rule_package_sendmail_removed\\b'\n"
203
            '== The not selected rule IDs ==\n'
204
            'xccdf_org.ssgproject.content_rule_package_nis_removed(Not selected)\n'
205
            'xccdf_org.ssgproject.content_rule_package_ntpdate_removed(Not selected)\n'
206
            'xccdf_org.ssgproject.content_rule_package_telnetd_removed(Not selected)\n'
207
            'xccdf_org.ssgproject.content_rule_package_gdm_removed(Not selected)\n'
208
            'xccdf_org.ssgproject.content_rule_package_setroubleshoot_removed(Not selected)\n'
209
            'xccdf_org.ssgproject.content_rule_package_mcstrans_removed(Not selected)\n'
210
            "You haven't got installed inquirer lib. Please copy id rule with you"
211
            " want use and put it in command\n")
212
213
214
def if_not_installed_inquirer_with_option_show_not_selected_rules_and_show_fail_rules(
215
        capsys,
216
        client):
217
    with mock.patch.dict(sys.modules, {'inquirer': None}):
218
        out = client.run_gui_and_return_answers()
219
        assert out is None
220
        captured = capsys.readouterr()
221
        assert captured.out == (
222
            '== The Rule IDs ==\n'
223
            "'xccdf_org.ssgproject.content_rule_package_abrt_removed\\b'\n"
224
            '== The not selected rule IDs ==\n'
225
            'xccdf_org.ssgproject.content_rule_package_nis_removed(Not selected)\n'
226
            'xccdf_org.ssgproject.content_rule_package_ntpdate_removed(Not selected)\n'
227
            'xccdf_org.ssgproject.content_rule_package_telnetd_removed(Not selected)\n'
228
            'xccdf_org.ssgproject.content_rule_package_gdm_removed(Not selected)\n'
229
            'xccdf_org.ssgproject.content_rule_package_setroubleshoot_removed(Not selected)\n'
230
            'xccdf_org.ssgproject.content_rule_package_mcstrans_removed(Not selected)\n'
231
            "You haven't got installed inquirer lib. Please copy id rule with you"
232
            " want use and put it in command\n")
233