+Verify Get single subscription with Network Functions None
+ [Tags] PMSH_13
+ [Documentation] Verify Get single subscription with Network Functions when there is no defined subscription
+ [Timeout] 60 seconds
+ ${resp}= GetSubsCall ${SUBSCRIPTION_ENDPOINT}/sub_none ""
+ Should Be True ${resp.status_code} == 404
+ Should Be Equal As Strings ${resp.json()['error']} Subscription was not defined with the name : sub_none
+
+Verify Update Measurement Group admin status from Unlocked to Locking
+ [Tags] PMSH_14
+ [Documentation] Verify Update Measurement Group admin status from Unlocked to Locking
+ [Timeout] 60 seconds
+ ${json_string}= Set Variable {"administrativeState": "LOCKED"}
+ ${json}= evaluate json.loads('''${json_string}''') json
+ ${resp}= PutMsgGrpStatusCall /subscription/subs_01/measurementGroups/msg_grp_01/adminState ${json}
+ Should Be True ${resp.status_code} == 200
+ Should Contain ${resp.json()} Successfully updated admin state
+ ${resp}= GetMeasGrpWithNFSCall /subscription/subs_01/measurementGroups/msg_grp_01
+ ${nf_length}= Get length ${resp.json()['networkFunctions']}
+ Should Be True ${resp.status_code} == 200
+ Should Be Equal As Strings ${resp.json()['subscriptionName']} subs_01
+ Should Be Equal As Strings ${resp.json()['measurementGroupName']} msg_grp_01
+ Should Be Equal As Strings ${resp.json()['administrativeState']} LOCKING
+ Should Be Equal As Strings ${resp.json()['networkFunctions'][0]['nfName']} pnf-existing
+ Should Be Equal As Strings ${resp.json()['networkFunctions'][0]['nfMgStatus']} PENDING_DELETE
+ Should be equal as numbers ${nf_length} 1
+
+Verify Update Measurement Group admin status with locking in progress
+ [Tags] PMSH_15
+ [Documentation] Verify Update Measurement Group admin status with locking in progress
+ [Timeout] 60 seconds
+ ${json_string}= Set Variable {"administrativeState": "LOCKED"}
+ ${json}= evaluate json.loads('''${json_string}''') json
+ ${resp}= PutMsgGrpStatusCall /subscription/subs_01/measurementGroups/msg_grp_01/adminState ${json}
+ Should Be True ${resp.status_code} == 409
+ Should Contain ${resp.json()} Cannot update admin status as Locked request is in progress for sub name: subs_01 and meas group name: msg_grp_01
+
+Verify Measurement Group admin status update from Locking to Locked
+ [Tags] PMSH_16
+ [Documentation] Verify Measurement Group admin status update from Locking to Locked
+ [Timeout] 60 seconds
+ AddDeletePolicyResponeToMrSim
+ Sleep 31 seconds Ensure Policy response on MR is picked up
+ ResetMrSim
+ ${resp}= GetMeasGrpCall /subscription/subs_01/measurementGroups/msg_grp_01
+ Should Be Equal As Strings ${resp.json()['measurementGroupName']} msg_grp_01
+ Should Be Equal As Strings ${resp.json()['subscriptionName']} subs_01
+ Should Be Equal As Strings ${resp.json()['administrativeState']} LOCKED
+ ${nf_length}= Get length ${resp.json()['networkFunctions']}
+ Should be equal as numbers ${nf_length} 0
+
+Verify Update Measurement Group admin status to unlocked with no Network Functions in Subscription
+ [Tags] PMSH_17
+ [Documentation] Verify Update Measurement Group admin status to unlocked with no Network Functions in Subscription
+ [Timeout] 60 seconds
+ ${resp}= GetSubsCall ${SUBSCRIPTION_ENDPOINT}/subs_01 ""
+ ${nf_length}= Get length ${resp.json()['subscription']['nfs']}
+ Should be equal as numbers ${nf_length} 0
+ ${json_string}= Set Variable {"administrativeState": "UNLOCKED"}
+ ${json}= evaluate json.loads('''${json_string}''') json
+ ${resp}= PutMsgGrpStatusCall /subscription/subs_01/measurementGroups/msg_grp_01/adminState ${json}
+ Should Be True ${resp.status_code} == 200
+ Should Contain ${resp.json()} Successfully updated admin state
+ ${resp}= GetMeasGrpWithNFSCall /subscription/subs_01/measurementGroups/msg_grp_01
+ ${nf_length}= Get length ${resp.json()['networkFunctions']}
+ Should Be True ${resp.status_code} == 200
+ Should Be Equal As Strings ${resp.json()['subscriptionName']} subs_01
+ Should Be Equal As Strings ${resp.json()['measurementGroupName']} msg_grp_01
+ Should Be Equal As Strings ${resp.json()['administrativeState']} UNLOCKED
+ Should Be Equal As Strings ${resp.json()['networkFunctions'][0]['nfName']} pnf-existing
+ Should Be Equal As Strings ${resp.json()['networkFunctions'][0]['nfMgStatus']} PENDING_CREATE
+ Should be equal as numbers ${nf_length} 1
+
+Verify Update Measurement Group admin status from Locked to Unlocked with Network function present in subscription
+ [Tags] PMSH_18
+ [Documentation] Verify Update Measurement Group admin status from Locked to Unlocked with Network function present in subscription
+ [Timeout] 60 seconds
+ ${json_string}= Set Variable {"administrativeState": "UNLOCKED"}
+ ${json}= evaluate json.loads('''${json_string}''') json
+ ${resp}= PutMsgGrpStatusCall /subscription/subs_01/measurementGroups/msg_grp_02/adminState ${json}
+ Should Be True ${resp.status_code} == 200
+ Should Contain ${resp.json()} Successfully updated admin state
+ ${resp}= GetMeasGrpWithNFSCall /subscription/subs_01/measurementGroups/msg_grp_02
+ ${nf_length}= Get length ${resp.json()['networkFunctions']}
+ Should Be True ${resp.status_code} == 200
+ Should Be Equal As Strings ${resp.json()['subscriptionName']} subs_01
+ Should Be Equal As Strings ${resp.json()['measurementGroupName']} msg_grp_02
+ Should Be Equal As Strings ${resp.json()['administrativeState']} UNLOCKED
+ Should Be Equal As Strings ${resp.json()['networkFunctions'][0]['nfName']} pnf-existing
+ Should Be Equal As Strings ${resp.json()['networkFunctions'][0]['nfMgStatus']} PENDING_CREATE
+ Should be equal as numbers ${nf_length} 1
+
+Verify Update Measurement Group admin status with no change
+ [Tags] PMSH_19
+ [Documentation] Verify Update Measurement Group admin status with no change
+ [Timeout] 60 seconds
+ ${json_string}= Set Variable {"administrativeState": "UNLOCKED"}
+ ${json}= evaluate json.loads('''${json_string}''') json
+ ${resp}= PutMsgGrpStatusCall /subscription/subs_01/measurementGroups/msg_grp_01/adminState ${json}
+ Should Be True ${resp.status_code} == 400
+ Should Contain ${resp.json()} Measurement group is already in UNLOCKED state for sub name: subs_01 and meas group name: msg_grp_01
+
+Verify Update Measurement Group admin status for invalid measurement group
+ [Tags] PMSH_20
+ [Documentation] Verify Update Measurement Group admin status for invalid measurement group
+ [Timeout] 60 seconds
+ ${json_string}= Set Variable {"administrativeState": "LOCKED"}
+ ${json}= evaluate json.loads('''${json_string}''') json
+ ${resp}= PutMsgGrpStatusCall /subscription/subs_01/measurementGroups/msg_grp_11/adminState ${json}
+ Should Be True ${resp.status_code} == 400
+ Should Contain ${resp.json()} Requested measurement group not available for admin status update
+
+Verify Get subscriptions with Network Functions
+ [Tags] PMSH_21
+ [Documentation] Verify Get subscriptions with Network Functions
+ [Timeout] 60 seconds
+ ${json_value}= json_from_file ${CREATE_SECOND_SUBSCRIPTION_DATA}
+ ${resp_post}= PostSubscriptionCall ${SUBSCRIPTION_ENDPOINT} ${json_value}
+ ${resp}= GetSubsCall ${SUBSCRIPTION_ENDPOINT} ""
+ ${nf_length_first}= Get length ${resp.json()[0]['subscription']['nfs']}
+ ${nf_length_second}= Get length ${resp.json()[1]['subscription']['nfs']}
+ Should Be True ${resp.status_code} == 200
+ Should Be Equal As Strings ${resp.json()[0]['subscription']['subscriptionName']} subs_01
+ Should Be Equal As Strings ${resp.json()[0]['subscription']['nfs'][0]} pnf-existing
+ Should Be Equal As Strings ${resp.json()[0]['subscription']['measurementGroups'][0]['measurementGroup']['measurementGroupName']} msg_grp_02
+ Should be equal as numbers ${nf_length_first} 1
+ Should Be Equal As Strings ${resp.json()[1]['subscription']['subscriptionName']} subs_02
+ Should Be Equal As Strings ${resp.json()[1]['subscription']['nfs'][0]} pnf-existing
+ Should Be Equal As Strings ${resp.json()[1]['subscription']['measurementGroups'][0]['measurementGroup']['measurementGroupName']} msg_grp_04
+ Should be equal as numbers ${nf_length_second} 1
+
+*** Keywords ***