Passed
Branch master (e83018)
by Jan
03:07
created

test_client.test_get_wanted_not_selected_rules()   A

Complexity

Conditions 1

Size

Total Lines 14
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 12
nop 0
dl 0
loc 14
rs 9.8
c 0
b 0
f 0
1
import graph.client
2
import pytest
3
import tests.any_test_help
4
import re
5
import json
6
7
8
def get_client(src, rule):
9
    return graph.client.client([tests.any_test_help.get_src(src), rule])
10
11
12
def test_client():
13
    src = 'test_data/ssg-fedora-ds-arf.xml'
14
    rule = 'rule'
15
    client = get_client(src, rule)
16
    assert client.source_filename == tests.any_test_help.get_src(src)
17
    assert client.rule_name == rule
18
19
20
def test_search_rules_id():
21
    src = 'test_data/ssg-fedora-ds-arf.xml'
22
    part_of_id_rule = 'xccdf_org.ssgproject.'
23
    client = get_client(src, part_of_id_rule)
24
    assert len(client.search_rules_id()) == 184
25
26
27
def test_find_does_not_exist_rule():
28
    rule = 'random_rule_which_doest_exist'
29
    src = 'test_data/ssg-fedora-ds-arf.xml'
30
    client = get_client(src, rule)
31
    with pytest.raises(Exception, match="err- 404 rule not found!"):
32
        assert client.search_rules_id()
33
34
35
def test_find_not_selected_rule():
36
    rule = 'xccdf_org.ssgproject.content_rule_ntpd_specify_remote_server'
37
    src = 'test_data/ssg-fedora-ds-arf.xml'
38
    client = get_client(src, rule)
39
    with pytest.raises(Exception, match=rule):
40
        assert client.search_rules_id()
41
42
43
def test_search_rules_with_regex():
44
    src = 'test_data/ssg-fedora-ds-arf.xml'
45
    regex = r'_package_\w+_removed'
46
    client = get_client(src, regex)
47
    assert len(client.search_rules_id()) == 2
48
49
50
def test_get_questions():
51
    src = 'test_data/ssg-fedora-ds-arf.xml'
52
    regex = r'_package_\w+_removed'
53
    client = get_client(src, regex)
54
    from PyInquirer import Separator
55
56
    out = client.get_questions(Separator('= The Rules ID ='))
57
    rule1 = 'xccdf_org.ssgproject.content_rule_package_abrt_removed'
58
    rule2 = 'xccdf_org.ssgproject.content_rule_package_sendmail_removed'
59
    assert out[0]['choices'][1]['name'] == rule1
60
    assert out[0]['choices'][2]['name'] == rule2
61
62
63
def test_get_wanted_not_selected_rules():
64
    src = 'test_data/ssg-fedora-ds-arf.xml'
65
    regex = r'_package_\w+_removed'
66
    client = get_client(src, regex)
67
68
    out = [
69
        {'id_rule': 'xccdf_org.ssgproject.content_rule_package_nis_removed'},
70
        {'id_rule': 'xccdf_org.ssgproject.content_rule_package_ntpdate_removed'},
71
        {'id_rule': 'xccdf_org.ssgproject.content_rule_package_telnetd_removed'},
72
        {'id_rule': 'xccdf_org.ssgproject.content_rule_package_gdm_removed'},
73
        {'id_rule': 'xccdf_org.ssgproject.content_rule_package_setroubleshoot_removed'},
74
        {'id_rule': 'xccdf_org.ssgproject.content_rule_package_mcstrans_removed'}]
75
76
    assert out == client._get_wanted_not_selected_rules()
77
78
79
def test_get_wanted_rules():
80
    src = 'test_data/ssg-fedora-ds-arf.xml'
81
    regex = r'_package_\w+_removed'
82
    client = get_client(src, regex)
83
84
    out = [
85
        {'href': '#oval0',
86
         'id_def': 'oval:ssg-package_abrt_removed:def:1',
87
         'id_rule': 'xccdf_org.ssgproject.content_rule_package_abrt_removed',
88
         'result': 'fail'},
89
        {'href': '#oval0',
90
         'id_def': 'oval:ssg-package_sendmail_removed:def:1',
91
         'id_rule': 'xccdf_org.ssgproject.content_rule_package_sendmail_removed',
92
         'result': 'pass'}]
93
94
    assert out == client._get_wanted_rules()
95
96
97
def test_search_non_existent_rule():
98
    src = 'test_data/ssg-fedora-ds-arf.xml'
99
    non_existent_rule = 'non-existent_rule'
100
    with pytest.raises(Exception, match="err- 404 rule not found!"):
101
        assert get_client(src, non_existent_rule).search_rules_id()
102
103
104
def test_search_not_selected_rule():
105
    src = 'test_data/ssg-fedora-ds-arf.xml'
106
    non_existent_rule = 'xccdf_org.ssgproject.content_rule_package_nis_removed'
107
    with pytest.raises(Exception, match=non_existent_rule):
108
        assert get_client(src, non_existent_rule).search_rules_id()
109
110
111
def test_prepare_graph():
112
    src = 'test_data/ssg-fedora-ds-arf.xml'
113
    rule = 'xccdf_org.ssgproject.content_rule_package_abrt_removed'
114
    client = get_client(src, rule)
115
    rules = {'rules': [rule]}
116
    client.prepare_graphs(rules)
117
    result = load_tested_file('../html_interpreter/data.js')
118
    referenc_result = load_tested_file('test_data/referenc_result_data.js')
119
    assert result == referenc_result
120
121
122
def load_tested_file(src):
123
    with open(tests.any_test_help.get_src(src), 'r') as f:
124
        data = f.readlines()
125
    out = []
126
    edge = False
127
    for row in data:
128
        if row == '    "edges": [\n':
129
            edge = True
130
        if not edge:
131
            out.append(row)
132
    return out
133
134
135
def try_expection_for_prepare_graph(src, rule, err):
136
    client = get_client(src, rule)
137
    rules = {'rules': [rule]}
138
    with pytest.raises(Exception, match=err):
139
        assert client.prepare_graphs(rules)
140
141
142
def test_prepare_graph_with_non_existent_rule():
143
    src = 'test_data/ssg-fedora-ds-arf.xml'
144
    rule = 'non-existent_rule'
145
    try_expection_for_prepare_graph(src, rule, '404')
146
147
148
def test_prepare_graph_with_not_selected_rule():
149
    src = 'test_data/ssg-fedora-ds-arf.xml'
150
    rule = 'xccdf_org.ssgproject.content_rule_package_nis_removed'
151
    try_expection_for_prepare_graph(src, rule, 'not selected')
152