diff --git a/protocol/sign/build.gradle.kts b/protocol/sign/build.gradle.kts index baccc829d..a9a1d4a60 100644 --- a/protocol/sign/build.gradle.kts +++ b/protocol/sign/build.gradle.kts @@ -102,7 +102,7 @@ dependencies { debugImplementation(project(":core:android")) releaseImplementation("com.reown:android-core:$CORE_VERSION") - implementation("org.msgpack:msgpack-core:0.9.1") + implementation("org.msgpack:msgpack-core:0.9.11") ksp(libs.moshi.ksp) implementation(libs.bundles.sqlDelight) diff --git a/protocol/sign/src/main/kotlin/com/reown/sign/engine/use_case/calls/ApproveSessionUseCase.kt b/protocol/sign/src/main/kotlin/com/reown/sign/engine/use_case/calls/ApproveSessionUseCase.kt index 4f135cbc7..61d5a4423 100644 --- a/protocol/sign/src/main/kotlin/com/reown/sign/engine/use_case/calls/ApproveSessionUseCase.kt +++ b/protocol/sign/src/main/kotlin/com/reown/sign/engine/use_case/calls/ApproveSessionUseCase.kt @@ -182,7 +182,7 @@ internal interface ApproveSessionUseCaseInterface { sessionNamespaces: Map, sessionProperties: Map? = null, scopedProperties: Map? = null, - proposalRequestsResponses: EngineDO.ProposalRequestsResponses?, + proposalRequestsResponses: EngineDO.ProposalRequestsResponses? = null, onSuccess: () -> Unit = {}, onFailure: (Throwable) -> Unit = {}, ) diff --git a/protocol/sign/src/test/kotlin/com/reown/sign/AttestationIdGenerationTest.kt b/protocol/sign/src/test/kotlin/com/reown/sign/AttestationIdGenerationTest.kt index 3e2dcd708..cc18d228a 100644 --- a/protocol/sign/src/test/kotlin/com/reown/sign/AttestationIdGenerationTest.kt +++ b/protocol/sign/src/test/kotlin/com/reown/sign/AttestationIdGenerationTest.kt @@ -71,7 +71,8 @@ class AttestationIdGenerationTest { ), properties = mapOf("expiry" to "2022-12-24T17:07:31+00:00", "caip154-mandatory" to "true"), expiryTimestamp = 123456789, - scopedProperties = null + scopedProperties = null, + requests = null ) val sessionPropose = SignRpc.SessionPropose(id = 1681757953038968, params = params) @@ -104,7 +105,8 @@ class AttestationIdGenerationTest { ), properties = null, scopedProperties = null, - expiryTimestamp = 123456789 + expiryTimestamp = 123456789, + requests = null ) val sessionPropose = SignRpc.SessionPropose(id = 1681824460577019, params = params) diff --git a/protocol/sign/src/test/kotlin/com/reown/sign/mappers/EngineMapperTest.kt b/protocol/sign/src/test/kotlin/com/reown/sign/mappers/EngineMapperTest.kt index 48b604e97..7b7111fea 100644 --- a/protocol/sign/src/test/kotlin/com/reown/sign/mappers/EngineMapperTest.kt +++ b/protocol/sign/src/test/kotlin/com/reown/sign/mappers/EngineMapperTest.kt @@ -43,7 +43,7 @@ class EngineMapperTest { relays = listOf(RelayProtocolOptions()), properties = emptyMap(), scopedProperties = null, - proposer = SessionProposer("", AppMetaData("", "", listOf(svgIcon), "")), expiryTimestamp = 123456789 + proposer = SessionProposer("", AppMetaData("", "", listOf(svgIcon), "")), expiryTimestamp = 123456789, requests = null ) sessionProposeParams.toEngineDO(Topic("topic")).also { diff --git a/protocol/sign/src/test/kotlin/com/reown/sign/util/GenerateApprovedNamespacesUtilsTest.kt b/protocol/sign/src/test/kotlin/com/reown/sign/util/GenerateApprovedNamespacesUtilsTest.kt index f4e7c0a2b..77b841f9f 100644 --- a/protocol/sign/src/test/kotlin/com/reown/sign/util/GenerateApprovedNamespacesUtilsTest.kt +++ b/protocol/sign/src/test/kotlin/com/reown/sign/util/GenerateApprovedNamespacesUtilsTest.kt @@ -33,7 +33,11 @@ class GenerateApprovedNamespacesUtilsTest { fun testNamespacesNormalizationMixedApproach() { val namespaces = mapOf( "eip155:1" to Namespace.Proposal(methods = listOf("method_1", "method_2"), events = listOf("event_1", "event_2")), - "eip155" to Namespace.Proposal(chains = listOf("eip155:2"), methods = listOf("method_11", "method_22"), events = listOf("event_11", "event_22")), + "eip155" to Namespace.Proposal( + chains = listOf("eip155:2"), + methods = listOf("method_11", "method_22"), + events = listOf("event_11", "event_22") + ), ) val normalizedNamespaces = mapOf( @@ -119,7 +123,22 @@ class GenerateApprovedNamespacesUtilsTest { ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( "eip155" to Sign.Model.Namespace.Session( @@ -181,7 +200,22 @@ class GenerateApprovedNamespacesUtilsTest { ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( "eip155" to Sign.Model.Namespace.Session( @@ -213,7 +247,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = listOf("eip155:1:0x57f48fAFeC1d76B27e3f29b8d277b6218CDE6092") ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -240,7 +289,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = listOf("eip155:1:0x57f48fAFeC1d76B27e3f29b8d277b6218CDE6092") ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -284,7 +348,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = listOf("solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp:5r9aH2Jm9K6N1QP247TByNg34jMsFvcM5fGBYpw4w5nm") ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -302,7 +381,13 @@ class GenerateApprovedNamespacesUtilsTest { @Test fun `test if methods in optional namespaces are satisfied if events are empty`() { val required = mapOf("eip155" to Sign.Model.Namespace.Proposal(chains = listOf("eip155:1"), methods = listOf(), events = listOf())) - val optional = mapOf("eip155" to Sign.Model.Namespace.Proposal(chains = listOf("eip155:1"), methods = listOf("eth_sendTransaction"), events = listOf(""))) + val optional = mapOf( + "eip155" to Sign.Model.Namespace.Proposal( + chains = listOf("eip155:1"), + methods = listOf("eth_sendTransaction"), + events = listOf("") + ) + ) val supported = mapOf( "eip155" to Sign.Model.Namespace.Session( chains = listOf("eip155:1"), @@ -311,7 +396,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = listOf("eip155:1:0x57f48fAFeC1d76B27e3f29b8d277b6218CDE6092") ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -328,8 +428,20 @@ class GenerateApprovedNamespacesUtilsTest { @Test fun `generate approved namespaces - config 1 - optional method`() { - val required = mapOf("eip155" to Sign.Model.Namespace.Proposal(chains = listOf("eip155:1"), methods = listOf("personal_sign"), events = listOf("chainChanged"))) - val optional = mapOf("eip155" to Sign.Model.Namespace.Proposal(chains = listOf("eip155:1"), methods = listOf("eth_sendTransaction"), events = listOf(""))) + val required = mapOf( + "eip155" to Sign.Model.Namespace.Proposal( + chains = listOf("eip155:1"), + methods = listOf("personal_sign"), + events = listOf("chainChanged") + ) + ) + val optional = mapOf( + "eip155" to Sign.Model.Namespace.Proposal( + chains = listOf("eip155:1"), + methods = listOf("eth_sendTransaction"), + events = listOf("") + ) + ) val supported = mapOf( "eip155" to Sign.Model.Namespace.Session( chains = listOf("eip155:1", "eip155:137", "eip155:3"), @@ -342,7 +454,22 @@ class GenerateApprovedNamespacesUtilsTest { ) ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -381,7 +508,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = listOf("eip155:1:0x57f48fAFeC1d76B27e3f29b8d277b6218CDE6092", "eip155:2:0x57f48fAFeC1d76B27e3f29b8d277b6218CDE6092") ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -398,8 +540,18 @@ class GenerateApprovedNamespacesUtilsTest { @Test fun `generate approved namespaces - config 3 - inline chain`() { - val required = mapOf("eip155:1" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged"))) - val optional = mapOf("eip155:2" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged"))) + val required = mapOf( + "eip155:1" to Sign.Model.Namespace.Proposal( + methods = listOf("eth_sendTransaction", "personal_sign"), + events = listOf("chainChanged") + ) + ) + val optional = mapOf( + "eip155:2" to Sign.Model.Namespace.Proposal( + methods = listOf("eth_sendTransaction", "personal_sign"), + events = listOf("chainChanged") + ) + ) val supported = mapOf( "eip155" to Sign.Model.Namespace.Session( chains = listOf("eip155:1", "eip155:2", "eip155:3"), @@ -408,7 +560,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = listOf("eip155:1:0x57f48fAFeC1d76B27e3f29b8d277b6218CDE6092", "eip155:2:0x57f48fAFeC1d76B27e3f29b8d277b6218CDE6092") ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -448,7 +615,22 @@ class GenerateApprovedNamespacesUtilsTest { ) ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -474,7 +656,11 @@ class GenerateApprovedNamespacesUtilsTest { "eip155:2" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")) ) val optional = mapOf( - "eip155" to Sign.Model.Namespace.Proposal(chains = listOf("eip155:3"), methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")), + "eip155" to Sign.Model.Namespace.Proposal( + chains = listOf("eip155:3"), + methods = listOf("eth_sendTransaction", "personal_sign"), + events = listOf("chainChanged") + ), "eip155:4" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")) ) val accounts = listOf( @@ -491,7 +677,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = accounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -513,7 +714,11 @@ class GenerateApprovedNamespacesUtilsTest { "eip155:2" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")) ) val optional = mapOf( - "eip155" to Sign.Model.Namespace.Proposal(chains = listOf("eip155:3"), methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")), + "eip155" to Sign.Model.Namespace.Proposal( + chains = listOf("eip155:3"), + methods = listOf("eth_sendTransaction", "personal_sign"), + events = listOf("chainChanged") + ), "eip155:4" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")) ) val accounts = listOf( @@ -528,7 +733,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = accounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -550,7 +770,11 @@ class GenerateApprovedNamespacesUtilsTest { "eip155:2" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")) ) val optional = mapOf( - "eip155" to Sign.Model.Namespace.Proposal(chains = listOf("eip155:3"), methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")), + "eip155" to Sign.Model.Namespace.Proposal( + chains = listOf("eip155:3"), + methods = listOf("eth_sendTransaction", "personal_sign"), + events = listOf("chainChanged") + ), "eip155:4" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")) ) val accounts = listOf( @@ -566,7 +790,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = accounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -606,7 +845,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = accounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -646,7 +900,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = accounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -687,7 +956,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = accounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -709,7 +993,11 @@ class GenerateApprovedNamespacesUtilsTest { fun `generate approved namespaces - config 11 - multiple required namespaces`() { val required = mapOf( "eip155:1" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")), - "cosmos" to Sign.Model.Namespace.Proposal(chains = listOf("cosmos:cosmoshub-4"), methods = listOf("cosmos_method"), events = listOf("cosmos_event")) + "cosmos" to Sign.Model.Namespace.Proposal( + chains = listOf("cosmos:cosmoshub-4"), + methods = listOf("cosmos_method"), + events = listOf("cosmos_event") + ) ) val optional = mapOf( "eip155" to Sign.Model.Namespace.Proposal( @@ -743,7 +1031,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = cosmosAccounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( @@ -771,7 +1074,11 @@ class GenerateApprovedNamespacesUtilsTest { fun `should throw error - config 1 - required chains are not supported`() { val required = mapOf( "eip155:1" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")), - "cosmos" to Sign.Model.Namespace.Proposal(chains = listOf("cosmos:cosmoshub-4"), methods = listOf("cosmos_method"), events = listOf("cosmos_event")) + "cosmos" to Sign.Model.Namespace.Proposal( + chains = listOf("cosmos:cosmoshub-4"), + methods = listOf("cosmos_method"), + events = listOf("cosmos_event") + ) ) val optional = mapOf( "eip155" to Sign.Model.Namespace.Proposal( @@ -794,7 +1101,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = eipAccounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val exception = assertThrows(Exception::class.java) { generateApprovedNamespaces(proposal, supported) } assertEquals("All required namespaces must be approved", "${exception.message}") } @@ -803,7 +1125,11 @@ class GenerateApprovedNamespacesUtilsTest { fun `should throw error - config 2 - partially supported required chains`() { val required = mapOf( "eip155:1" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged")), - "cosmos" to Sign.Model.Namespace.Proposal(chains = listOf("cosmos:cosmoshub-4"), methods = listOf("cosmos_method"), events = listOf("cosmos_event")) + "cosmos" to Sign.Model.Namespace.Proposal( + chains = listOf("cosmos:cosmoshub-4"), + methods = listOf("cosmos_method"), + events = listOf("cosmos_event") + ) ) val optional = mapOf( "eip155" to Sign.Model.Namespace.Proposal( @@ -826,14 +1152,34 @@ class GenerateApprovedNamespacesUtilsTest { accounts = eipAccounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val exception = assertThrows(Exception::class.java) { generateApprovedNamespaces(proposal, supported) } assertEquals("All required namespaces must be approved", "${exception.message}") } @Test fun `should throw error - config 3 - not supported required methods`() { - val required = mapOf("eip155:1" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged"))) + val required = mapOf( + "eip155:1" to Sign.Model.Namespace.Proposal( + methods = listOf("eth_sendTransaction", "personal_sign"), + events = listOf("chainChanged") + ) + ) val optional = mapOf( "eip155" to Sign.Model.Namespace.Proposal( chains = listOf("eip155:1", "eip155:2"), @@ -855,14 +1201,34 @@ class GenerateApprovedNamespacesUtilsTest { accounts = eipAccounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val exception = assertThrows(Exception::class.java) { generateApprovedNamespaces(proposal, supported) } assertEquals("All required namespaces must be approved: not all methods are approved", "${exception.message}") } @Test fun `should throw error - config 4 - not supported required methods`() { - val required = mapOf("eip155:1" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged"))) + val required = mapOf( + "eip155:1" to Sign.Model.Namespace.Proposal( + methods = listOf("eth_sendTransaction", "personal_sign"), + events = listOf("chainChanged") + ) + ) val optional = mapOf( "eip155" to Sign.Model.Namespace.Proposal( chains = listOf("eip155:1", "eip155:2"), @@ -884,14 +1250,34 @@ class GenerateApprovedNamespacesUtilsTest { accounts = eipAccounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val exception = assertThrows(Exception::class.java) { generateApprovedNamespaces(proposal, supported) } assertEquals("All required namespaces must be approved: not all methods are approved", "${exception.message}") } @Test fun `should throw error - config 5 - no accounts for required chains`() { - val required = mapOf("eip155:1" to Sign.Model.Namespace.Proposal(methods = listOf("eth_sendTransaction", "personal_sign"), events = listOf("chainChanged"))) + val required = mapOf( + "eip155:1" to Sign.Model.Namespace.Proposal( + methods = listOf("eth_sendTransaction", "personal_sign"), + events = listOf("chainChanged") + ) + ) val optional = mapOf( "eip155" to Sign.Model.Namespace.Proposal( chains = listOf("eip155:1", "eip155:2"), @@ -913,7 +1299,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = eipAccounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val exception = assertThrows(Exception::class.java) { generateApprovedNamespaces(proposal, supported) } assertEquals("Accounts must be defined in matching namespace", "${exception.message}") } @@ -945,7 +1346,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = eipAccounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val exception = assertThrows(Exception::class.java) { generateApprovedNamespaces(proposal, supported) } assertEquals("Accounts must be defined in matching namespace", "${exception.message}") } @@ -977,7 +1393,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = eipAccounts ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val exception = assertThrows(Exception::class.java) { generateApprovedNamespaces(proposal, supported) } assertEquals("Accounts must be CAIP-10 compliant", "${exception.message}") } @@ -1016,7 +1447,22 @@ class GenerateApprovedNamespacesUtilsTest { accounts = listOf("bip122:000000000019d6689c085ae165831e92:0x57f48fAFeC1d76B27e3f29b8d277b6218CDE6092") ) ) - val proposal = Sign.Model.SessionProposal("", "", "", "", listOf(), "", requiredNamespaces = required, optionalNamespaces = optional, mapOf(), "", "", "", mapOf()) + val proposal = Sign.Model.SessionProposal( + "", + "", + "", + "", + listOf(), + "", + requiredNamespaces = required, + optionalNamespaces = optional, + mapOf(), + "", + "", + "", + mapOf(), + null + ) val approved = generateApprovedNamespaces(proposal, supported) val expected = mapOf( diff --git a/sample/dapp/proguard-rules.pro b/sample/dapp/proguard-rules.pro index b7388a14d..42aa01f2f 100644 --- a/sample/dapp/proguard-rules.pro +++ b/sample/dapp/proguard-rules.pro @@ -18,4 +18,8 @@ } -dontwarn uniffi.** --dontwarn com.sun.jna.** \ No newline at end of file +-dontwarn com.sun.jna.** + +# msgpack-core uses sun.nio.ch.DirectBuffer for optimized buffer access on JVM, +# which is not available on Android +-dontwarn sun.nio.ch.** \ No newline at end of file diff --git a/sample/modal/proguard-rules.pro b/sample/modal/proguard-rules.pro index b7388a14d..42aa01f2f 100644 --- a/sample/modal/proguard-rules.pro +++ b/sample/modal/proguard-rules.pro @@ -18,4 +18,8 @@ } -dontwarn uniffi.** --dontwarn com.sun.jna.** \ No newline at end of file +-dontwarn com.sun.jna.** + +# msgpack-core uses sun.nio.ch.DirectBuffer for optimized buffer access on JVM, +# which is not available on Android +-dontwarn sun.nio.ch.** \ No newline at end of file diff --git a/sample/pos/proguard-rules.pro b/sample/pos/proguard-rules.pro index 3abc39c8e..e579dad4e 100644 --- a/sample/pos/proguard-rules.pro +++ b/sample/pos/proguard-rules.pro @@ -1,2 +1,6 @@ -keepnames class com.fasterxml.jackson.** { *; } --dontwarn com.fasterxml.jackson.databind.** \ No newline at end of file +-dontwarn com.fasterxml.jackson.databind.** + +# msgpack-core uses sun.nio.ch.DirectBuffer for optimized buffer access on JVM, +# which is not available on Android +-dontwarn sun.nio.ch.** \ No newline at end of file diff --git a/sample/wallet/proguard-rules.pro b/sample/wallet/proguard-rules.pro index 2b85c10bf..412de70ca 100644 --- a/sample/wallet/proguard-rules.pro +++ b/sample/wallet/proguard-rules.pro @@ -85,6 +85,10 @@ # Gson specific classes -dontwarn sun.misc.** + +# msgpack-core uses sun.nio.ch.DirectBuffer for optimized buffer access on JVM, +# which is not available on Android +-dontwarn sun.nio.ch.** #-keep class com.google.gson.stream.** { *; } # Application classes that will be serialized/deserialized over Gson