db_nsds_text,
vnfd_exploit_text,
vnfd_exploit_fixed_text,
+ db_sfc_nsds_text,
)
from osm_nbi.descriptor_topics import VnfdTopic, NsdTopic
from osm_nbi.engine import EngineException
"Wrong exception text",
)
+ def test_validate_vnffgd_descriptor_on_valid_descriptor(self):
+ indata = yaml.safe_load(db_sfc_nsds_text)[0]
+ vnffgd = indata.get("vnffgd")
+ fg = vnffgd[0]
+ self.topic.validate_vnffgd_data(fg, indata)
+
+ def test_validate_vnffgd_descriptor_not_matching_nfp_position_element(self):
+ indata = yaml.safe_load(db_sfc_nsds_text)[0]
+ vnffgd = indata.get("vnffgd")
+ fg = vnffgd[0]
+ nfpd = fg.get("nfpd")[0]
+ with self.assertRaises(EngineException) as e:
+ fg.update({"nfp-position-element": [{"id": "test1"}]})
+ self.topic.validate_vnffgd_data(fg, indata)
+ self.assertEqual(
+ e.exception.http_code,
+ HTTPStatus.UNPROCESSABLE_ENTITY,
+ "Wrong HTTP status code",
+ )
+ self.assertIn(
+ norm(
+ "Error at vnffgd nfpd[id='{}']:nfp-position-element-id='{}' "
+ "does not match any nfp-position-element".format(nfpd["id"], "test")
+ ),
+ norm(str(e.exception)),
+ "Wrong exception text",
+ )
+
+ def test_validate_vnffgd_descriptor_not_matching_constituent_base_element_id(
+ self,
+ ):
+ indata = yaml.safe_load(db_sfc_nsds_text)[0]
+ vnffgd = indata.get("vnffgd")
+ fg = vnffgd[0]
+ fg["nfpd"][0]["position-desc-id"][0]["cp-profile-id"][0][
+ "constituent-profile-elements"
+ ][0]["constituent-base-element-id"] = "error_vnf"
+ with self.assertRaises(EngineException) as e:
+ self.topic.validate_vnffgd_data(fg, indata)
+ self.assertEqual(
+ e.exception.http_code,
+ HTTPStatus.UNPROCESSABLE_ENTITY,
+ "Wrong HTTP status code",
+ )
+ self.assertIn(
+ norm(
+ "Error at vnffgd constituent_profile[id='{}']:vnfd-id='{}' "
+ "does not match any constituent-base-element-id".format(
+ "vnf1", "error_vnf"
+ )
+ ),
+ norm(str(e.exception)),
+ "Wrong exception text",
+ )
+
if __name__ == "__main__":
unittest.main()