+
+
+class TestNotificationUtils(unittest.TestCase):
+ def setUp(self):
+ subscription_id = 1
+ auth_params = {
+ "authType": ["BASIC"],
+ "paramsBasic": {
+ "username": "username",
+ "password": "password"
+ }
+ }
+ notification_types = ["VnfLcmOperationOccurrenceNotification"]
+ operation_types = ["INSTANTIATE"]
+ operation_states = ["STARTING"]
+ vnf_instance_filter = {
+ 'vnfdIds': ['99442b18-a5c7-11e8-998c-bf1755941f13', '9fe4080c-b1a3-11e8-bb96-645106374fd3'],
+ 'vnfInstanceIds': ['99442b18-a5c7-11e8-998c-bf1755941f12'],
+ 'vnfInstanceNames': ['demo'],
+ 'vnfProductsFromProviders': {
+ 'vnfProvider': 'string',
+ 'vnfProducts': {
+ 'vnfProductName': 'string',
+ 'versions': {
+ 'vnfSoftwareVersion': 'string',
+ 'vnfdVersions': 'string'
+ }
+ }
+ }
+ }
+ links = {
+ "self": "demo"
+ }
+ SubscriptionModel(subscription_id=subscription_id, callback_uri="http://demo",
+ auth_info=json.dumps(auth_params),
+ notification_types=json.dumps(notification_types),
+ operation_types=json.dumps(operation_types),
+ operation_states=json.dumps(operation_states),
+ vnf_instance_filter=json.dumps(vnf_instance_filter),
+ links=json.dumps(links)).save()
+
+ def tearDown(self):
+ SubscriptionModel.objects.all().delete()
+
+ @mock.patch('requests.post')
+ def test_send_notification(self, mock_post):
+ dummy_notification = {
+ "vnfInstanceId": "99442b18-a5c7-11e8-998c-bf1755941f13",
+ "operationState": "STARTING",
+ "operation": "INSTANTIATE",
+ "_links": {}
+ }
+ mock_post.return_value.status_code = 204
+ NotificationsUtil().send_notification(dummy_notification)
+ mock_post.assert_called_once()
+
+ @mock.patch('requests.post')
+ def test_send_notification_with_empty_filters(self, mock_post):
+ dummy_notification = {
+ "vnfInstanceId": "9fe4080c-b1a3-11e8-bb96-645106374fd3",
+ "operationState": "",
+ "operation": "",
+ "_links": {}
+ }
+ mock_post.return_value.status_code = 204
+ NotificationsUtil().send_notification(dummy_notification)
+ mock_post.assert_called_once()
+
+ @mock.patch('requests.post')
+ def test_send_notification_unmatched_filters(self, mock_post):
+ dummy_notification = {
+ "vnfInstanceId": "9fe4080c-b1a3-11e8-bb96-xxxxx",
+ "operationState": "DUMMY",
+ "operation": "DUMMY",
+ }
+ NotificationsUtil().send_notification(dummy_notification)
+ mock_post.assert_not_called()