def test_memory_system_server_exposes_routes():
    from memory_system_api.server import app

    paths = {route.path for route in app.routes}
    assert "/memory-system/users" in paths
    assert "/memory-system/messages" in paths
    assert "/memory-system/sessions/{session_id}/context" in paths
    context_methods = {
        method
        for route in app.routes
        if getattr(route, "path", "") == "/memory-system/sessions/{session_id}/context"
        for method in getattr(route, "methods", set())
    }
    assert {"GET", "POST"} <= context_methods
    assert "/memory-system/search" in paths
    assert "/memory-system/resources" in paths
    assert "/memory-system/memories" in paths
    assert "/memory-system/memories/content" in paths
    assert "/memory-system/users/{user_id}/profile" in paths
    task_methods = {
        method
        for route in app.routes
        if getattr(route, "path", "") == "/memory-system/openviking/tasks/{task_id}"
        for method in getattr(route, "methods", set())
    }
    profile_methods = {
        method
        for route in app.routes
        if getattr(route, "path", "") == "/memory-system/users/{user_id}/profile"
        for method in getattr(route, "methods", set())
    }
    assert {"GET", "POST"} <= task_methods
    assert {"GET", "POST"} <= profile_methods
    resource_methods = {
        method
        for route in app.routes
        if getattr(route, "path", "") == "/memory-system/resources"
        for method in getattr(route, "methods", set())
    }
    assert {"DELETE", "POST"} <= resource_methods
    memory_methods = {
        method
        for route in app.routes
        if getattr(route, "path", "") == "/memory-system/memories"
        for method in getattr(route, "methods", set())
    }
    memory_content_methods = {
        method
        for route in app.routes
        if getattr(route, "path", "") == "/memory-system/memories/content"
        for method in getattr(route, "methods", set())
    }
    assert {"DELETE", "GET", "POST"} <= memory_methods
    assert {"GET"} <= memory_content_methods


def test_memory_system_messages_does_not_require_account_key_header():
    from memory_system_api.server import app

    route = next(route for route in app.routes if getattr(route, "path", "") == "/memory-system/messages")

    assert all(getattr(dependency.call, "__name__", "") != "account_key_header" for dependency in route.dependant.dependencies)
