integration_test.rs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. use std::str::FromStr;
  2. use std::thread;
  3. use std::time::Duration;
  4. use bitcoin::Amount;
  5. use lightning_invoice::Invoice;
  6. use url::Url;
  7. use cashu_rs::{cashu_mint::CashuMint, types::BlindedMessages};
  8. const MINTURL: &str = "https://legend.lnbits.com/cashu/api/v1/SKvHRus9dmjWHhstHrsazW/";
  9. #[tokio::test]
  10. async fn test_get_mint_keys() {
  11. let url = Url::from_str(MINTURL).unwrap();
  12. let mint = CashuMint::new(url);
  13. let mint_keys = mint.get_keys().await.unwrap();
  14. // println!("{:?}", mint_keys.0.capacity());
  15. assert!(mint_keys.0.capacity() > 1);
  16. }
  17. #[tokio::test]
  18. async fn test_get_mint_keysets() {
  19. let url = Url::from_str(MINTURL).unwrap();
  20. let mint = CashuMint::new(url);
  21. let mint_keysets = mint.get_keysets().await.unwrap();
  22. assert!(!mint_keysets.keysets.is_empty())
  23. }
  24. #[tokio::test]
  25. async fn test_request_mint() {
  26. let url = Url::from_str(MINTURL).unwrap();
  27. let mint = CashuMint::new(url);
  28. let mint = mint.request_mint(Amount::from_sat(21)).await.unwrap();
  29. assert!(mint.pr.check_signature().is_ok())
  30. }
  31. #[tokio::test]
  32. async fn test_mint() {
  33. let url = Url::from_str(MINTURL).unwrap();
  34. let mint = CashuMint::new(url);
  35. let mint_req = mint.request_mint(Amount::from_sat(21)).await.unwrap();
  36. println!("Mint Req: {:?}", mint_req.pr.to_string());
  37. // Since before the mind happens the invoice in the int req has to be payed this wait is here
  38. // probally some way to simulate this in a better way
  39. // but for now pay it quick
  40. thread::sleep(Duration::from_secs(10));
  41. let blinded_messages = BlindedMessages::random(Amount::from_sat(21)).unwrap();
  42. let mint_res = mint.mint(blinded_messages, &mint_req.hash).await.unwrap();
  43. println!("Mint: {:?}", mint_res);
  44. }
  45. #[tokio::test]
  46. async fn test_check_fees() {
  47. let invoice = Invoice::from_str("lnbc10n1p3a6s0dsp5n55r506t2fv4r0mjcg30v569nk2u9s40ur4v3r3mgtscjvkvnrqqpp5lzfv8fmjzduelk74y9rsrxrayvhyzcdsh3zkdgv0g50napzalvqsdqhf9h8vmmfvdjn5gp58qengdqxq8p3aaymdcqpjrzjqwryaup9lh50kkranzgcdnn2fgvx390wgj5jd07rwr3vxeje0glc7z70cgqqg4sqqqqqqqlgqqqqrucqjq9qyysgqrjky5axsldzhqsjwsc38xa37k6t04le3ws4t26nqej62vst5xkz56qw85r6c4a3tr79588e0ceuuahwgfnkqc6n6269unlwqtvwr5vqqy0ncdq").unwrap();
  48. let url = Url::from_str(MINTURL).unwrap();
  49. let mint = CashuMint::new(url);
  50. let fee = mint.check_fees(invoice).await.unwrap();
  51. println!("{fee:?}");
  52. }
  53. #[ignore]
  54. #[tokio::test]
  55. async fn test_get_mint_info() {
  56. let url = Url::from_str(MINTURL).unwrap();
  57. let mint = CashuMint::new(url);
  58. let _mint_info = mint.get_info().await.unwrap();
  59. // println!("{:?}", mint_info);
  60. }