viewpoint-core 0.4.3

High-level browser automation API for Viewpoint
Documentation
use super::*;

fn make_test_request() -> Request {
    let mut headers = HashMap::new();
    headers.insert("Content-Type".to_string(), "application/json".to_string());
    headers.insert("Accept".to_string(), "text/html".to_string());

    Request {
        url: "https://example.com/api/users".to_string(),
        method: "POST".to_string(),
        headers,
        post_data: Some(r#"{"name":"test"}"#.to_string()),
        resource_type: ResourceType::Fetch,
        frame_id: "frame-1".to_string(),
        is_navigation: false,
        connection: None,
        session_id: None,
        request_id: None,
        redirected_from: None,
        redirected_to: None,
        timing: None,
        failure_text: None,
    }
}

#[test]
fn test_request_accessors() {
    let request = make_test_request();

    assert_eq!(request.url(), "https://example.com/api/users");
    assert_eq!(request.method(), "POST");
    assert_eq!(request.resource_type(), ResourceType::Fetch);
    assert_eq!(request.post_data(), Some(r#"{"name":"test"}"#));
}

#[test]
fn test_header_value_case_insensitive() {
    let request = make_test_request();

    assert_eq!(
        request.header_value("content-type"),
        Some("application/json")
    );
    assert_eq!(
        request.header_value("Content-Type"),
        Some("application/json")
    );
    assert_eq!(
        request.header_value("CONTENT-TYPE"),
        Some("application/json")
    );
    assert_eq!(request.header_value("X-Custom"), None);
}

#[test]
fn test_post_data_json() {
    let request = make_test_request();

    #[derive(serde::Deserialize)]
    struct TestData {
        name: String,
    }

    let data: TestData = request.post_data_json().unwrap().unwrap();
    assert_eq!(data.name, "test");
}