Passed
Push — master ( c4e6f9...dffb5c )
by Matěj
01:34 queued 11s
created

any_test_help   A

Complexity

Total Complexity 37

Size/Duplication

Total Lines 218
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 134
dl 0
loc 218
rs 9.44
c 0
b 0
f 0
wmc 37

23 Functions

Rating   Name   Duplication   Size   Complexity  
A any_test_create_node_dict_for_JsTree() 0 5 2
A get_questions_with_option_show_fail_rules() 0 6 2
A get_dict_of_simple_tree() 0 2 1
A compare_results_json() 0 6 1
A compare_results_js() 0 5 1
A get_parser() 0 2 1
A any_get_test_data_json() 0 3 2
A get_src() 0 4 1
A any_test_tree_to_dict_of_tree() 0 2 1
A any_test_treeEvaluation_with_tree() 0 2 1
A any_test_dict_to_tree() 0 3 1
A get_simple_tree() 0 7 1
A any_test_transformation_tree_to_Json_for_JsTree() 0 10 1
A any_test_parsing_and_evaluate_scan_rule() 0 4 1
B any_test_treeEvaluation() 0 21 8
A find_any_node() 0 3 1
A get_Converter_simple_tree() 0 2 1
A if_not_installed_inquirer_with_option_show_not_selected_rules() 0 8 2
A if_not_installed_inquirer_with_option_show_not_selected_rules_and_show_fail_rules() 0 9 2
A any_get_tested_file() 0 3 2
A if_not_installed_inquirer_with_option_show_fail_rules() 0 7 2
A get_questions_not_selected_and_show_fail_rules() 0 7 1
A get_questions_not_selected() 0 17 1
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_js(result):
120
    result = any_get_tested_file(
121
        os.path.join(result, 'data.js'))
122
    referenc_result = any_get_tested_file(
123
        'test_data/referenc_result_data_tree.js')
124
125
126
def compare_results_json(result):
127
    result = any_get_test_data_json(result)
128
    referenc_result = any_get_test_data_json(
129
        'test_data/referenc_result_data_json.json')
130
    assert result[list(result.keys())[
131
        0]] == referenc_result["xccdf_org.ssgproject.content_rule_package_abrt_removed"]
132
133
134
def get_questions_not_selected(capsys, client):
135
    out = client.get_questions()[0].choices
136
    outResult = [
137
        'xccdf_org.ssgproject.content_rule_package_abrt_removed',
138
        'xccdf_org.ssgproject.content_rule_package_sendmail_removed']
139
    assert out == outResult
140
    captured = capsys.readouterr()
141
# Problem with CI when si called function test_arf_to_hml.test_get_question_not_selected
142
# other calls work with ==.
143
    assert (('== The not selected rule IDs ==\n'
144
             'xccdf_org.ssgproject.content_rule_package_nis_removed(Not selected)\n'
145
             'xccdf_org.ssgproject.content_rule_package_ntpdate_removed(Not selected)\n'
146
             'xccdf_org.ssgproject.content_rule_package_telnetd_removed(Not selected)\n'
147
             'xccdf_org.ssgproject.content_rule_package_gdm_removed(Not selected)\n'
148
             'xccdf_org.ssgproject.content_rule_package_setroubleshoot_removed(Not selected)\n'
149
             'xccdf_org.ssgproject.content_rule_package_mcstrans_removed(Not selected)\n')
150
            in captured.out)
151
152
153
def get_questions_not_selected_and_show_fail_rules(capsys, client):
154
    out = client.get_questions()[0].choices
155
    outResult = ['xccdf_org.ssgproject.content_rule_package_abrt_removed']
156
    assert out == outResult
157
    captured = capsys.readouterr()
