diff options
author | rtkay123 <dev@kanjala.com> | 2025-08-10 17:29:11 +0200 |
---|---|---|
committer | rtkay123 <dev@kanjala.com> | 2025-08-10 17:29:11 +0200 |
commit | 8b4f27d2c39d1e1f5f1cc455c58800e806ee98d0 (patch) | |
tree | ef7e9f9ce3acff22f647184e6cdd1866e3f29823 /crates/pseudonyms/tests | |
parent | 4e070c8205c7039b8b63260976ffc81b5ac67beb (diff) | |
download | warden-8b4f27d2c39d1e1f5f1cc455c58800e806ee98d0.tar.bz2 warden-8b4f27d2c39d1e1f5f1cc455c58800e806ee98d0.zip |
build(docker): pseudonyms
Diffstat (limited to 'crates/pseudonyms/tests')
-rw-r--r-- | crates/pseudonyms/tests/grpc/mod.rs | 1 | ||||
-rw-r--r-- | crates/pseudonyms/tests/grpc/mutate.rs | 1 | ||||
-rw-r--r-- | crates/pseudonyms/tests/grpc/mutate/create.rs | 23 | ||||
-rw-r--r-- | crates/pseudonyms/tests/helpers.rs | 54 | ||||
-rw-r--r-- | crates/pseudonyms/tests/main.rs | 3 |
5 files changed, 82 insertions, 0 deletions
diff --git a/crates/pseudonyms/tests/grpc/mod.rs b/crates/pseudonyms/tests/grpc/mod.rs new file mode 100644 index 0000000..bfc9852 --- /dev/null +++ b/crates/pseudonyms/tests/grpc/mod.rs @@ -0,0 +1 @@ +mod mutate; diff --git a/crates/pseudonyms/tests/grpc/mutate.rs b/crates/pseudonyms/tests/grpc/mutate.rs new file mode 100644 index 0000000..0f562a4 --- /dev/null +++ b/crates/pseudonyms/tests/grpc/mutate.rs @@ -0,0 +1 @@ +mod create; diff --git a/crates/pseudonyms/tests/grpc/mutate/create.rs b/crates/pseudonyms/tests/grpc/mutate/create.rs new file mode 100644 index 0000000..02f1bc3 --- /dev/null +++ b/crates/pseudonyms/tests/grpc/mutate/create.rs @@ -0,0 +1,23 @@ +use anyhow::Result; +use sqlx::PgPool; +use tonic::{Code, IntoRequest}; +use warden_core::pseudonyms::transaction_relationship::CreatePseudonymRequest; + +use crate::helpers::TestApp; + +#[sqlx::test] +async fn data_loss_tr(pool: PgPool) -> Result<()> { + let mut app = TestApp::new(pool).await; + + let user_request = CreatePseudonymRequest::default(); + + let response = app + .mutate + .create_pseudonym(user_request.into_request()) + .await; + + dbg!(&response); + assert!(response.is_err_and(|value| { value.code() == Code::DataLoss })); + + Ok(()) +} diff --git a/crates/pseudonyms/tests/helpers.rs b/crates/pseudonyms/tests/helpers.rs new file mode 100644 index 0000000..9f512df --- /dev/null +++ b/crates/pseudonyms/tests/helpers.rs @@ -0,0 +1,54 @@ +use sqlx::PgPool; +use warden_stack::{Configuration, cache::RedisManager}; +use tokio::sync::oneshot; +use tonic::transport::Channel; +use warden_core::pseudonyms::transaction_relationship::mutate_pseudonym_client::MutatePseudonymClient; +use warden_pseudonyms::state::{AppHandle, AppState, Services}; + +use std::sync::Arc; + +pub struct TestApp { + state: AppHandle, + pub mutate: MutatePseudonymClient<Channel>, +} + +impl TestApp { + pub async fn new(pool: PgPool) -> Self { + let (tx, rx) = oneshot::channel(); + // Set port to 0 so tests can spawn multiple servers on OS assigned ports. + // + let config_path = "pseudonyms.toml"; + + let config = config::Config::builder() + .add_source(config::File::new(config_path, config::FileFormat::Toml)) + .build() + .unwrap(); + + let mut config = config.try_deserialize::<Configuration>().unwrap(); + config.application.port = 0; + + let cache = RedisManager::new(&config.cache).await.unwrap(); + + let services = Services { + postgres: pool, + cache, + }; + + let state = AppHandle(Arc::new(AppState::new(services, config, None).unwrap())); + + dbg!(&state.addr.port()); + + tokio::spawn(warden_pseudonyms::run(state.clone(), tx)); + let port = rx.await.expect("channel to be open"); + let addr = format!("http://[::1]:{port}"); + + let mutation_client = MutatePseudonymClient::connect(addr.to_string()) + .await + .expect("expect server to be running"); + + Self { + state, + mutate: mutation_client, + } + } +} diff --git a/crates/pseudonyms/tests/main.rs b/crates/pseudonyms/tests/main.rs new file mode 100644 index 0000000..5dd7f19 --- /dev/null +++ b/crates/pseudonyms/tests/main.rs @@ -0,0 +1,3 @@ +#[cfg(target_os = "linux")] +mod grpc; +mod helpers; |