aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_dmaap.py
blob: 84ab581bce0566a7ba94f309dff8ed513d8695e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#   Copyright 2022 Orange, Deutsche Telekom AG
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
from unittest import mock
from unittest.mock import patch
from requests import RequestException
from onapsdk.dmaap.dmaap import ACTION, GET_HTTP_METHOD, Dmaap
from onapsdk.exceptions import APIError, ConnectionFailed
import pytest
TOPIC = "fault"

DMAAP_EVENTS_URL = "http://dmaap.api.simpledemo.onap.org:3904/events"
DMAAP_EVENTS_FROM_TOPIC_URL = f"http://dmaap.api.simpledemo.onap.org:3904/events/{TOPIC}/CG1/C1"
DMAAP_RESET_EVENTS = "http://dmaap.api.simpledemo.onap.org:3904/reset"
DMAAP_GET_ALL_TOPICS = "http://dmaap.api.simpledemo.onap.org:3904/topics"
BASIC_AUTH = {'username': 'dcae@dcae.onap.org', 'password': 'demo123456!'}


@patch.object(Dmaap, "send_message_json")
def test_should_get_all_events(send_message_mock):
    Dmaap.get_all_events(BASIC_AUTH)
    verify_send_event_to_ves_called(send_message_mock, DMAAP_EVENTS_URL)

@patch.object(Dmaap, "send_message_json")
def test_should_get_events_from_topic(send_message_mock):
    Dmaap.get_events_for_topic(TOPIC, BASIC_AUTH)
    verify_send_event_to_ves_called(send_message_mock, DMAAP_EVENTS_FROM_TOPIC_URL)

@patch.object(Dmaap, "send_message_json")
def test_should_get_all_topics(send_message_mock):
    Dmaap.get_all_topics(BASIC_AUTH)
    verify_send_event_to_ves_called(send_message_mock, DMAAP_GET_ALL_TOPICS)

def verify_send_event_to_ves_called(send_message_mock, dmaap_url):
    send_message_mock.assert_called_once_with(
        GET_HTTP_METHOD, ACTION, dmaap_url,
        basic_auth=BASIC_AUTH
    )

@patch.object(Dmaap, "send_message")
def test_post_event_success(send_message_mock):
    post_response = mock.MagicMock()
    post_response.status_code = 200 #success case
    send_message_mock.return_value = post_response
    try:
        Dmaap.post_event("test_topic", "test_event")
    except RequestException:
        assert False  # Exception is not expected


@patch.object(Dmaap, "send_message")
def test_post_event_failure(send_message_mock):
    send_message_mock.side_effect = ConnectionFailed('Can not connect to dmaap')
    with pytest.raises(ConnectionFailed):
        Dmaap.post_event("test_topic", "test_event")