Home / File/ test_ssrf_protection.py — langchain Source File

test_ssrf_protection.py — langchain Source File

Architecture documentation for test_ssrf_protection.py, a python file in the langchain codebase. 4 imports, 0 dependents.

Entity Profile

Dependency Diagram

graph LR
  0a8d2a49_20ba_b7b4_8bfd_e6c768864657["test_ssrf_protection.py"]
  8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"]
  0a8d2a49_20ba_b7b4_8bfd_e6c768864657 --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3
  120e2591_3e15_b895_72b6_cb26195e40a6["pytest"]
  0a8d2a49_20ba_b7b4_8bfd_e6c768864657 --> 120e2591_3e15_b895_72b6_cb26195e40a6
  6e58aaea_f08e_c099_3cc7_f9567bfb1ae7["pydantic"]
  0a8d2a49_20ba_b7b4_8bfd_e6c768864657 --> 6e58aaea_f08e_c099_3cc7_f9567bfb1ae7
  b867f5d7_c564_7f0d_fdb5_876923e238ef["langchain_core._security._ssrf_protection"]
  0a8d2a49_20ba_b7b4_8bfd_e6c768864657 --> b867f5d7_c564_7f0d_fdb5_876923e238ef
  style 0a8d2a49_20ba_b7b4_8bfd_e6c768864657 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Tests for SSRF protection utilities."""

from typing import Any

import pytest
from pydantic import BaseModel, ValidationError

from langchain_core._security._ssrf_protection import (
    SSRFProtectedUrl,
    SSRFProtectedUrlRelaxed,
    is_cloud_metadata,
    is_localhost,
    is_private_ip,
    is_safe_url,
    validate_safe_url,
)


class TestIPValidation:
    """Tests for IP address validation functions."""

    def test_is_private_ip_ipv4(self) -> None:
        """Test private IPv4 address detection."""
        assert is_private_ip("10.0.0.1") is True
        assert is_private_ip("172.16.0.1") is True
        assert is_private_ip("192.168.1.1") is True
        assert is_private_ip("127.0.0.1") is True
        assert is_private_ip("169.254.169.254") is True
        assert is_private_ip("0.0.0.1") is True

    def test_is_private_ip_ipv6(self) -> None:
        """Test private IPv6 address detection."""
        assert is_private_ip("::1") is True  # Loopback
        assert is_private_ip("fc00::1") is True  # Unique local
        assert is_private_ip("fe80::1") is True  # Link-local
        assert is_private_ip("ff00::1") is True  # Multicast

    def test_is_private_ip_public(self) -> None:
        """Test that public IPs are not flagged as private."""
        assert is_private_ip("8.8.8.8") is False
        assert is_private_ip("1.1.1.1") is False
        assert is_private_ip("151.101.1.140") is False

    def test_is_private_ip_invalid(self) -> None:
        """Test handling of invalid IP addresses."""
        assert is_private_ip("not-an-ip") is False
        assert is_private_ip("999.999.999.999") is False

    def test_is_cloud_metadata_ips(self) -> None:
        """Test cloud metadata IP detection."""
        assert is_cloud_metadata("example.com", "169.254.169.254") is True
        assert is_cloud_metadata("example.com", "169.254.170.2") is True
        assert is_cloud_metadata("example.com", "100.100.100.200") is True

    def test_is_cloud_metadata_hostnames(self) -> None:
        """Test cloud metadata hostname detection."""
        assert is_cloud_metadata("metadata.google.internal") is True
        assert is_cloud_metadata("metadata") is True
        assert is_cloud_metadata("instance-data") is True
        assert is_cloud_metadata("METADATA.GOOGLE.INTERNAL") is True  # Case insensitive
// ... (238 more lines)

Subdomains

Dependencies

  • langchain_core._security._ssrf_protection
  • pydantic
  • pytest
  • typing

Frequently Asked Questions

What does test_ssrf_protection.py do?
test_ssrf_protection.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, Serialization subdomain.
What does test_ssrf_protection.py depend on?
test_ssrf_protection.py imports 4 module(s): langchain_core._security._ssrf_protection, pydantic, pytest, typing.
Where is test_ssrf_protection.py in the architecture?
test_ssrf_protection.py is located at libs/core/tests/unit_tests/test_ssrf_protection.py (domain: CoreAbstractions, subdomain: Serialization, directory: libs/core/tests/unit_tests).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free