From 9edd1ad2ed272cf0272b8bf2a30933a9b1def973 Mon Sep 17 00:00:00 2001 From: jakub-rdx <118203440+jakub-rdx@users.noreply.github.com> Date: Tue, 4 Jun 2024 13:29:23 +0200 Subject: [PATCH] Expose dapp interaction serialization methods and bump sargon version (#155) * Expose dapp interaction serialization methods and bump sargon version * add tests to kotlin extension methods * split uniffi sample methos into multiple files * fix tests * align extension codestyle and remove binaries * remove redundant annotations --- Cargo.lock | 2 +- Cargo.toml | 2 +- .../DappToWalletInteractionUnvalidated.kt | 13 ++++++++++ .../WalletToDappInteractionResponse.kt | 12 +++++++++ .../com/radixdlt/sargon/BagOfBytesTest.kt | 1 - .../DappToWalletInteractionUnvalidatedTest.kt | 16 ++++++++++++ .../java/com/radixdlt/sargon/P2PLinkTest.kt | 1 - .../sargon/RadixConnectPurposeTest.kt | 1 - .../WalletToDappInteractionResponseTest.kt | 16 ++++++++++++ .../dapp_to_wallet_interaction_uniffi_fn.rs | 26 +++++++++++++++++++ .../dapp_to_wallet/mod.rs | 4 +++ .../wallet_to_dapp_interaction_uniffi_fn.rs | 26 +++++++++++++++++++ 12 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/DappToWalletInteractionUnvalidated.kt create mode 100644 jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/WalletToDappInteractionResponse.kt create mode 100644 jvm/sargon-android/src/test/java/com/radixdlt/sargon/DappToWalletInteractionUnvalidatedTest.kt create mode 100644 jvm/sargon-android/src/test/java/com/radixdlt/sargon/WalletToDappInteractionResponseTest.kt create mode 100644 src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/dapp_to_wallet_interaction_uniffi_fn.rs create mode 100644 src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/wallet_to_dapp_interaction_uniffi_fn.rs diff --git a/Cargo.lock b/Cargo.lock index 8476bb5b5..e981427d7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2586,7 +2586,7 @@ dependencies = [ [[package]] name = "sargon" -version = "1.0.7" +version = "1.0.8" dependencies = [ "actix-rt", "aes-gcm", diff --git a/Cargo.toml b/Cargo.toml index ee64d56b1..f8c9a4fbf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sargon" -version = "1.0.7" +version = "1.0.8" edition = "2021" build = "build.rs" diff --git a/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/DappToWalletInteractionUnvalidated.kt b/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/DappToWalletInteractionUnvalidated.kt new file mode 100644 index 000000000..402409db1 --- /dev/null +++ b/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/DappToWalletInteractionUnvalidated.kt @@ -0,0 +1,13 @@ +package com.radixdlt.sargon.extensions + +import com.radixdlt.sargon.DappToWalletInteractionUnvalidated +import com.radixdlt.sargon.dappToWalletInteractionUnvalidatedToJsonBytes +import com.radixdlt.sargon.newDappToWalletInteractionUnvalidatedFromJsonBytes + +@Throws(SargonException::class) +fun DappToWalletInteractionUnvalidated.Companion.fromJson(json: String) = + newDappToWalletInteractionUnvalidatedFromJsonBytes(json.toByteArray().toBagOfBytes()) + +fun DappToWalletInteractionUnvalidated.toJson() = + dappToWalletInteractionUnvalidatedToJsonBytes(this).string + diff --git a/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/WalletToDappInteractionResponse.kt b/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/WalletToDappInteractionResponse.kt new file mode 100644 index 000000000..9c7a52f42 --- /dev/null +++ b/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/WalletToDappInteractionResponse.kt @@ -0,0 +1,12 @@ +package com.radixdlt.sargon.extensions + +import com.radixdlt.sargon.WalletToDappInteractionResponse +import com.radixdlt.sargon.newWalletToDappInteractionResponseFromJsonBytes +import com.radixdlt.sargon.walletToDappInteractionResponseToJsonBytes + +@Throws(SargonException::class) +fun WalletToDappInteractionResponse.Companion.fromJson(json: String) = + newWalletToDappInteractionResponseFromJsonBytes(json.toByteArray().toBagOfBytes()) + +fun WalletToDappInteractionResponse.toJson() = + walletToDappInteractionResponseToJsonBytes(this).string \ No newline at end of file diff --git a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/BagOfBytesTest.kt b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/BagOfBytesTest.kt index be14c2721..8993cdba7 100644 --- a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/BagOfBytesTest.kt +++ b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/BagOfBytesTest.kt @@ -3,7 +3,6 @@ package com.radixdlt.sargon import com.radixdlt.sargon.extensions.hash import com.radixdlt.sargon.extensions.hex import com.radixdlt.sargon.extensions.hexToBagOfBytes -import com.radixdlt.sargon.extensions.init import com.radixdlt.sargon.extensions.randomBagOfBytes import com.radixdlt.sargon.extensions.toBagOfBytes import com.radixdlt.sargon.samples.acedBagOfBytesSample diff --git a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/DappToWalletInteractionUnvalidatedTest.kt b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/DappToWalletInteractionUnvalidatedTest.kt new file mode 100644 index 000000000..6b5b1460a --- /dev/null +++ b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/DappToWalletInteractionUnvalidatedTest.kt @@ -0,0 +1,16 @@ +package com.radixdlt.sargon + +import com.radixdlt.sargon.extensions.fromJson +import com.radixdlt.sargon.extensions.toJson +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class DappToWalletInteractionUnvalidatedTest { + + @Test + fun testRoundtrip() { + val sample = newDappToWalletInteractionUnvalidatedSample() + assertEquals(sample, DappToWalletInteractionUnvalidated.Companion.fromJson(sample.toJson())) + } + +} \ No newline at end of file diff --git a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/P2PLinkTest.kt b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/P2PLinkTest.kt index 4da73b785..44c1299ac 100644 --- a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/P2PLinkTest.kt +++ b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/P2PLinkTest.kt @@ -2,7 +2,6 @@ package com.radixdlt.sargon import com.radixdlt.sargon.extensions.clientID import com.radixdlt.sargon.extensions.fromJson -import com.radixdlt.sargon.extensions.hex import com.radixdlt.sargon.extensions.init import com.radixdlt.sargon.extensions.toJson import com.radixdlt.sargon.samples.Sample diff --git a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/RadixConnectPurposeTest.kt b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/RadixConnectPurposeTest.kt index 9876f9be6..bd3a106f3 100644 --- a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/RadixConnectPurposeTest.kt +++ b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/RadixConnectPurposeTest.kt @@ -1,7 +1,6 @@ package com.radixdlt.sargon import com.radixdlt.sargon.extensions.init -import com.radixdlt.sargon.extensions.string import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test diff --git a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/WalletToDappInteractionResponseTest.kt b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/WalletToDappInteractionResponseTest.kt new file mode 100644 index 000000000..152dc7b2e --- /dev/null +++ b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/WalletToDappInteractionResponseTest.kt @@ -0,0 +1,16 @@ +package com.radixdlt.sargon + +import com.radixdlt.sargon.extensions.fromJson +import com.radixdlt.sargon.extensions.toJson +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class WalletToDappInteractionResponseTest { + + @Test + fun testRoundtrip() { + val sample = newWalletToDappInteractionResponseSample() + assertEquals(sample, WalletToDappInteractionResponse.Companion.fromJson(sample.toJson())) + } + +} \ No newline at end of file diff --git a/src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/dapp_to_wallet_interaction_uniffi_fn.rs b/src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/dapp_to_wallet_interaction_uniffi_fn.rs new file mode 100644 index 000000000..e9e05fbaf --- /dev/null +++ b/src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/dapp_to_wallet_interaction_uniffi_fn.rs @@ -0,0 +1,26 @@ +use crate::prelude::*; + +#[uniffi::export] +pub(crate) fn new_dapp_to_wallet_interaction_unvalidated_sample( +) -> DappToWalletInteractionUnvalidated { + DappToWalletInteractionUnvalidated::sample() +} + +#[uniffi::export] +pub(crate) fn new_dapp_to_wallet_interaction_unvalidated_sample_other( +) -> DappToWalletInteractionUnvalidated { + DappToWalletInteractionUnvalidated::sample_other() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn inequality_of_samples() { + assert_ne!( + new_dapp_to_wallet_interaction_unvalidated_sample(), + new_dapp_to_wallet_interaction_unvalidated_sample_other() + ); + } +} diff --git a/src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/mod.rs b/src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/mod.rs index 055e2b016..c273d751d 100644 --- a/src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/mod.rs +++ b/src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/mod.rs @@ -1,11 +1,15 @@ mod dapp_metadata; +mod dapp_to_wallet_interaction_uniffi_fn; mod interaction; mod interaction_items; mod interaction_uniffi_fn; mod interaction_unvalidated; +mod wallet_to_dapp_interaction_uniffi_fn; pub use dapp_metadata::*; +pub use dapp_to_wallet_interaction_uniffi_fn::*; pub use interaction::*; pub use interaction_items::*; pub use interaction_uniffi_fn::*; pub use interaction_unvalidated::*; +pub use wallet_to_dapp_interaction_uniffi_fn::*; diff --git a/src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/wallet_to_dapp_interaction_uniffi_fn.rs b/src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/wallet_to_dapp_interaction_uniffi_fn.rs new file mode 100644 index 000000000..bd6d384d2 --- /dev/null +++ b/src/radix_connect/wallet_interaction/dapp_wallet_interaction/dapp_to_wallet/wallet_to_dapp_interaction_uniffi_fn.rs @@ -0,0 +1,26 @@ +use crate::prelude::*; + +#[uniffi::export] +pub(crate) fn new_wallet_to_dapp_interaction_response_sample( +) -> WalletToDappInteractionResponse { + WalletToDappInteractionResponse::sample() +} + +#[uniffi::export] +pub(crate) fn new_wallet_to_dapp_interaction_response_sample_other( +) -> WalletToDappInteractionResponse { + WalletToDappInteractionResponse::sample_other() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn inequality_of_samples() { + assert_ne!( + new_wallet_to_dapp_interaction_response_sample(), + new_wallet_to_dapp_interaction_response_sample_other() + ); + } +}