//! OCI Integration Tests

#![allow(unused_variables)]

use std::path::PathBuf;

use provisioning_orchestrator::oci::{OciArtifact, OciManager};

#[tokio::test]
async fn test_oci_manager_initialization() {
    let manager = OciManager::new(
        "http://localhost:5000".to_string(),
        "provisioning-extensions".to_string(),
        PathBuf::from("/tmp/oci-cache"),
    );

    assert_eq!(true, true); // Manager created successfully
}

#[tokio::test]
async fn test_oci_cache_clear() {
    let manager = OciManager::new(
        "http://localhost:5000".to_string(),
        "provisioning-extensions".to_string(),
        PathBuf::from("/tmp/oci-cache"),
    );

    // Clear empty cache should succeed
    manager.clear_cache().await;
}

#[test]
fn test_oci_artifact_creation() {
    let artifact = OciArtifact {
        name: "test-package".to_string(),
        version: "1.0.0".to_string(),
        digest: "sha256:abcdef1234567890".to_string(),
        size: 1024,
        media_type: "application/vnd.oci.image.manifest.v1+json".to_string(),
        created_at: chrono::Utc::now(),
    };

    assert_eq!(artifact.name, "test-package");
    assert_eq!(artifact.version, "1.0.0");
    assert_eq!(artifact.size, 1024);
    assert!(artifact.digest.starts_with("sha256:"));
}

#[test]
fn test_oci_artifact_media_types() {
    let manifest_type = "application/vnd.oci.image.manifest.v1+json";
    let config_type = "application/vnd.oci.image.config.v1+json";
    let layer_type = "application/vnd.oci.image.layer.v1.tar+gzip";

    assert!(manifest_type.contains("manifest"));
    assert!(config_type.contains("config"));
    assert!(layer_type.contains("layer"));
}

#[tokio::test]
async fn test_cache_directory_creation() {
    let cache_dir = PathBuf::from("/tmp/oci-cache-test");

    let manager = OciManager::new(
        "http://localhost:5000".to_string(),
        "provisioning-extensions".to_string(),
        cache_dir.clone(),
    );

    // Manager should handle cache directory
    assert_eq!(true, true);
}
