Skip to main content
Glama
test_nvd.py3.96 kB
from mcp_nvd.nvd import NVD import logging import json LOGGER = logging.getLogger(__name__) CVE_ID = "CVE-2025-30065" def test_fetch_cve(): cve_id = CVE_ID nvd = NVD(cve_id=cve_id) cve_list = nvd.get_cve_list() cve_data = cve_list[0] if cve_list else None LOGGER.info(f"Using constructor method to fetch CVE data for {cve_id}") # Check if the data is not None and contains expected keys assert cve_data is not None, "CVE data should not be None" assert not isinstance(cve_data, str), "CVE data should not be a string" assert len(cve_data) > 0, "CVE data should only contain one item" assert isinstance(cve_list, list), "CVE data should be a list" assert isinstance(cve_data, dict), "CVE data should contain dictionaries" assert key_exists_in_dict('id', cve_data), "CVE data should contain 'id' key" assert cve_data['cve']['id'] == cve_id, f"CVE ID should be {cve_id}" assert key_exists_in_dict('description', cve_data), "CVE data should contain 'description' key" assert len(cve_data['cve']['descriptions']) > 0, "CVE data should contain 1 or more descriptions" for description in cve_data['cve']['descriptions']: assert isinstance(description, dict), "Description should be a dictionary" assert 'value' in description, "Description should contain 'value' key" assert description['value'] is not None, "Description value should not be None" LOGGER.info(f"Description ({description['lang']}) value: {description['value']}") assert key_exists_in_dict('references', cve_data), "CVE data should contain 'references' key" assert cve_data['cve']['references'] is not None, "CVE data should contain references" assert cve_data['cve']['references'][0]['url'] is not None, "CVE data should contain 'url' key in references" LOGGER.info(f"Reference check: {cve_data['cve']['references'][0]['url']}") def test_fetch_cve_no_constructor(): cve_id = CVE_ID nvd = NVD(cve_id=cve_id) cve_list = nvd.get_cve_list() cve_data = cve_list[0] if cve_list else None LOGGER.info(f"Using non-constructor method to fetch CVE data for {cve_id}") # Check if the data is not None and contains expected keys assert cve_data is not None, "CVE data should not be None" assert not isinstance(cve_data, str), "CVE data should not be a string" assert len(cve_list) == 1, "CVE data should only contain one item" assert isinstance(cve_data, dict), "CVE data should contain dictionaries" assert key_exists_in_dict('id', cve_data), "CVE data should contain 'id' key" assert cve_data['cve']['id'] == cve_id, f"CVE ID should be {cve_id}" def test_fetch_description(country_code='en'): cve_id = CVE_ID nvd = NVD(cve_id=cve_id) cve_list = nvd.get_cve_list() cve_data = cve_list[0] if cve_list else None descriptions = cve_data['cve']['descriptions'] description_value = None for description in descriptions: if description.get('lang') == country_code: description_value = description.get('value') break else: pass assert description_value is not None, f"No description found for language '{country_code}'" LOGGER.info(f"Description for language '{country_code}': {description_value}") def test_fetch_references(): cve_id = CVE_ID nvd = NVD(cve_id=cve_id) cve_list = nvd.get_cve_list() cve_data = cve_list[0] if cve_list else None for reference in cve_data['cve']['references']: assert isinstance(reference, dict), "Reference should be a dictionary" assert 'url' in reference, "Reference should contain 'url' key" assert reference['url'] is not None, "Reference URL should not be None" LOGGER.info(f"Reference URL: {reference['url']}") def key_exists_in_dict(key, d): for key in d: if key in d: d = d[key] else: return False return True

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gkhays/mcp-nvd-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server