Passed
Pull Request — master (#204)
by Vinicius
18:36 queued 10:15
created

tests.unit.test_core.test_dead_letter   A

Complexity

Total Complexity 19

Size/Duplication

Total Lines 171
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 131
dl 0
loc 171
rs 10
c 0
b 0
f 0
wmc 19

13 Methods

Rating   Name   Duplication   Size   Complexity  
A TestDeadLetter.test_rest_delete_ids_not_found() 0 14 2
A TestDeadLetter.setUp() 0 4 1
A TestDeadLetter.test_register_endpoints() 0 5 1
A TestDeadLetter.test_rest_patch_ids_not_found() 0 14 2
A TestDeadLetter.test_delete_event() 0 12 1
A TestDeadLetter.test_rest_patch() 0 17 2
A TestDeadLetter.test_rest_delete() 0 17 2
A TestDeadLetter.test_add_event() 0 9 1
A TestDeadLetter.test_rest_patch_event_name_not_found() 0 13 2
A TestDeadLetter.test_reinject() 0 10 1
A TestDeadLetter.test_delete_event_name() 0 8 1
A TestDeadLetter.test_rest_list() 0 10 1
A TestDeadLetter.test_rest_delete_event_name_not_found() 0 11 2
1
"""Test kytos.core.dead_letter module."""
2
# pylint: disable=invalid-name
3
4
from unittest import TestCase
5
from unittest.mock import MagicMock, patch
6
7
from werkzeug.exceptions import NotFound
8
9
from kytos.core.dead_letter import DeadLetter
10
11
12
class TestDeadLetter(TestCase):
13
    """TestDeadLetter."""
14
15
    def setUp(self):
16
        """setUp."""
17
        self.dead_letter = DeadLetter(MagicMock())
18
        self.dead_letter._get_request = MagicMock()
19
20
    def test_add_event(self):
21
        """test add_event."""
22
        mock_ev = MagicMock()
23
        mock_ev.name = "some_name"
24
        mock_ev.id = "some_id"
25
        assert len(self.dead_letter.dict) == 0
26
        self.dead_letter.add_event(mock_ev)
27
        assert len(self.dead_letter.dict) == 1
28
        assert self.dead_letter.dict[mock_ev.name][mock_ev.id] == mock_ev
29
30
    def test_delete_event(self):
31
        """test delete_event."""
32
        mock_ev = MagicMock()
33
        mock_ev.name = "some_name"
34
        mock_ev.id = "some_id"
35
        assert len(self.dead_letter.dict) == 0
36
        self.dead_letter.add_event(mock_ev)
37
        assert len(self.dead_letter.dict) == 1
38
39
        assert mock_ev.id in self.dead_letter.dict[mock_ev.name]
40
        assert self.dead_letter.delete_event(mock_ev.name, mock_ev.id)
41
        assert mock_ev.id not in self.dead_letter.dict[mock_ev.name]
42
43
    def test_delete_event_name(self):
44
        """test delete_event_name."""
45
        event_name = "event_name"
46
        assert event_name not in self.dead_letter.dict
47
        self.dead_letter.dict[event_name] = "some_value"
48
        assert event_name in self.dead_letter.dict
49
        self.dead_letter.delete_event_name(event_name)
50
        assert event_name not in self.dead_letter.dict
51
52
    def test_register_endpoints(self):
53
        """test register_endpoints."""
54
        api = self.dead_letter.controller.api_server
55
        self.dead_letter.register_endpoints()
56
        assert api.register_core_endpoint.call_count == 3
57
58
    @patch("kytos.core.dead_letter.jsonify")
59
    def test_rest_list(self, jsonify):
60
        """test rest_list."""
61
        mock_ev = MagicMock()
62
        mock_ev.name = "some_name"
63
        mock_ev.id = "some_id"
64
        self.dead_letter.add_event(mock_ev)
65
66
        assert self.dead_letter.rest_list()
67
        jsonify.assert_called()
68
69
    @patch("kytos.core.dead_letter.jsonify")
70
    def test_rest_patch_event_name_not_found(self, _):
71
        """test rest_patch event_name not found."""
72
        event_name = "some_name"
73
        ids = ["id"]
74
        body = {"event_name": event_name, "ids": ids,
75
                "kytos_queue_buffer": "app"}
76
        request = self.dead_letter._get_request
77
        resp = MagicMock()
78
        resp.json = body
79
        request.return_value = resp
80
        with self.assertRaises(NotFound):
81
            self.dead_letter.rest_patch()
82
83
    @patch("kytos.core.dead_letter.jsonify")
84
    def test_rest_patch_ids_not_found(self, _):
85
        """test rest_patch event_name ids found."""
86
        event_name = "some_name"
87
        ids = ["id"]
88
        body = {"event_name": event_name, "ids": ids,
89
                "kytos_queue_buffer": "app"}
90
        request = self.dead_letter._get_request
91
        resp = MagicMock()
92
        resp.json = body
93
        request.return_value = resp
94
        self.dead_letter.dict[event_name] = {}
95
        with self.assertRaises(NotFound):
96
            self.dead_letter.rest_patch()
97
98
    @patch("kytos.core.dead_letter.jsonify")
99
    def test_rest_patch(self, _):
100
        """test rest_patch."""
101
        event_name = "some_name"
102
        ids = ["id", "id2"]
103
        body = {"event_name": event_name, "ids": ids,
104
                "kytos_queue_buffer": "app"}
105
        request = self.dead_letter._get_request
106
        resp = MagicMock()
107
        resp.json = body
108
        request.return_value = resp
109
        for _id in ids:
110
            self.dead_letter.dict[event_name][_id] = {}
111
        self.dead_letter.reinject = MagicMock()
112
113
        self.dead_letter.rest_patch()
114
        assert self.dead_letter.reinject.call_count == len(ids)
115
116
    @patch("kytos.core.dead_letter.jsonify")
117
    def test_rest_delete_event_name_not_found(self, _):
118
        """test rest_delete event_name not found."""
119
        ids = ["id"]
120
        body = {"event_name": "inexistent", "ids": ids}
121
        request = self.dead_letter._get_request
122
        resp = MagicMock()
123
        resp.json = body
124
        request.return_value = resp
125
        with self.assertRaises(NotFound):
126
            self.dead_letter.rest_delete()
127
128
    @patch("kytos.core.dead_letter.jsonify")
129
    def test_rest_delete_ids_not_found(self, _):
130
        """test rest_delete event_name ids found."""
131
132
        event_name = "some_name"
133
        ids = ["id"]
134
        body = {"event_name": event_name, "ids": ids}
135
        request = self.dead_letter._get_request
136
        resp = MagicMock()
137
        resp.json = body
138
        request.return_value = resp
139
        self.dead_letter.dict[event_name] = {}
140
        with self.assertRaises(NotFound):
141
            self.dead_letter.rest_delete()
142
143
    @patch("kytos.core.dead_letter.jsonify")
144
    def test_rest_delete(self, _):
145
        """test rest_delete."""
146
147
        event_name = "some_name"
148
        ids = ["id", "id2"]
149
        body = {"event_name": event_name, "ids": ids}
150
        request = self.dead_letter._get_request
151
        resp = MagicMock()
152
        resp.json = body
153
        request.return_value = resp
154
        for _id in ids:
155
            self.dead_letter.dict[event_name][_id] = {}
156
157
        assert len(self.dead_letter.dict[event_name]) == len(ids)
158
        self.dead_letter.rest_delete()
159
        assert len(self.dead_letter.dict[event_name]) == 0
160
161
    @patch("kytos.core.dead_letter.jsonify")
162
    def test_reinject(self, _):
163
        """test reinject."""
164
        mock_ev = MagicMock()
165
        mock_ev.reinjections = 0
166
        event_name = "event_name"
167
        _id = "id"
168
        self.dead_letter.dict[event_name][_id] = mock_ev
169
        self.dead_letter.reinject(event_name, _id, "app")
170
        assert mock_ev.reinjections == 1
171