summaryrefslogtreecommitdiffstats
path: root/components/pm-subscription-handler/tests/test_controller.py
diff options
context:
space:
mode:
Diffstat (limited to 'components/pm-subscription-handler/tests/test_controller.py')
-rwxr-xr-xcomponents/pm-subscription-handler/tests/test_controller.py64
1 files changed, 44 insertions, 20 deletions
diff --git a/components/pm-subscription-handler/tests/test_controller.py b/components/pm-subscription-handler/tests/test_controller.py
index 7b0a8b19..ce540fb7 100755
--- a/components/pm-subscription-handler/tests/test_controller.py
+++ b/components/pm-subscription-handler/tests/test_controller.py
@@ -23,27 +23,23 @@ from http import HTTPStatus
from mod import aai_client, db
from mod.api.controller import status, post_subscription, get_subscription_by_name, \
get_subscriptions, get_meas_group_with_nfs, delete_subscription_by_name, update_admin_state, \
- delete_meas_group_by_name, put_nf_filter
+ delete_meas_group_by_name, post_meas_group, put_nf_filter
from mod.api.services.measurement_group_service import query_meas_group_by_name
from tests.base_setup import BaseClassSetup
from mod.api.custom_exception import InvalidDataException, DataConflictException
-from mod.api.db_models import SubscriptionModel, NfMeasureGroupRelationalModel
-from mod.subscription import SubNfState
+from mod.api.db_models import SubscriptionModel, \
+ NfMeasureGroupRelationalModel, MeasurementGroupModel
from mod.network_function import NetworkFunctionFilter
from tests.base_setup import create_subscription_data, create_multiple_subscription_data, \
create_multiple_network_function_data
from mod.api.services import measurement_group_service, nf_service, subscription_service
+from mod.api.services.measurement_group_service import MgNfState
class ControllerTestCase(BaseClassSetup):
- @classmethod
- def setUpClass(cls):
- super().setUpClass()
-
def setUp(self):
super().setUp()
- super().setUpAppConf()
with open(os.path.join(os.path.dirname(__file__), 'data/aai_xnfs.json'), 'r') as data:
self.aai_response_data = data.read()
with open(os.path.join(os.path.dirname(__file__), 'data/aai_model_info.json'), 'r') as data:
@@ -52,13 +48,6 @@ class ControllerTestCase(BaseClassSetup):
'data/create_subscription_request.json'), 'r') as data:
self.subscription_request = data.read()
- def tearDown(self):
- super().tearDown()
-
- @classmethod
- def tearDownClass(cls):
- super().tearDownClass()
-
def test_status_response_healthy(self):
self.assertEqual(status()['status'], 'healthy')
@@ -90,11 +79,14 @@ class ControllerTestCase(BaseClassSetup):
NfMeasureGroupRelationalModel.measurement_grp_name == mes_grp_name)).all()
for published_event in msr_grp_nf_rel:
self.assertEqual(published_event.nf_measure_grp_status,
- SubNfState.PENDING_CREATE.value)
+ MgNfState.PENDING_CREATE.value)
self.assertEqual(response[1], 201)
def test_post_subscription_duplicate_sub(self):
# Posting the same subscription request stored in previous test to get duplicate response
+ subscription = create_subscription_data('ExtraPM-All-gNB-R2B')
+ db.session.add(subscription)
+ db.session.commit()
response = post_subscription(json.loads(self.subscription_request))
self.assertEqual(response[1], 409)
self.assertEqual(response[0], 'subscription Name: ExtraPM-All-gNB-R2B already exists.')
@@ -185,7 +177,7 @@ class ControllerTestCase(BaseClassSetup):
measurement_group_service. \
apply_nf_status_to_measurement_group(nf.nf_name, sub.measurement_groups[0].
measurement_group_name,
- SubNfState.PENDING_CREATE.value)
+ MgNfState.PENDING_CREATE.value)
db.session.commit()
mg_with_nfs, status_code = get_meas_group_with_nfs('sub1', 'MG1')
self.assertEqual(status_code, HTTPStatus.OK.value)
@@ -206,6 +198,38 @@ class ControllerTestCase(BaseClassSetup):
error, status_code = get_meas_group_with_nfs('sub1', 'MG1')
self.assertEqual(status_code, HTTPStatus.INTERNAL_SERVER_ERROR.value)
+ @patch.object(aai_client, '_get_all_aai_nf_data')
+ @patch.object(aai_client, 'get_aai_model_data')
+ def test_post_meas_group(self, mock_model_aai, mock_aai):
+ mock_aai.return_value = json.loads(self.aai_response_data)
+ mock_model_aai.return_value = json.loads(self.good_model_info)
+ subscription_data = create_subscription_data('Post_MG')
+ measurement_grp = {'measurementGroup': {
+ 'measurementGroupName': 'MG2',
+ 'administrativeState': 'UNLOCKED',
+ 'fileBasedGP': 15,
+ 'fileLocation': '/pm/pm.xml',
+ 'measurementTypes': '[{ "measurementType": "countera" }, '
+ '{ "measurementType": "counterb" }]',
+ 'managedObjectDNsBasic': '[{ "DN":"dna"},{"DN":"dnb"}]'}}
+ db.session.add(subscription_data)
+ db.session.commit()
+ db.session.remove()
+ _, status_code = post_meas_group('Post_MG', 'MG3', measurement_grp)
+ self.assertEqual(status_code, 201)
+
+ def test_post_meas_group_with_duplicate(self):
+ subscription_data = create_subscription_data('Post_MG')
+ measurement_grp = MeasurementGroupModel('Post_MG', 'MG1', 'UNLOCKED', 15, '/pm/pm.xml',
+ '[{ "measurementType": "countera" }, '
+ '{ "measurementType": "counterb" }]',
+ '[{ "DN":"dna"},{"DN":"dnb"}]')
+ db.session.add(subscription_data)
+ db.session.commit()
+ db.session.remove()
+ _, status_code = post_meas_group('Post_MG', 'MG1', measurement_grp)
+ self.assertEqual(status_code, 409)
+
def test_delete_sub_when_state_unlocked(self):
subscription_unlocked_data = create_subscription_data('MG_unlocked')
subscription_unlocked_data.measurement_groups[0].measurement_group_name = 'unlock'
@@ -305,7 +329,7 @@ class ControllerTestCase(BaseClassSetup):
measurement_group_service. \
apply_nf_status_to_measurement_group(nf.nf_name, sub.measurement_groups[0].
measurement_group_name,
- SubNfState.CREATED.value)
+ MgNfState.CREATED.value)
db.session.commit()
response = update_admin_state('sub1', 'MG1', {'administrativeState': 'LOCKED'})
self.assertEqual(response[1], HTTPStatus.OK.value)
@@ -315,7 +339,7 @@ class ControllerTestCase(BaseClassSetup):
self.assertEqual(mg_with_nfs['measurementGroupName'], 'MG1')
self.assertEqual(mg_with_nfs['administrativeState'], 'LOCKING')
for nf in mg_with_nfs['networkFunctions']:
- self.assertEqual(nf['nfMgStatus'], SubNfState.PENDING_DELETE.value)
+ self.assertEqual(nf['nfMgStatus'], MgNfState.PENDING_DELETE.value)
@patch('mod.pmsh_config.AppConfig.publish_to_topic', MagicMock(return_value=None))
@patch.object(aai_client, '_get_all_aai_nf_data')
@@ -340,7 +364,7 @@ class ControllerTestCase(BaseClassSetup):
self.assertEqual(mg_with_nfs['measurementGroupName'], 'MG2')
self.assertEqual(mg_with_nfs['administrativeState'], 'UNLOCKED')
for nf in mg_with_nfs['networkFunctions']:
- self.assertEqual(nf['nfMgStatus'], SubNfState.PENDING_CREATE.value)
+ self.assertEqual(nf['nfMgStatus'], MgNfState.PENDING_CREATE.value)
@patch('mod.api.services.measurement_group_service.update_admin_status',
MagicMock(side_effect=InvalidDataException('Bad request')))