158
    assert captured.out == (
159
        '== The not selected rule IDs ==\n'
160
        'xccdf_org.ssgproject.content_rule_package_nis_removed(Not selected)\n'
161
        'xccdf_org.ssgproject.content_rule_package_ntpdate_removed(Not selected)\n'
162
        'xccdf_org.ssgproject.content_rule_package_telnetd_removed(Not selected)\n'
163
        'xccdf_org.ssgproject.content_rule_package_gdm_removed(Not selected)\n'
164
        'xccdf_org.ssgproject.content_rule_package_setroubleshoot_removed(Not selected)\n'
165
        'xccdf_org.ssgproject.content_rule_package_mcstrans_removed(Not selected)\n')
166
167
168
def get_questions_with_option_show_fail_rules(client):
169
    out = client.get_questions()[0].choices
170
    rule1 = 'xccdf_org.ssgproject.content_rule_package_abrt_removed'
171
    assert out[0] == rule1
172
    with pytest.raises(Exception, match="list index out of range"):
173
        assert out[2] is None
174
175
176
def if_not_installed_inquirer_with_option_show_fail_rules(capsys, client):
177
    with mock.patch.dict(sys.modules, {'inquirer': None}):
178
        out = client.run_gui_and_return_answers()
179
        assert out is None
180
        captured = capsys.readouterr()
181
        assert captured.out == (
182
            '== The Rule IDs ==\n'
183
            "'xccdf_org.ssgproject.content_rule_package_abrt_removed\\b'\n"
184
            "You haven't got installed inquirer lib. Please copy id rule with you"
185
            " want use and put it in command\n")
186
187
188
def if_not_installed_inquirer_with_option_show_not_selected_rules(
189
        capsys, client):
190
    with mock.patch.dict(sys.modules, {'inquirer': None}):
191
        out = client.run_gui_and_return_answers()
192
        assert out is None
193
        captured = capsys.readouterr()
194
        assert captured.out == (
195
            '== The Rule IDs ==\n'
196
            "'xccdf_org.ssgproject.content_rule_package_abrt_removed\\b'\n"
197
            "'xccdf_org.ssgproject.content_rule_package_sendmail_removed\\b'\n"
198
            '== The not selected rule IDs ==\n'
199
            'xccdf_org.ssgproject.content_rule_package_nis_removed(Not selected)\n'
200
            'xccdf_org.ssgproject.content_rule_package_ntpdate_removed(Not selected)\n'
201
            'xccdf_org.ssgproject.content_rule_package_telnetd_removed(Not selected)\n'
202
            'xccdf_org.ssgproject.content_rule_package_gdm_removed(Not selected)\n'
203
            'xccdf_org.ssgproject.content_rule_package_setroubleshoot_removed(Not selected)\n'
204
            'xccdf_org.ssgproject.content_rule_package_mcstrans_removed(Not selected)\n'
205
            "You haven't got installed inquirer lib. Please copy id rule with you"
206
            " want use and put it in command\n")
207
208
209
def if_not_installed_inquirer_with_option_show_not_selected_rules_and_show_fail_rules(
210
        capsys,
211
        client):
212
    with mock.patch.dict(sys.modules, {'inquirer': None}):
213
        out = client.run_gui_and_return_answers()
214
        assert out is None
215
        captured = capsys.readouterr()
216
        assert captured.out == (
217
            '== The Rule IDs ==\n'
218
            "'xccdf_org.ssgproject.content_rule_package_abrt_removed\\b'\n"
219
            '== The not selected rule IDs ==\n'
220
            'xccdf_org.ssgproject.content_rule_package_nis_removed(Not selected)\n'
221
            'xccdf_org.ssgproject.content_rule_package_ntpdate_removed(Not selected)\n'
222
            'xccdf_org.ssgproject.content_rule_package_telnetd_removed(Not selected)\n'
223
            'xccdf_org.ssgproject.content_rule_package_gdm_removed(Not selected)\n'
224
            'xccdf_org.ssgproject.content_rule_package_setroubleshoot_removed(Not selected)\n'
225
            'xccdf_org.ssgproject.content_rule_package_mcstrans_removed(Not selected)\n'
226
            "You haven't got installed inquirer lib. Please copy id rule with you"
227
            " want use and put it in command\n")
228