commit 95dd8e8fda8020e68023df935207272eefbf1c26
parent 2116901c50a4d7b35e1948c9720051c26f03baf1
Author: Antoine A <>
Date: Thu, 19 Mar 2026 11:22:16 +0100
common: improve test utils
Diffstat:
10 files changed, 115 insertions(+), 140 deletions(-)
diff --git a/common/taler-api/tests/api.rs b/common/taler-api/tests/api.rs
@@ -33,7 +33,7 @@ mod common;
#[tokio::test]
async fn errors() {
- let (server, _) = setup().await;
+ let server = setup().await;
server
.get("/unknown")
.await
@@ -46,7 +46,7 @@ async fn errors() {
#[tokio::test]
async fn config() {
- let (server, _) = setup().await;
+ let server = setup().await;
server
.get("/taler-wire-gateway/config")
.await
@@ -59,13 +59,13 @@ async fn config() {
#[tokio::test]
async fn transfer() {
- let (server, _) = setup().await;
+ let server = setup().await;
transfer_routine(&server, TransferState::success, &payto("payto://test")).await;
}
#[tokio::test]
async fn outgoing_history() {
- let (server, _) = setup().await;
+ let server = setup().await;
routine_pagination::<OutgoingHistory, _>(
&server,
"/taler-wire-gateway/history/outgoing",
@@ -94,19 +94,19 @@ async fn outgoing_history() {
#[tokio::test]
async fn admin_add_incoming() {
- let (server, _) = setup().await;
+ let server = setup().await;
admin_add_incoming_routine(&server, &payto("payto://test"), true).await;
}
#[tokio::test]
async fn revenue() {
- let (server, _) = setup().await;
+ let server = setup().await;
revenue_routine(&server, &payto("payto://test"), true).await;
}
#[tokio::test]
async fn account_check() {
- let (server, _) = setup().await;
+ let server = setup().await;
server
.get("/taler-wire-gateway/account/check")
.query("account", "payto://test")
diff --git a/common/taler-api/tests/common/mod.rs b/common/taler-api/tests/common/mod.rs
@@ -179,7 +179,7 @@ impl Revenue for TestApi {
}
}
-pub async fn test_api(pool: PgPool, currency: Currency) -> Router {
+pub fn test_api(pool: PgPool, currency: Currency) -> Router {
let outgoing_channel = Sender::new(0);
let incoming_channel = Sender::new(0);
let wg = TestApi {
@@ -199,9 +199,7 @@ pub async fn test_api(pool: PgPool, currency: Currency) -> Router {
.revenue(state, AuthMethod::None)
}
-pub async fn setup() -> (Router, PgPool) {
- let pool = db_test_setup_manual("db".as_ref(), "taler-api").await;
- let api = test_api(pool.clone(), "EUR".parse().unwrap()).await;
-
- (api.finalize(), pool)
+pub async fn setup() -> Router {
+ let (_, pool) = db_test_setup_manual("db".as_ref(), "taler-api").await;
+ test_api(pool.clone(), "EUR".parse().unwrap()).finalize()
}
diff --git a/common/taler-api/tests/security.rs b/common/taler-api/tests/security.rs
@@ -1,6 +1,6 @@
/*
This file is part of TALER
- Copyright (C) 2025 Taler Systems SA
+ Copyright (C) 2025, 2026 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free Software
@@ -33,7 +33,7 @@ mod common;
#[tokio::test]
async fn body_parsing() {
- let (server, _) = setup().await;
+ let server = setup().await;
let eur: Currency = "EUR".parse().unwrap();
let normal_body = TransferRequest {
request_uid: Base32::rand(),
diff --git a/common/taler-test-utils/Cargo.toml b/common/taler-test-utils/Cargo.toml
@@ -10,6 +10,7 @@ license-file.workspace = true
[dependencies]
tower = "0.5"
flate2 = { version = "1.0", features = ["zlib-rs"], default-features = false }
+uuid = { version = "1", features = ["v4"] }
axum.workspace = true
tokio.workspace = true
serde_json.workspace = true
diff --git a/common/taler-test-utils/src/db.rs b/common/taler-test-utils/src/db.rs
@@ -14,28 +14,21 @@
TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-use std::{
- path::Path,
- str::FromStr as _,
- sync::{
- OnceLock,
- atomic::{AtomicUsize, Ordering},
- },
-};
+use std::{path::Path, str::FromStr as _};
use sqlx::{
- PgPool,
- postgres::{PgConnectOptions, PgPoolOptions},
+ Connection, PgConnection, PgPool, Postgres, pool::PoolConnection, postgres::PgConnectOptions,
};
use taler_api::config::DbCfg;
use taler_common::{
config::{Config, parser::ConfigSource},
db::{dbinit, pool},
};
+use tracing::info;
use crate::setup_tracing;
-pub async fn db_test_setup(src: ConfigSource) -> PgPool {
+pub async fn db_test_setup(src: ConfigSource) -> (PoolConnection<Postgres>, PgPool) {
let cfg = Config::from_file(src, None::<&str>).unwrap();
let name = format!("{}db-postgres", src.component_name);
let sect = cfg.section(&name);
@@ -43,7 +36,10 @@ pub async fn db_test_setup(src: ConfigSource) -> PgPool {
db_test_setup_manual(db_cfg.sql_dir.as_ref(), src.component_name).await
}
-pub async fn db_test_setup_manual(sql_dir: &Path, component_name: &str) -> PgPool {
+pub async fn db_test_setup_manual(
+ sql_dir: &Path,
+ component_name: &str,
+) -> (PoolConnection<Postgres>, PgPool) {
setup_tracing();
let cfg = test_db().await;
let pool = pool(cfg, &component_name.replace("-", "_")).await.unwrap();
@@ -52,35 +48,26 @@ pub async fn db_test_setup_manual(sql_dir: &Path, component_name: &str) -> PgPoo
dbinit(&mut conn, sql_dir, component_name, true)
.await
.unwrap();
- pool
+ (conn, pool)
}
-static MASTER_POOL: OnceLock<PgPool> = OnceLock::new();
-
-const DB: &str = "postgres:///taler_rust_check";
-static NB_DB: AtomicUsize = AtomicUsize::new(0);
-
async fn test_db() -> PgConnectOptions {
- let master = MASTER_POOL.get_or_init(|| {
- PgPoolOptions::new()
- .max_connections(20)
- .test_before_acquire(false)
- .after_release(|_conn, _| Box::pin(async move { Ok(false) }))
- .connect_lazy(DB)
- .expect("pg pool")
- });
- let idx = NB_DB.fetch_add(1, Ordering::Relaxed);
+ let mut conn = PgConnection::connect("postgres:///taler_rust_check")
+ .await
+ .unwrap();
+ let id = uuid::Uuid::new_v4();
// Cleanup test db
- let name = format!("taler_rust_test_{idx}");
- let mut conn = master.acquire().await.unwrap();
+ let name = format!("taler_rust_test_{}", id.to_string().replace('-', "_"));
sqlx::raw_sql(&format!("DROP DATABASE IF EXISTS {name}"))
- .execute(&mut *conn)
+ .execute(&mut conn)
.await
.unwrap();
sqlx::raw_sql(&format!("CREATE DATABASE {name}"))
- .execute(&mut *conn)
+ .execute(&mut conn)
.await
.unwrap();
drop(conn);
- PgConnectOptions::from_str(&format!("postgresql:/{name}")).unwrap()
+ let db_url = format!("postgresql:/{name}");
+ info!("Running on db {db_url}");
+ PgConnectOptions::from_str(&db_url).unwrap()
}
diff --git a/common/taler-test-utils/src/server.rs b/common/taler-test-utils/src/server.rs
@@ -89,7 +89,7 @@ impl TestRequest {
pub fn deflate(mut self) -> Self {
let body = self.body.unwrap();
- let mut encoder = ZlibEncoder::new(Vec::new(), Compression::fast());
+ let mut encoder = ZlibEncoder::new(Vec::with_capacity(body.len() / 4), Compression::fast());
encoder.write_all(&body).unwrap();
let compressed = encoder.finish().unwrap();
self.body = Some(compressed);
@@ -123,21 +123,13 @@ impl TestRequest {
headers,
} = self;
let uri = Uri::try_from(uri.as_str()).unwrap();
- let mut builder = axum::http::request::Builder::new()
+ let mut req = axum::http::request::Builder::new()
.method(&method)
- .uri(&uri);
- for (k, v) in headers {
- if let Some(k) = k {
- builder = builder.header(k, v);
- } else {
- builder = builder.header("", v);
- }
- }
-
- let resp = router
- .oneshot(builder.body(Body::from(body.unwrap_or_default())).unwrap())
- .await
+ .uri(&uri)
+ .body(body.map(Body::from).unwrap_or_else(Body::empty))
.unwrap();
+ *req.headers_mut() = headers;
+ let resp = router.oneshot(req).await.unwrap();
let (parts, body) = resp.into_parts();
let bytes = body.collect().await.unwrap();
TestResponse {
@@ -191,13 +183,10 @@ impl TestResponse {
} = self;
match serde_json::from_slice(bytes) {
Ok(body) => body,
- Err(err) => match serde_json::from_slice::<serde_json::Value>(bytes) {
- Ok(raw) => panic!("{method} {uri} {status} invalid JSON schema: {err}\n{raw}"),
- Err(err) => panic!(
- "{method} {uri} {status} invalid JSON body: {err}\n{}",
- String::from_utf8_lossy(bytes)
- ),
- },
+ Err(err) => panic!(
+ "{method} {uri} {status} invalid JSON body: {err}\n{}",
+ String::from_utf8_lossy(bytes)
+ ),
}
}
diff --git a/taler-cyclos/src/db.rs b/taler-cyclos/src/db.rs
@@ -840,7 +840,7 @@ mod test {
use compact_str::CompactString;
use jiff::{Span, Timestamp};
use serde_json::json;
- use sqlx::{PgConnection, PgPool, Row as _, postgres::PgRow};
+ use sqlx::{PgConnection, PgPool, Postgres, Row as _, pool::PoolConnection, postgres::PgRow};
use taler_api::{
db::TypeHelper,
notification::dummy_listen,
@@ -868,10 +868,8 @@ mod test {
pub static CURRENCY: LazyLock<Currency> = LazyLock::new(|| "TEST".parse().unwrap());
pub const ROOT: CompactString = CompactString::const_new("localhost");
- async fn setup() -> (PgConnection, PgPool) {
- let pool = taler_test_utils::db::db_test_setup(CONFIG_SOURCE).await;
- let conn = pool.acquire().await.unwrap().leak();
- (conn, pool)
+ async fn setup() -> (PoolConnection<Postgres>, PgPool) {
+ taler_test_utils::db::db_test_setup(CONFIG_SOURCE).await
}
#[tokio::test]
@@ -884,15 +882,15 @@ mod test {
});
assert_eq!(
- db::kv_get::<serde_json::Value>(&mut db, "value")
+ db::kv_get::<serde_json::Value>(&mut *db, "value")
.await
.unwrap(),
None
);
- db::kv_set(&mut db, "value", &value).await.unwrap();
- db::kv_set(&mut db, "value", &value).await.unwrap();
+ db::kv_set(&mut *db, "value", &value).await.unwrap();
+ db::kv_set(&mut *db, "value", &value).await.unwrap();
assert_eq!(
- db::kv_get::<serde_json::Value>(&mut db, "value")
+ db::kv_get::<serde_json::Value>(&mut *db, "value")
.await
.unwrap(),
Some(value)
@@ -1231,13 +1229,13 @@ mod test {
// Empty db
assert_eq!(
- db::transfer_by_id(&mut db, 0, &CURRENCY, &ROOT)
+ db::transfer_by_id(&mut *db, 0, &CURRENCY, &ROOT)
.await
.unwrap(),
None
);
assert_eq!(
- db::transfer_page(&mut db, &None, &CURRENCY, &ROOT, &Page::default())
+ db::transfer_page(&mut *db, &None, &CURRENCY, &ROOT, &Page::default())
.await
.unwrap(),
Vec::new()
@@ -1255,7 +1253,7 @@ mod test {
let later = now + Span::new().hours(2);
// Insert
assert_eq!(
- db::make_transfer(&mut db, &req, &now)
+ db::make_transfer(&mut *db, &req, &now)
.await
.expect("transfer"),
TransferResult::Success {
@@ -1265,7 +1263,7 @@ mod test {
);
// Idempotent
assert_eq!(
- db::make_transfer(&mut db, &req, &later)
+ db::make_transfer(&mut *db, &req, &later)
.await
.expect("transfer"),
TransferResult::Success {
@@ -1276,7 +1274,7 @@ mod test {
// Request UID reuse
assert_eq!(
db::make_transfer(
- &mut db,
+ &mut *db,
&Transfer {
wtid: ShortHashCode::rand(),
..req.clone()
@@ -1290,7 +1288,7 @@ mod test {
// wtid reuse
assert_eq!(
db::make_transfer(
- &mut db,
+ &mut *db,
&Transfer {
request_uid: HashCode::rand(),
..req.clone()
@@ -1304,7 +1302,7 @@ mod test {
// Many
assert_eq!(
db::make_transfer(
- &mut db,
+ &mut *db,
&Transfer {
request_uid: HashCode::rand(),
wtid: ShortHashCode::rand(),
@@ -1322,25 +1320,25 @@ mod test {
// Get
assert!(
- db::transfer_by_id(&mut db, 1, &CURRENCY, &ROOT)
+ db::transfer_by_id(&mut *db, 1, &CURRENCY, &ROOT)
.await
.unwrap()
.is_some()
);
assert!(
- db::transfer_by_id(&mut db, 2, &CURRENCY, &ROOT)
+ db::transfer_by_id(&mut *db, 2, &CURRENCY, &ROOT)
.await
.unwrap()
.is_some()
);
assert!(
- db::transfer_by_id(&mut db, 3, &CURRENCY, &ROOT)
+ db::transfer_by_id(&mut *db, 3, &CURRENCY, &ROOT)
.await
.unwrap()
.is_none()
);
assert_eq!(
- db::transfer_page(&mut db, &None, &CURRENCY, &ROOT, &Page::default())
+ db::transfer_page(&mut *db, &None, &CURRENCY, &ROOT, &Page::default())
.await
.unwrap()
.len(),
@@ -1451,10 +1449,10 @@ mod test {
}
// Unknown transfer
- db::initiated_submit_permanent_failure(&mut db, 1, "msg")
+ db::initiated_submit_permanent_failure(&mut *db, 1, "msg")
.await
.unwrap();
- db::initiated_submit_success(&mut db, 1, &Timestamp::now(), 12)
+ db::initiated_submit_success(&mut *db, 1, &Timestamp::now(), 12)
.await
.unwrap();
assert_eq!(
@@ -1464,7 +1462,7 @@ mod test {
// Failure
db::make_transfer(
- &mut db,
+ &mut *db,
&Transfer {
request_uid: HashCode::rand(),
amount: decimal("1"),
@@ -1478,7 +1476,7 @@ mod test {
.await
.expect("transfer");
check_status(&mut db, 1, TransferState::pending, None).await;
- db::initiated_submit_permanent_failure(&mut db, 1, "error status")
+ db::initiated_submit_permanent_failure(&mut *db, 1, "error status")
.await
.unwrap();
check_status(
@@ -1491,7 +1489,7 @@ mod test {
// Success
db::make_transfer(
- &mut db,
+ &mut *db,
&Transfer {
request_uid: HashCode::rand(),
amount: decimal("1"),
@@ -1505,7 +1503,7 @@ mod test {
.await
.expect("transfer");
check_status(&mut db, 2, TransferState::pending, None).await;
- db::initiated_submit_success(&mut db, 2, &Timestamp::now(), 3)
+ db::initiated_submit_success(&mut *db, 2, &Timestamp::now(), 3)
.await
.unwrap();
check_status(&mut db, 2, TransferState::pending, None).await;
@@ -1551,7 +1549,7 @@ mod test {
let start = Timestamp::now();
// Empty db
- let pendings = db::pending_batch(&mut db, &start)
+ let pendings = db::pending_batch(&mut *db, &start)
.await
.expect("pending_batch");
assert_eq!(pendings.len(), 0);
@@ -1559,7 +1557,7 @@ mod test {
// Some transfers
for i in 0..3 {
db::make_transfer(
- &mut db,
+ &mut *db,
&Transfer {
request_uid: HashCode::rand(),
amount: decimal(format!("{}", i + 1)),
@@ -1573,7 +1571,7 @@ mod test {
.await
.expect("transfer");
}
- let pendings = db::pending_batch(&mut db, &start)
+ let pendings = db::pending_batch(&mut *db, &start)
.await
.expect("pending_batch");
assert_eq!(pendings.len(), 3);
@@ -1581,7 +1579,7 @@ mod test {
// Max 100 txs in batch
for i in 0..100 {
db::make_transfer(
- &mut db,
+ &mut *db,
&Transfer {
request_uid: HashCode::rand(),
amount: decimal(format!("{}", i + 1)),
@@ -1595,29 +1593,29 @@ mod test {
.await
.expect("transfer");
}
- let pendings = db::pending_batch(&mut db, &start)
+ let pendings = db::pending_batch(&mut *db, &start)
.await
.expect("pending_batch");
assert_eq!(pendings.len(), 100);
// Skip uploaded
for i in 0..=10 {
- db::initiated_submit_success(&mut db, i, &Timestamp::now(), i)
+ db::initiated_submit_success(&mut *db, i, &Timestamp::now(), i)
.await
.expect("status success");
}
- let pendings = db::pending_batch(&mut db, &start)
+ let pendings = db::pending_batch(&mut *db, &start)
.await
.expect("pending_batch");
assert_eq!(pendings.len(), 93);
// Skip failed
for i in 0..=10 {
- db::initiated_submit_permanent_failure(&mut db, 10 + i, "failure")
+ db::initiated_submit_permanent_failure(&mut *db, 10 + i, "failure")
.await
.expect("status failure");
}
- let pendings = db::pending_batch(&mut db, &start)
+ let pendings = db::pending_batch(&mut *db, &start)
.await
.expect("pending_batch");
assert_eq!(pendings.len(), 83);
diff --git a/taler-cyclos/tests/api.rs b/taler-cyclos/tests/api.rs
@@ -41,7 +41,7 @@ use taler_test_utils::{
};
async fn setup() -> (Router, PgPool) {
- let pool = db_test_setup(CONFIG_SOURCE).await;
+ let (_, pool) = db_test_setup(CONFIG_SOURCE).await;
let api = Arc::new(
CyclosApi::start(
pool.clone(),
diff --git a/taler-magnet-bank/src/db.rs b/taler-magnet-bank/src/db.rs
@@ -807,7 +807,7 @@ pub async fn kv_set<'a, T: Serialize>(
mod test {
use jiff::{Span, Timestamp, Zoned};
use serde_json::json;
- use sqlx::{PgConnection, PgPool, postgres::PgRow};
+ use sqlx::{PgConnection, PgPool, Postgres, pool::PoolConnection, postgres::PgRow};
use taler_api::{
db::TypeHelper,
notification::dummy_listen,
@@ -836,10 +836,8 @@ mod test {
use super::TxInAdmin;
- async fn setup() -> (PgConnection, PgPool) {
- let pool = taler_test_utils::db::db_test_setup(CONFIG_SOURCE).await;
- let conn = pool.acquire().await.unwrap().leak();
- (conn, pool)
+ async fn setup() -> (PoolConnection<Postgres>, PgPool) {
+ taler_test_utils::db::db_test_setup(CONFIG_SOURCE).await
}
#[tokio::test]
@@ -852,13 +850,17 @@ mod test {
});
assert_eq!(
- kv_get::<serde_json::Value>(&mut db, "value").await.unwrap(),
+ kv_get::<serde_json::Value>(&mut *db, "value")
+ .await
+ .unwrap(),
None
);
- kv_set(&mut db, "value", &value).await.unwrap();
- kv_set(&mut db, "value", &value).await.unwrap();
+ kv_set(&mut *db, "value", &value).await.unwrap();
+ kv_set(&mut *db, "value", &value).await.unwrap();
assert_eq!(
- kv_get::<serde_json::Value>(&mut db, "value").await.unwrap(),
+ kv_get::<serde_json::Value>(&mut *db, "value")
+ .await
+ .unwrap(),
Some(value)
);
}
@@ -1227,13 +1229,13 @@ mod test {
};
let payto = magnet_payto("payto://iban/HU30162000031000163100000000?receiver-name=name");
assert_eq!(
- make_transfer(&mut db, &req, &now).await.unwrap(),
+ make_transfer(&mut *db, &req, &now).await.unwrap(),
TransferResult::Success {
id: 1,
initiated_at: now
}
);
- db::initiated_submit_success(&mut db, 1, &Timestamp::now(), 34)
+ db::initiated_submit_success(&mut *db, 1, &Timestamp::now(), 34)
.await
.expect("status success");
assert_eq!(
@@ -1300,9 +1302,9 @@ mod test {
let (mut db, _) = setup().await;
// Empty db
- assert_eq!(db::transfer_by_id(&mut db, 0).await.unwrap(), None);
+ assert_eq!(db::transfer_by_id(&mut *db, 0).await.unwrap(), None);
assert_eq!(
- db::transfer_page(&mut db, &None, &Page::default())
+ db::transfer_page(&mut *db, &None, &Page::default())
.await
.unwrap(),
Vec::new()
@@ -1319,7 +1321,7 @@ mod test {
let later = now + Span::new().hours(2);
// Insert
assert_eq!(
- make_transfer(&mut db, &req, &now).await.expect("transfer"),
+ make_transfer(&mut *db, &req, &now).await.expect("transfer"),
TransferResult::Success {
id: 1,
initiated_at: now
@@ -1327,7 +1329,7 @@ mod test {
);
// Idempotent
assert_eq!(
- make_transfer(&mut db, &req, &later)
+ make_transfer(&mut *db, &req, &later)
.await
.expect("transfer"),
TransferResult::Success {
@@ -1338,7 +1340,7 @@ mod test {
// Request UID reuse
assert_eq!(
make_transfer(
- &mut db,
+ &mut *db,
&db::Transfer {
wtid: ShortHashCode::rand(),
..req.clone()
@@ -1352,7 +1354,7 @@ mod test {
// wtid reuse
assert_eq!(
make_transfer(
- &mut db,
+ &mut *db,
&db::Transfer {
request_uid: HashCode::rand(),
..req.clone()
@@ -1366,7 +1368,7 @@ mod test {
// Many
assert_eq!(
make_transfer(
- &mut db,
+ &mut *db,
&db::Transfer {
request_uid: HashCode::rand(),
wtid: ShortHashCode::rand(),
@@ -1383,11 +1385,11 @@ mod test {
);
// Get
- assert!(db::transfer_by_id(&mut db, 1).await.unwrap().is_some());
- assert!(db::transfer_by_id(&mut db, 2).await.unwrap().is_some());
- assert!(db::transfer_by_id(&mut db, 3).await.unwrap().is_none());
+ assert!(db::transfer_by_id(&mut *db, 1).await.unwrap().is_some());
+ assert!(db::transfer_by_id(&mut *db, 2).await.unwrap().is_some());
+ assert!(db::transfer_by_id(&mut *db, 3).await.unwrap().is_none());
assert_eq!(
- db::transfer_page(&mut db, &None, &Page::default())
+ db::transfer_page(&mut *db, &None, &Page::default())
.await
.unwrap()
.len(),
@@ -1405,7 +1407,7 @@ mod test {
let date = Zoned::now().date();
// Empty db
- assert!(db::pending_batch(&mut db, &now).await.unwrap().is_empty());
+ assert!(db::pending_batch(&mut *db, &now).await.unwrap().is_empty());
// Insert
assert_eq!(
@@ -1535,7 +1537,7 @@ mod test {
// Batch
assert_eq!(
- db::pending_batch(&mut db, &now).await.unwrap(),
+ db::pending_batch(&mut *db, &now).await.unwrap(),
&[
Initiated {
id: 1,
@@ -1558,10 +1560,10 @@ mod test {
let (mut db, _) = setup().await;
// Unknown transfer
- db::initiated_submit_permanent_failure(&mut db, 1, &Timestamp::now(), "msg")
+ db::initiated_submit_permanent_failure(&mut *db, 1, &Timestamp::now(), "msg")
.await
.unwrap();
- db::initiated_submit_success(&mut db, 1, &Timestamp::now(), 12)
+ db::initiated_submit_success(&mut *db, 1, &Timestamp::now(), 12)
.await
.unwrap();
}
@@ -1574,7 +1576,7 @@ mod test {
magnet_payto("payto://iban/HU30162000031000163100000000?receiver-name=name");
// Empty db
- let pendings = db::pending_batch(&mut db, &start)
+ let pendings = db::pending_batch(&mut *db, &start)
.await
.expect("pending_batch");
assert_eq!(pendings.len(), 0);
@@ -1582,7 +1584,7 @@ mod test {
// Some transfers
for i in 0..3 {
make_transfer(
- &mut db,
+ &mut *db,
&db::Transfer {
request_uid: HashCode::rand(),
amount: decimal(format!("{}", i + 1)),
@@ -1595,7 +1597,7 @@ mod test {
.await
.expect("transfer");
}
- let pendings = db::pending_batch(&mut db, &start)
+ let pendings = db::pending_batch(&mut *db, &start)
.await
.expect("pending_batch");
assert_eq!(pendings.len(), 3);
@@ -1603,7 +1605,7 @@ mod test {
// Max 100 txs in batch
for i in 0..100 {
make_transfer(
- &mut db,
+ &mut *db,
&db::Transfer {
request_uid: HashCode::rand(),
amount: decimal(format!("{}", i + 1)),
@@ -1616,29 +1618,29 @@ mod test {
.await
.expect("transfer");
}
- let pendings = db::pending_batch(&mut db, &start)
+ let pendings = db::pending_batch(&mut *db, &start)
.await
.expect("pending_batch");
assert_eq!(pendings.len(), 100);
// Skip uploaded
for i in 0..=10 {
- db::initiated_submit_success(&mut db, i, &Timestamp::now(), i)
+ db::initiated_submit_success(&mut *db, i, &Timestamp::now(), i)
.await
.expect("status success");
}
- let pendings = db::pending_batch(&mut db, &start)
+ let pendings = db::pending_batch(&mut *db, &start)
.await
.expect("pending_batch");
assert_eq!(pendings.len(), 93);
// Skip failed
for i in 0..=10 {
- db::initiated_submit_permanent_failure(&mut db, 10 + i, &Timestamp::now(), "failure")
+ db::initiated_submit_permanent_failure(&mut *db, 10 + i, &Timestamp::now(), "failure")
.await
.expect("status failure");
}
- let pendings = db::pending_batch(&mut db, &start)
+ let pendings = db::pending_batch(&mut *db, &start)
.await
.expect("pending_batch");
assert_eq!(pendings.len(), 83);
diff --git a/taler-magnet-bank/tests/api.rs b/taler-magnet-bank/tests/api.rs
@@ -39,7 +39,7 @@ use taler_test_utils::{
};
async fn setup() -> (Router, PgPool) {
- let pool = db_test_setup(CONFIG_SOURCE).await;
+ let (_, pool) = db_test_setup(CONFIG_SOURCE).await;
let api = Arc::new(
MagnetApi::start(
pool.clone(),