Skip to content

Commit 082b4c8

Browse files
committed
Initialize redis in TestServices
testcontainers-modules is upgraded to the highest version that supports rust 1.63.
1 parent cac2281 commit 082b4c8

File tree

8 files changed

+26
-48
lines changed

8 files changed

+26
-48
lines changed

Cargo-minimal.lock

+2-6
Original file line numberDiff line numberDiff line change
@@ -1615,8 +1615,6 @@ dependencies = [
16151615
"rustls 0.22.4",
16161616
"serde",
16171617
"serde_json",
1618-
"testcontainers",
1619-
"testcontainers-modules",
16201618
"tokio",
16211619
"tracing",
16221620
"url",
@@ -1645,8 +1643,6 @@ dependencies = [
16451643
"rustls 0.22.4",
16461644
"serde",
16471645
"sled",
1648-
"testcontainers",
1649-
"testcontainers-modules",
16501646
"tokio",
16511647
"tokio-rustls",
16521648
"url",
@@ -2567,9 +2563,9 @@ dependencies = [
25672563

25682564
[[package]]
25692565
name = "testcontainers-modules"
2570-
version = "0.1.4"
2566+
version = "0.3.7"
25712567
source = "registry+https://github.com/rust-lang/crates.io-index"
2572-
checksum = "47c405c3757803e54818eaaf6b5b2af485dff4ab89a7130b72f62fd19b8bb6cd"
2568+
checksum = "8debb5e215d9e89ea93255fffff00bf037ea44075d7a2669a21a8a988d6b52fd"
25732569
dependencies = [
25742570
"testcontainers",
25752571
]

Cargo-recent.lock

+2-6
Original file line numberDiff line numberDiff line change
@@ -1615,8 +1615,6 @@ dependencies = [
16151615
"rustls 0.22.4",
16161616
"serde",
16171617
"serde_json",
1618-
"testcontainers",
1619-
"testcontainers-modules",
16201618
"tokio",
16211619
"tracing",
16221620
"url",
@@ -1645,8 +1643,6 @@ dependencies = [
16451643
"rustls 0.22.4",
16461644
"serde",
16471645
"sled",
1648-
"testcontainers",
1649-
"testcontainers-modules",
16501646
"tokio",
16511647
"tokio-rustls",
16521648
"url",
@@ -2567,9 +2563,9 @@ dependencies = [
25672563

25682564
[[package]]
25692565
name = "testcontainers-modules"
2570-
version = "0.1.4"
2566+
version = "0.3.7"
25712567
source = "registry+https://github.com/rust-lang/crates.io-index"
2572-
checksum = "47c405c3757803e54818eaaf6b5b2af485dff4ab89a7130b72f62fd19b8bb6cd"
2568+
checksum = "8debb5e215d9e89ea93255fffff00bf037ea44075d7a2669a21a8a988d6b52fd"
25732569
dependencies = [
25742570
"testcontainers",
25752571
]

payjoin-cli/Cargo.toml

-2
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,3 @@ url = { version = "2.3.1", features = ["serde"] }
5050
[dev-dependencies]
5151
nix = "0.26.4"
5252
payjoin-test-utils = { path = "../payjoin-test-utils" }
53-
testcontainers = "0.15.0"
54-
testcontainers-modules = { version = "0.1.3", features = ["redis"] }

payjoin-cli/tests/e2e.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -141,17 +141,12 @@ mod e2e {
141141
use std::path::PathBuf;
142142

143143
use payjoin_test_utils::{init_tracing, BoxError, TestServices};
144-
use testcontainers::clients::Cli;
145-
use testcontainers_modules::redis::Redis;
146144
use tokio::process::Child;
147145

148146
type Result<T> = std::result::Result<T, BoxError>;
149147

150148
init_tracing();
151-
let docker: Cli = Cli::default();
152-
let db = docker.run(Redis);
153-
let db_host = format!("127.0.0.1:{}", db.get_host_port_ipv4(6379));
154-
let mut services = TestServices::initialize(db_host).await.unwrap();
149+
let mut services = TestServices::initialize().await.unwrap();
155150
let temp_dir = env::temp_dir();
156151
let receiver_db_path = temp_dir.join("receiver_db");
157152
let sender_db_path = temp_dir.join("sender_db");

payjoin-test-utils/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ payjoin-directory = { path = "../payjoin-directory", features = ["_danger-local-
1919
rcgen = "0.11"
2020
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
2121
testcontainers = "0.15.0"
22-
testcontainers-modules = { version = "0.1.3", features = ["redis"] }
22+
testcontainers-modules = { version = "0.3.7", features = ["redis"] }
2323
tokio = { version = "1.12.0", features = ["full"] }
2424
tracing = "0.1.40"
2525
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }

payjoin-test-utils/src/lib.rs

+16-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ use once_cell::sync::OnceCell;
1313
use payjoin::io::{fetch_ohttp_keys_with_cert, Error as IOError};
1414
use payjoin::OhttpKeys;
1515
use reqwest::{Client, ClientBuilder};
16+
use testcontainers::{clients, Container};
17+
use testcontainers_modules::redis::{Redis, REDIS_PORT};
1618
use tokio::task::JoinHandle;
1719
use tracing_subscriber::{EnvFilter, FmtSubscriber};
1820
use url::Url;
@@ -36,21 +38,26 @@ pub fn init_tracing() {
3638

3739
pub struct TestServices {
3840
cert_key: (Vec<u8>, Vec<u8>),
41+
#[allow(dead_code)]
42+
redis: (u16, Container<'static, Redis>),
3943
directory: (u16, Option<JoinHandle<Result<(), BoxSendSyncError>>>),
4044
ohttp_relay: (u16, Option<JoinHandle<Result<(), BoxSendSyncError>>>),
4145
http_agent: Arc<Client>,
4246
}
4347

4448
impl TestServices {
45-
pub async fn initialize(db_host: String) -> Result<Self, BoxSendSyncError> {
49+
pub async fn initialize() -> Result<Self, BoxSendSyncError> {
4650
let cert_key = local_cert_key();
51+
let redis = init_redis();
52+
let db_host = format!("127.0.0.1:{}", redis.0);
4753
let directory = init_directory(db_host, cert_key.clone()).await?;
4854
let gateway_origin =
4955
http::Uri::from_str(&format!("https://localhost:{}", directory.0)).unwrap();
5056
let ohttp_relay = ohttp_relay::listen_tcp_on_free_port(gateway_origin).await?;
5157
let http_agent: Arc<Client> = Arc::new(http_agent(cert_key.0.clone()).unwrap());
5258
Ok(Self {
5359
cert_key,
60+
redis,
5461
directory: (directory.0, Some(directory.1)),
5562
ohttp_relay: (ohttp_relay.0, Some(ohttp_relay.1)),
5663
http_agent,
@@ -88,6 +95,13 @@ impl TestServices {
8895
}
8996
}
9097

98+
pub fn init_redis() -> (u16, Container<'static, Redis>) {
99+
let docker = Box::leak(Box::new(clients::Cli::default()));
100+
let redis_instance = docker.run(Redis::default());
101+
let host_port = redis_instance.get_host_port_ipv4(REDIS_PORT);
102+
(host_port, redis_instance)
103+
}
104+
91105
pub async fn init_directory(
92106
db_host: String,
93107
local_cert_key: (Vec<u8>, Vec<u8>),
@@ -100,7 +114,7 @@ pub async fn init_directory(
100114
payjoin_directory::listen_tcp_with_tls_on_free_port(db_host, timeout, local_cert_key).await
101115
}
102116

103-
// generates or gets a DER encoded localhost cert and key.
117+
/// generates or gets a DER encoded localhost cert and key.
104118
pub fn local_cert_key() -> (Vec<u8>, Vec<u8>) {
105119
let cert =
106120
rcgen::generate_simple_self_signed(vec!["0.0.0.0".to_string(), "localhost".to_string()])

payjoin/Cargo.toml

-2
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ serde_json = { version = "1.0.108", optional = true }
4545
bitcoind = { version = "0.36.0", features = ["0_21_2"] }
4646
payjoin-test-utils = { path = "../payjoin-test-utils" }
4747
once_cell = "1"
48-
testcontainers = "0.15.0"
49-
testcontainers-modules = { version = "0.1.3", features = ["redis"] }
5048
tokio = { version = "1.12.0", features = ["full"] }
5149
tracing = "0.1.40"
5250

payjoin/tests/integration.rs

+4-23
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,6 @@ mod integration {
177177
use payjoin::{OhttpKeys, PjUri, UriExt};
178178
use payjoin_test_utils::TestServices;
179179
use reqwest::{Client, Error, Response};
180-
use testcontainers_modules::redis::Redis;
181-
use testcontainers_modules::testcontainers::clients::Cli;
182180

183181
use super::*;
184182

@@ -187,12 +185,7 @@ mod integration {
187185
let bad_ohttp_keys =
188186
OhttpKeys::from_str("OH1QYPM5JXYNS754Y4R45QWE336QFX6ZR8DQGVQCULVZTV20TFVEYDMFQC")
189187
.expect("Invalid OhttpKeys");
190-
191-
let docker: Cli = Cli::default();
192-
let db = docker.run(Redis);
193-
let db_host = format!("127.0.0.1:{}", db.get_host_port_ipv4(6379));
194-
195-
let mut services = TestServices::initialize(db_host).await.unwrap();
188+
let mut services = TestServices::initialize().await.unwrap();
196189
tokio::select!(
197190
err = services.take_directory_handle().unwrap() => panic!("Directory server exited early: {:?}", err),
198191
res = try_request_with_bad_keys(&services, bad_ohttp_keys) => {
@@ -226,12 +219,7 @@ mod integration {
226219
#[tokio::test]
227220
async fn test_session_expiration() {
228221
init_tracing();
229-
let docker: Cli = Cli::default();
230-
let db = docker.run(Redis);
231-
let db_host = format!("127.0.0.1:{}", db.get_host_port_ipv4(6379));
232-
233-
let mut services = TestServices::initialize(db_host).await.unwrap();
234-
222+
let mut services = TestServices::initialize().await.unwrap();
235223
tokio::select!(
236224
err = services.take_ohttp_relay_handle().unwrap() => panic!("Ohttp relay exited early: {:?}", err),
237225
err = services.take_directory_handle().unwrap() => panic!("Directory server exited early: {:?}", err),
@@ -278,11 +266,7 @@ mod integration {
278266
#[tokio::test]
279267
async fn v2_to_v2() {
280268
init_tracing();
281-
let docker: Cli = Cli::default();
282-
let db = docker.run(Redis);
283-
let db_host = format!("127.0.0.1:{}", db.get_host_port_ipv4(6379));
284-
285-
let mut services = TestServices::initialize(db_host).await.unwrap();
269+
let mut services = TestServices::initialize().await.unwrap();
286270
tokio::select!(
287271
err = services.take_ohttp_relay_handle().unwrap() => panic!("Ohttp relay exited early: {:?}", err),
288272
err = services.take_directory_handle().unwrap() => panic!("Directory server exited early: {:?}", err),
@@ -444,10 +428,7 @@ mod integration {
444428
#[tokio::test]
445429
async fn v1_to_v2() {
446430
init_tracing();
447-
let docker: Cli = Cli::default();
448-
let db = docker.run(Redis);
449-
let db_host = format!("127.0.0.1:{}", db.get_host_port_ipv4(6379));
450-
let mut services = TestServices::initialize(db_host).await.unwrap();
431+
let mut services = TestServices::initialize().await.unwrap();
451432
tokio::select!(
452433
err = services.take_ohttp_relay_handle().unwrap() => panic!("Ohttp relay exited early: {:?}", err),
453434
err = services.take_directory_handle().unwrap() => panic!("Directory server exited early: {:?}", err),

0 commit comments

Comments
 (0)