diff --git a/Cargo.lock b/Cargo.lock index ffd210a..3669416 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -66,6 +66,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "alloca" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7d05ea6aea7e9e64d25b9156ba2fee3fdd659e34e41063cd2fc7cd020d7f4" +dependencies = [ + "cc", +] + [[package]] name = "allocator-api2" version = "0.2.21" @@ -441,7 +450,7 @@ dependencies = [ "hmac", "jsonschema", "mockall", - "rand 0.9.2", + "rand 0.10.0", "reqwest 0.13.2", "reqwest-eventsource", "schemars", @@ -476,7 +485,7 @@ dependencies = [ "attune-common", "chrono", "clap", - "colored 2.2.0", + "colored", "comfy-table", "config", "dialoguer", @@ -495,7 +504,7 @@ dependencies = [ "thiserror 2.0.18", "tokio", "tokio-test", - "tokio-tungstenite 0.26.2", + "tokio-tungstenite", "tracing", "tracing-subscriber", "url", @@ -554,7 +563,7 @@ dependencies = [ "dashmap", "futures", "lapin", - "rand 0.8.5", + "rand 0.10.0", "redis", "serde", "serde_json", @@ -710,7 +719,7 @@ dependencies = [ "sha1", "sync_wrapper", "tokio", - "tokio-tungstenite 0.28.0", + "tokio-tungstenite", "tower", "tower-layer", "tower-service", @@ -1046,23 +1055,13 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" -[[package]] -name = "colored" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" -dependencies = [ - "lazy_static", - "windows-sys 0.59.0", -] - [[package]] name = "colored" version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.48.0", ] [[package]] @@ -1121,15 +1120,15 @@ dependencies = [ [[package]] name = "console" -version = "0.15.11" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4" dependencies = [ "encode_unicode", "libc", "once_cell", "unicode-width", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1268,25 +1267,24 @@ dependencies = [ [[package]] name = "criterion" -version = "0.5.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +checksum = "950046b2aa2492f9a536f5f4f9a3de7b9e2476e575e05bd6c333371add4d98f3" dependencies = [ + "alloca", "anes", "cast", "ciborium", "clap", "criterion-plot", - "is-terminal", "itertools", "num-traits", - "once_cell", "oorandom", + "page_size", "plotters", "rayon", "regex", "serde", - "serde_derive", "serde_json", "tinytemplate", "walkdir", @@ -1294,9 +1292,9 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.5.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +checksum = "d8d80a2f4f5b554395e47b5d8305bc3d27813bacb73493eb1001e8f76dae29ea" dependencies = [ "cast", "itertools", @@ -1595,14 +1593,13 @@ dependencies = [ [[package]] name = "dialoguer" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +checksum = "25f104b501bf2364e78d0d3974cbc774f738f5865306ed128e1e0d7499c0ad96" dependencies = [ "console", "shell-words", "tempfile", - "thiserror 1.0.69", "zeroize", ] @@ -1626,23 +1623,23 @@ dependencies = [ [[package]] name = "dirs" -version = "5.0.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -2430,7 +2427,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.2", + "socket2 0.5.10", "system-configuration", "tokio", "tower-service", @@ -2626,17 +2623,6 @@ dependencies = [ "serde", ] -[[package]] -name = "is-terminal" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.61.2", -] - [[package]] name = "is_terminal_polyfill" version = "1.70.2" @@ -2645,9 +2631,9 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" -version = "0.10.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -2713,9 +2699,9 @@ dependencies = [ [[package]] name = "jsonschema" -version = "0.38.1" +version = "0.44.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89f50532ce4a0ba3ae930212908d8ec50e7806065c059fe9c75da2ece6132294" +checksum = "f98b64a413c93a1b413dfbaf973b78d271648b9cae50b10302ad88af78991672" dependencies = [ "ahash", "bytecount", @@ -2732,7 +2718,8 @@ dependencies = [ "referencing", "regex", "regex-syntax", - "reqwest 0.12.28", + "reqwest 0.13.2", + "rustls", "serde", "serde_json", "unicode-general-category", @@ -2971,7 +2958,7 @@ checksum = "90820618712cab19cfc46b274c6c22546a82affcb3c3bdf0f29e3db8e1bb92c0" dependencies = [ "assert-json-diff", "bytes", - "colored 3.1.1", + "colored", "futures-core", "http", "http-body", @@ -3322,6 +3309,16 @@ dependencies = [ "x509-parser", ] +[[package]] +name = "page_size" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "parking" version = "2.2.1" @@ -3704,7 +3701,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2 0.6.2", + "socket2 0.5.10", "thiserror 2.0.18", "tokio", "tracing", @@ -3742,7 +3739,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.2", + "socket2 0.5.10", "tracing", "windows-sys 0.60.2", ] @@ -3920,13 +3917,13 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.6" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.17", "libredox", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] @@ -3951,9 +3948,9 @@ dependencies = [ [[package]] name = "referencing" -version = "0.38.1" +version = "0.44.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a8af0c6bb8eaf8b07cb06fc31ff30ca6fe19fb99afa476c276d8b24f365b0b" +checksum = "22952642836711d7a730d23a4dfb0d732e75a85e4c4f5704266d9c8fac278ff1" dependencies = [ "ahash", "fluent-uri", @@ -4001,7 +3998,6 @@ checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64", "bytes", - "futures-channel", "futures-core", "futures-util", "http", @@ -4038,6 +4034,7 @@ dependencies = [ "base64", "bytes", "encoding_rs", + "futures-channel", "futures-core", "futures-util", "h2", @@ -5245,20 +5242,6 @@ dependencies = [ "tokio-stream", ] -[[package]] -name = "tokio-tungstenite" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" -dependencies = [ - "futures-util", - "log", - "native-tls", - "tokio", - "tokio-native-tls", - "tungstenite 0.26.2", -] - [[package]] name = "tokio-tungstenite" version = "0.28.0" @@ -5267,8 +5250,10 @@ checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" dependencies = [ "futures-util", "log", + "native-tls", "tokio", - "tungstenite 0.28.0", + "tokio-native-tls", + "tungstenite", ] [[package]] @@ -5443,24 +5428,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "tungstenite" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" -dependencies = [ - "bytes", - "data-encoding", - "http", - "httparse", - "log", - "native-tls", - "rand 0.9.2", - "sha1", - "thiserror 2.0.18", - "utf-8", -] - [[package]] name = "tungstenite" version = "0.28.0" @@ -5472,6 +5439,7 @@ dependencies = [ "http", "httparse", "log", + "native-tls", "rand 0.9.2", "sha1", "thiserror 2.0.18", @@ -5992,7 +5960,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.48.0", ] [[package]] @@ -6098,15 +6066,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" diff --git a/Cargo.toml b/Cargo.toml index 1996d6c..3b805e5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ repository = "https://git.rdrx.app/attune-system/attune" [workspace.dependencies] # Async runtime -tokio = { version = "1.42", features = ["full"] } +tokio = { version = "1.50", features = ["full"] } tokio-util = "0.7" tokio-stream = { version = "0.1", features = ["sync"] } @@ -52,7 +52,7 @@ config = "0.15" chrono = { version = "0.4", features = ["serde"] } # UUID -uuid = { version = "1.11", features = ["v4", "serde"] } +uuid = { version = "1.21", features = ["v4", "serde"] } # Validation validator = { version = "0.20", features = ["derive"] } @@ -68,13 +68,13 @@ redis = { version = "1.0", features = ["tokio-comp", "connection-manager"] } # JSON Schema schemars = { version = "1.2", features = ["chrono04"] } -jsonschema = "0.38" +jsonschema = "0.44" # OpenAPI/Swagger utoipa = { version = "5.4", features = ["chrono", "uuid"] } # JWT -jsonwebtoken = { version = "10.2", features = ["hmac", "sha2"] } +jsonwebtoken = { version = "10.3", features = ["hmac", "sha2"] } # Encryption argon2 = "0.5" @@ -84,22 +84,22 @@ aes-gcm = "0.10" sha2 = "0.10" # Regular expressions -regex = "1.11" +regex = "1.12" # HTTP client reqwest = { version = "0.13", features = ["json"] } reqwest-eventsource = "0.6" -hyper = { version = "1.0", features = ["full"] } +hyper = { version = "1.8", features = ["full"] } # File system utilities -walkdir = "2.4" +walkdir = "2.5" # Archive/compression tar = "0.4" -flate2 = "1.0" +flate2 = "1.1" # WebSocket client -tokio-tungstenite = { version = "0.26", features = ["native-tls"] } +tokio-tungstenite = { version = "0.28", features = ["native-tls"] } # URL parsing url = "2.5" @@ -112,11 +112,11 @@ futures = "0.3" semver = { version = "1.0", features = ["serde"] } # Temp files -tempfile = "3.8" +tempfile = "3.26" # Testing mockall = "0.14" -serial_test = "3.2" +serial_test = "3.4" # Concurrent data structures dashmap = "6.1" diff --git a/Makefile b/Makefile index daa4be9..89a2a9b 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,8 @@ help: @echo " make test - Run all tests" @echo " make test-common - Run tests for common library" @echo " make test-api - Run tests for API service" - @echo " make test-integration - Run integration tests" + @echo " make test-integration - Run integration tests (common + API)" + @echo " make test-integration-api - Run API integration tests (requires DB)" @echo " make check - Check code without building" @echo "" @echo "Code Quality:" @@ -88,13 +89,18 @@ test-api: test-verbose: cargo test -- --nocapture --test-threads=1 -test-integration: +test-integration: test-integration-api @echo "Setting up test database..." @make db-test-setup - @echo "Running integration tests..." + @echo "Running common integration tests..." cargo test --test '*' -p attune-common -- --test-threads=1 @echo "Integration tests complete" +test-integration-api: + @echo "Running API integration tests..." + cargo test -p attune-api --features integration-tests -- --test-threads=1 + @echo "API integration tests complete" + test-with-db: db-test-setup test-integration @echo "All tests with database complete" diff --git a/crates/api/Cargo.toml b/crates/api/Cargo.toml index 8d5b229..eb762d8 100644 --- a/crates/api/Cargo.toml +++ b/crates/api/Cargo.toml @@ -6,6 +6,9 @@ authors.workspace = true license.workspace = true repository.workspace = true +[features] +integration-tests = [] + [lib] name = "attune_api" path = "src/lib.rs" @@ -77,7 +80,7 @@ tempfile = { workspace = true } # Authentication argon2 = { workspace = true } -rand = "0.9" +rand = "0.10" # HMAC and cryptography hmac = "0.12" diff --git a/crates/api/tests/health_and_auth_tests.rs b/crates/api/tests/health_and_auth_tests.rs index 9cf56e4..7342b45 100644 --- a/crates/api/tests/health_and_auth_tests.rs +++ b/crates/api/tests/health_and_auth_tests.rs @@ -1,3 +1,4 @@ +#![cfg(feature = "integration-tests")] //! Integration tests for health check and authentication endpoints use axum::http::StatusCode; diff --git a/crates/api/tests/pack_registry_tests.rs b/crates/api/tests/pack_registry_tests.rs index 93144d8..3df7bd5 100644 --- a/crates/api/tests/pack_registry_tests.rs +++ b/crates/api/tests/pack_registry_tests.rs @@ -1,3 +1,4 @@ +#![cfg(feature = "integration-tests")] //! Integration tests for pack registry system //! //! This module tests: diff --git a/crates/api/tests/pack_workflow_tests.rs b/crates/api/tests/pack_workflow_tests.rs index 2fac287..cd83a72 100644 --- a/crates/api/tests/pack_workflow_tests.rs +++ b/crates/api/tests/pack_workflow_tests.rs @@ -1,3 +1,4 @@ +#![cfg(feature = "integration-tests")] //! Integration tests for pack workflow sync and validation mod helpers; diff --git a/crates/api/tests/sse_execution_stream_tests.rs b/crates/api/tests/sse_execution_stream_tests.rs index d64b5fc..b7f692d 100644 --- a/crates/api/tests/sse_execution_stream_tests.rs +++ b/crates/api/tests/sse_execution_stream_tests.rs @@ -1,3 +1,4 @@ +#![cfg(feature = "integration-tests")] //! Integration tests for SSE execution stream endpoint //! //! These tests verify that: @@ -86,7 +87,6 @@ async fn create_test_execution(pool: &PgPool, action_id: i64) -> Result Result<()> { // Set up test context with auth let ctx = TestContext::new().await?.with_auth().await?; @@ -225,7 +225,6 @@ async fn test_sse_stream_receives_execution_updates() -> Result<()> { /// Test that SSE stream correctly filters by execution_id #[tokio::test] -#[ignore] async fn test_sse_stream_filters_by_execution_id() -> Result<()> { // Set up test context with auth let ctx = TestContext::new().await?.with_auth().await?; @@ -327,7 +326,6 @@ async fn test_sse_stream_filters_by_execution_id() -> Result<()> { } #[tokio::test] -#[ignore] async fn test_sse_stream_requires_authentication() -> Result<()> { // Try to connect without token let sse_url = "http://localhost:8080/api/v1/executions/stream"; @@ -373,7 +371,6 @@ async fn test_sse_stream_requires_authentication() -> Result<()> { /// Test streaming all executions (no filter) #[tokio::test] -#[ignore] async fn test_sse_stream_all_executions() -> Result<()> { // Set up test context with auth let ctx = TestContext::new().await?.with_auth().await?; @@ -466,7 +463,6 @@ async fn test_sse_stream_all_executions() -> Result<()> { /// Test that PostgreSQL NOTIFY triggers actually fire #[tokio::test] -#[ignore] async fn test_postgresql_notify_trigger_fires() -> Result<()> { let ctx = TestContext::new().await?; diff --git a/crates/api/tests/webhook_api_tests.rs b/crates/api/tests/webhook_api_tests.rs index e129a44..cea2de7 100644 --- a/crates/api/tests/webhook_api_tests.rs +++ b/crates/api/tests/webhook_api_tests.rs @@ -1,3 +1,4 @@ +#![cfg(feature = "integration-tests")] //! Integration tests for webhook API endpoints use attune_api::{AppState, Server}; @@ -108,7 +109,6 @@ async fn get_auth_token(app: &axum::Router, username: &str, password: &str) -> S } #[tokio::test] -#[ignore] // Run with --ignored flag when database is available async fn test_enable_webhook() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -151,7 +151,6 @@ async fn test_enable_webhook() { } #[tokio::test] -#[ignore] async fn test_disable_webhook() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -202,7 +201,6 @@ async fn test_disable_webhook() { } #[tokio::test] -#[ignore] async fn test_regenerate_webhook_key() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -254,7 +252,6 @@ async fn test_regenerate_webhook_key() { } #[tokio::test] -#[ignore] async fn test_regenerate_webhook_key_not_enabled() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -291,7 +288,6 @@ async fn test_regenerate_webhook_key_not_enabled() { } #[tokio::test] -#[ignore] async fn test_receive_webhook() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -362,7 +358,6 @@ async fn test_receive_webhook() { } #[tokio::test] -#[ignore] async fn test_receive_webhook_invalid_key() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state)); @@ -392,7 +387,6 @@ async fn test_receive_webhook_invalid_key() { } #[tokio::test] -#[ignore] async fn test_receive_webhook_disabled() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -442,7 +436,6 @@ async fn test_receive_webhook_disabled() { } #[tokio::test] -#[ignore] async fn test_webhook_requires_auth_for_management() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -475,7 +468,6 @@ async fn test_webhook_requires_auth_for_management() { } #[tokio::test] -#[ignore] async fn test_receive_webhook_minimal_payload() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); diff --git a/crates/api/tests/webhook_security_tests.rs b/crates/api/tests/webhook_security_tests.rs index 649713f..ecb8331 100644 --- a/crates/api/tests/webhook_security_tests.rs +++ b/crates/api/tests/webhook_security_tests.rs @@ -1,3 +1,4 @@ +#![cfg(feature = "integration-tests")] //! Comprehensive integration tests for webhook security features (Phase 3) //! //! Tests cover: @@ -122,7 +123,6 @@ fn generate_hmac_signature(payload: &[u8], secret: &str, algorithm: &str) -> Str // ============================================================================ #[tokio::test] -#[ignore] async fn test_webhook_hmac_sha256_valid() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -189,7 +189,6 @@ async fn test_webhook_hmac_sha256_valid() { } #[tokio::test] -#[ignore] async fn test_webhook_hmac_sha512_valid() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -246,7 +245,6 @@ async fn test_webhook_hmac_sha512_valid() { } #[tokio::test] -#[ignore] async fn test_webhook_hmac_invalid_signature() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -302,7 +300,6 @@ async fn test_webhook_hmac_invalid_signature() { } #[tokio::test] -#[ignore] async fn test_webhook_hmac_missing_signature() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -355,7 +352,6 @@ async fn test_webhook_hmac_missing_signature() { } #[tokio::test] -#[ignore] async fn test_webhook_hmac_wrong_secret() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -418,7 +414,6 @@ async fn test_webhook_hmac_wrong_secret() { // ============================================================================ #[tokio::test] -#[ignore] async fn test_webhook_rate_limit_enforced() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -494,7 +489,6 @@ async fn test_webhook_rate_limit_enforced() { } #[tokio::test] -#[ignore] async fn test_webhook_rate_limit_disabled() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -541,7 +535,6 @@ async fn test_webhook_rate_limit_disabled() { // ============================================================================ #[tokio::test] -#[ignore] async fn test_webhook_ip_whitelist_allowed() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -612,7 +605,6 @@ async fn test_webhook_ip_whitelist_allowed() { } #[tokio::test] -#[ignore] async fn test_webhook_ip_whitelist_blocked() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -669,7 +661,6 @@ async fn test_webhook_ip_whitelist_blocked() { // ============================================================================ #[tokio::test] -#[ignore] async fn test_webhook_payload_size_limit_enforced() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); @@ -720,7 +711,6 @@ async fn test_webhook_payload_size_limit_enforced() { } #[tokio::test] -#[ignore] async fn test_webhook_payload_size_within_limit() { let state = setup_test_state().await; let server = Server::new(std::sync::Arc::new(state.clone())); diff --git a/crates/api/tests/workflow_tests.rs b/crates/api/tests/workflow_tests.rs index 517821f..d441e32 100644 --- a/crates/api/tests/workflow_tests.rs +++ b/crates/api/tests/workflow_tests.rs @@ -1,3 +1,4 @@ +#![cfg(feature = "integration-tests")] //! Integration tests for workflow API endpoints use attune_common::repositories::{ diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 3d586ad..86d810d 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -38,7 +38,7 @@ chrono = { workspace = true } # Configuration config = { workspace = true } -dirs = "5.0" +dirs = "6.0" # URL encoding urlencoding = "2.1" @@ -52,9 +52,9 @@ flate2 = { workspace = true } tokio-tungstenite = { workspace = true } # Terminal UI -colored = "2.1" -comfy-table = "7.1" -dialoguer = "0.11" +colored = "3.1" +comfy-table = "7.2" +dialoguer = "0.12" # Authentication jsonwebtoken = { workspace = true } @@ -66,7 +66,7 @@ tracing-subscriber = { workspace = true } [dev-dependencies] tempfile = { workspace = true } wiremock = "0.6" -assert_cmd = "2.0" -predicates = "3.0" -mockito = "1.2" +assert_cmd = "2.1" +predicates = "3.1" +mockito = "1.7" tokio-test = "0.4" diff --git a/crates/executor/Cargo.toml b/crates/executor/Cargo.toml index ad9648f..cc1b78b 100644 --- a/crates/executor/Cargo.toml +++ b/crates/executor/Cargo.toml @@ -34,11 +34,11 @@ dashmap = { workspace = true } serde_yaml_ng = { workspace = true } validator = { workspace = true } futures = { workspace = true } -rand = "0.8" +rand = "0.10" [dev-dependencies] tempfile = { workspace = true } -criterion = "0.5" +criterion = "0.8" [[bench]] name = "context_clone"