road-runner-common 0.11.0

Shared Rust utilities for exchange ecosystem backend services.
Documentation
#![cfg(feature = "web")]

use actix_web::{test::TestRequest, HttpMessage};
use road_runner_common::middleware::RequestId;
use road_runner_common::response::ApiResponse;
use road_runner_common::web::{request_id, ApiResponseActixExt};

#[test]
fn request_id_reads_extension_when_present() {
    // Arrange
    let req = TestRequest::default().to_http_request();
    req.extensions_mut().insert(RequestId("rid-123".to_string()));

    // Act
    let id = request_id(&req);

    // Assert
    assert_eq!(id, "rid-123");
}

#[test]
fn request_id_generates_uuid_when_missing() {
    // Arrange
    let req = TestRequest::default().to_http_request();

    // Act
    let id = request_id(&req);

    // Assert
    assert!(uuid::Uuid::parse_str(&id).is_ok());
}

#[test]
fn api_response_actix_ext_uses_request_id_for_ok_and_empty() {
    // Arrange
    let req = TestRequest::default().to_http_request();
    req.extensions_mut().insert(RequestId("rid-ext".to_string()));

    // Act
    let ok = ApiResponse::ok_from_req(&req, 42);
    let empty = ApiResponse::empty_ok_from_req(&req);

    // Assert
    assert_eq!(ok.data, Some(42));
    assert_eq!(ok.meta.request_id, "rid-ext");
    assert!(empty.data.is_none());
    assert_eq!(empty.meta.request_id, "rid-ext");
}