Skip to content

Commit 50b5ad0

Browse files
authored
feat: removed unwrap from v2 of send and recieve (#544)
part of #487 Removed `unwrap()` from send and recieve test of v2
2 parents 4ba2d8c + bddc212 commit 50b5ad0

File tree

2 files changed

+30
-23
lines changed

2 files changed

+30
-23
lines changed

payjoin/src/receive/v2/mod.rs

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -575,67 +575,68 @@ mod test {
575575
use ohttp::hpke::{Aead, Kdf, Kem};
576576
use ohttp::{KeyId, SymmetricSuite};
577577
use once_cell::sync::Lazy;
578+
use payjoin_test_utils::BoxError;
578579

579580
use super::*;
580581

581582
const KEY_ID: KeyId = 1;
582583
const KEM: Kem = Kem::K256Sha256;
583584
const SYMMETRIC: &[SymmetricSuite] =
584585
&[ohttp::SymmetricSuite::new(Kdf::HkdfSha256, Aead::ChaCha20Poly1305)];
585-
static EXAMPLE_DIRECTORY_URL: Lazy<Url> =
586-
Lazy::new(|| Url::parse("https://directory.com").unwrap());
587586

588-
static EXAMPLE_OHTTP_RELAY: Lazy<Url> = Lazy::new(|| Url::parse("https://relay.com").unwrap());
587+
static EXAMPLE_URL: Lazy<Url> =
588+
Lazy::new(|| Url::parse("https://relay.com").expect("invalid URL"));
589589

590590
static SHARED_CONTEXT: Lazy<SessionContext> = Lazy::new(|| SessionContext {
591591
address: Address::from_str("tb1q6d3a2w975yny0asuvd9a67ner4nks58ff0q8g4")
592-
.unwrap()
592+
.expect("valid address")
593593
.assume_checked(),
594-
directory: EXAMPLE_DIRECTORY_URL.clone(),
594+
directory: EXAMPLE_URL.clone(),
595595
subdirectory: None,
596-
ohttp_keys: OhttpKeys(ohttp::KeyConfig::new(KEY_ID, KEM, Vec::from(SYMMETRIC)).unwrap()),
596+
ohttp_keys: OhttpKeys(
597+
ohttp::KeyConfig::new(KEY_ID, KEM, Vec::from(SYMMETRIC)).expect("valid key config"),
598+
),
597599
expiry: SystemTime::now() + Duration::from_secs(60),
598600
s: HpkeKeyPair::gen_keypair(),
599601
e: None,
600602
});
601603

602604
#[test]
603-
fn extract_err_req() -> Result<(), Box<dyn std::error::Error>> {
605+
fn extract_err_req() -> Result<(), BoxError> {
604606
let mut proposal = UncheckedProposal {
605-
v1: crate::receive::v1::test::proposal_from_test_vector().unwrap(),
607+
v1: crate::receive::v1::test::proposal_from_test_vector()?,
606608
context: SHARED_CONTEXT.clone(),
607609
};
608610

609611
let server_error = proposal
610612
.clone()
611613
.check_broadcast_suitability(None, |_| Err("mock error".into()))
612614
.err()
613-
.unwrap();
615+
.ok_or("expected error but got success")?;
614616
assert_eq!(
615617
server_error.to_json(),
616618
r#"{ "errorCode": "unavailable", "message": "Receiver error" }"#
617619
);
618-
let (_req, _ctx) =
619-
proposal.clone().extract_err_req(&server_error, EXAMPLE_OHTTP_RELAY.to_owned())?;
620+
let (_req, _ctx) = proposal.clone().extract_err_req(&server_error, &*EXAMPLE_URL)?;
620621

621622
let internal_error = InternalPayloadError::MissingPayment.into();
622-
let (_req, _ctx) =
623-
proposal.extract_err_req(&internal_error, EXAMPLE_OHTTP_RELAY.to_owned())?;
623+
let (_req, _ctx) = proposal.extract_err_req(&internal_error, &*EXAMPLE_URL)?;
624624
Ok(())
625625
}
626626

627627
#[test]
628-
fn receiver_ser_de_roundtrip() {
628+
fn receiver_ser_de_roundtrip() -> Result<(), serde_json::Error> {
629629
let session = Receiver { context: SHARED_CONTEXT.clone() };
630-
let serialized = serde_json::to_string(&session).unwrap();
631-
let deserialized: Receiver = serde_json::from_str(&serialized).unwrap();
630+
let serialized = serde_json::to_string(&session)?;
631+
let deserialized: Receiver = serde_json::from_str(&serialized)?;
632632
assert_eq!(session, deserialized);
633+
Ok(())
633634
}
634635

635636
#[test]
636637
fn test_v2_pj_uri() {
637638
let uri = Receiver { context: SHARED_CONTEXT.clone() }.pj_uri();
638-
assert_ne!(uri.extras.endpoint, EXAMPLE_DIRECTORY_URL.clone());
639+
assert_ne!(uri.extras.endpoint, EXAMPLE_URL.clone());
639640
assert!(!uri.extras.disable_output_substitution);
640641
}
641642
}

payjoin/src/send/v2/mod.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,10 @@ fn serialize_v2_body(
200200
min_fee_rate: FeeRate,
201201
) -> Result<Vec<u8>, CreateRequestError> {
202202
// Grug say localhost base be discarded anyway. no big brain needed.
203+
let base_url = Url::parse("http://localhost").expect("invalid URL");
204+
203205
let placeholder_url = serialize_url(
204-
Url::parse("http://localhost").expect("localhost is a valid URL"),
206+
base_url,
205207
disable_output_substitution,
206208
fee_contribution,
207209
min_fee_rate,
@@ -325,22 +327,26 @@ impl HpkeContext {
325327
#[cfg(test)]
326328
mod test {
327329
#[test]
328-
fn req_ctx_ser_de_roundtrip() {
330+
fn req_ctx_ser_de_roundtrip() -> Result<(), payjoin_test_utils::BoxError> {
329331
use super::*;
330332
use crate::send::test::ORIGINAL_PSBT;
333+
334+
let psbt = Psbt::from_str(ORIGINAL_PSBT)?;
335+
let endpoint = Url::parse("http://localhost:1234")?;
331336
let req_ctx = Sender {
332337
v1: v1::Sender {
333-
psbt: Psbt::from_str(ORIGINAL_PSBT).unwrap(),
334-
endpoint: Url::parse("http://localhost:1234").unwrap(),
338+
psbt,
339+
endpoint,
335340
disable_output_substitution: false,
336341
fee_contribution: None,
337342
min_fee_rate: FeeRate::ZERO,
338343
payee: ScriptBuf::from(vec![0x00]),
339344
},
340345
reply_key: HpkeKeyPair::gen_keypair().0,
341346
};
342-
let serialized = serde_json::to_string(&req_ctx).unwrap();
343-
let deserialized = serde_json::from_str(&serialized).unwrap();
347+
let serialized = serde_json::to_string(&req_ctx)?;
348+
let deserialized = serde_json::from_str(&serialized)?;
344349
assert!(req_ctx == deserialized);
350+
Ok(())
345351
}
346352
}

0 commit comments

Comments
 (0)