From 26b94ddfcf3d5f423633d1dac836b38e20abfea9 Mon Sep 17 00:00:00 2001 From: fatemeh imanipour Date: Sat, 30 Aug 2025 18:54:04 +0330 Subject: [PATCH 1/5] Request assigned address based on currency name and gatewayUuid --- .../opex/bcgateway/app/controller/AddressController.kt | 4 ++-- .../nilin/opex/bcgateway/core/api/AssignAddressService.kt | 2 +- .../bcgateway/core/service/AssignAddressServiceImpl.kt | 7 +++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/AddressController.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/AddressController.kt index 4757b2737..ba408faa8 100644 --- a/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/AddressController.kt +++ b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/AddressController.kt @@ -23,7 +23,7 @@ class AddressController( private val reservedAddressHandler: ReservedAddressHandler, private val addressTypeHandler: AddressTypeHandler ) { - data class AssignAddressRequest(val uuid: String, val currency: String, val chain: String) + data class AssignAddressRequest(val uuid: String, val currency: String, val gatewayUuid: String) data class AssignAddressResponse(val addresses: List) @PostMapping("/assign") @@ -36,7 +36,7 @@ class AddressController( val assignedAddress = assignAddressService.assignAddress( assignAddressRequest.uuid, assignAddressRequest.currency, - assignAddressRequest.chain + assignAddressRequest.gatewayUuid ) return AssignAddressResponse(assignedAddress); diff --git a/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/AssignAddressService.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/AssignAddressService.kt index a154cfc0b..28864bad0 100644 --- a/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/AssignAddressService.kt +++ b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/AssignAddressService.kt @@ -5,5 +5,5 @@ import co.nilin.opex.bcgateway.core.model.AssignedAddress //import co.nilin.opex.bcgateway.core.model.Currency interface AssignAddressService { - suspend fun assignAddress(user: String, currency: String, chain: String): List + suspend fun assignAddress(user: String, currency: String, gatewayUuid: String): List } \ No newline at end of file diff --git a/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt index da6bc54b2..2f691f411 100644 --- a/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt +++ b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt @@ -12,6 +12,7 @@ import org.slf4j.Logger import org.springframework.beans.factory.annotation.Value import org.springframework.transaction.annotation.Transactional import java.time.LocalDateTime +import java.util.UUID open class AssignAddressServiceImpl( private val currencyHandler: CryptoCurrencyHandlerV2, @@ -25,14 +26,12 @@ open class AssignAddressServiceImpl( private val logger: Logger by LoggerDelegate() @Transactional - override suspend fun assignAddress(user: String, currency: String, chain: String): List { - logger.info("address life time: " + addressLifeTime.toString()) + override suspend fun assignAddress(user: String, currency: String, gatewayUuid: String): List { addressLifeTime = 7200 - val currencyInfo = currencyHandler.fetchCurrencyOnChainGateways(FetchGateways(currencySymbol = currency)) + val currencyInfo = currencyHandler.fetchCurrencyOnChainGateways(FetchGateways(currencySymbol = currency, gatewayUuid =gatewayUuid)) ?: throw OpexError.CurrencyNotFound.exception() val chains = currencyInfo ?.map { imp -> chainLoader.fetchChainInfo(imp.chain) } - ?.filter { it?.name.equals(chain, true) } val addressTypes = chains ?.flatMap { chain -> chain?.addressTypes!! } ?.distinct() From e32dfe36f1bf031c0a901048d0aad4c52ccd57af Mon Sep 17 00:00:00 2001 From: fatemeh imanipour Date: Sat, 30 Aug 2025 19:21:08 +0330 Subject: [PATCH 2/5] Change unit tests based on new structure of assigne address request --- .../AssignAddressServiceImplUnitTest.kt | 216 +++++++++--------- 1 file changed, 110 insertions(+), 106 deletions(-) diff --git a/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt index c4460698e..4fa3d163a 100644 --- a/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt +++ b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt @@ -23,10 +23,11 @@ class AssignAddressServiceImplUnitTest { private val assignAddressServiceImpl = - AssignAddressServiceImpl(currencyHandler, assignedAddressHandler, reservedAddressHandler, chainLoader) + AssignAddressServiceImpl(currencyHandler, assignedAddressHandler, reservedAddressHandler, chainLoader) // private val currency = Currency("ETH", "Ethereum") private val chain = "ETH_MAINNET" + private val gatewayUuid = "1" private val currency = "ETH" private val ethAddressType = AddressType(1, "ETH", "+*", ".*") private val ethMemoAddressType = AddressType(2, "ETH", "+*", "+*") @@ -36,51 +37,54 @@ class AssignAddressServiceImplUnitTest { init { val eth = CryptoCurrencyCommand( - currency, - UUID.randomUUID().toString(), - currency, - true, - true, - false, - null, - null, - BigDecimal.ZERO, - true, - true, - BigDecimal.ZERO, - BigDecimal.ZERO, - BigDecimal.ZERO, - BigDecimal.ZERO, - 18, - ethChain.name, - null + currency, + UUID.randomUUID().toString(), + currency, + true, + true, + false, + null, + null, + BigDecimal.ZERO, + true, + true, + BigDecimal.ZERO, + BigDecimal.ZERO, + BigDecimal.ZERO, + BigDecimal.ZERO, + 18, + ethChain.name, + null // ethChain ) val wrappedEth = CryptoCurrencyCommand( - currency, - UUID.randomUUID().toString(), - currency, - true, - true, - false, - "WETH", - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - BigDecimal.ZERO, - true, - true, - BigDecimal.ZERO, - BigDecimal.ZERO, - BigDecimal.ZERO, - BigDecimal.ZERO, - 18, - bscChain.name, - null + currency, + UUID.randomUUID().toString(), + currency, + true, + true, + false, + "WETH", + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + BigDecimal.ZERO, + true, + true, + BigDecimal.ZERO, + BigDecimal.ZERO, + BigDecimal.ZERO, + BigDecimal.ZERO, + 18, + bscChain.name, + null // bscChain ) + coEvery { currencyHandler.fetchCurrencyOnChainGateways(FetchGateways(currencySymbol = currency, gatewayUuid = gatewayUuid)) } returns + listOf(eth, wrappedEth) + coEvery { currencyHandler.fetchCurrencyOnChainGateways(FetchGateways(currencySymbol = currency)) } returns listOf(eth, wrappedEth) @@ -95,96 +99,96 @@ class AssignAddressServiceImplUnitTest { @Test fun givenReservedAddressAndUserWithNoAssignedAddress_whenAssignAddress_thenReservedAddressAssigned(): Unit = - runBlocking { - val user = UUID.randomUUID().toString() - coEvery { - assignedAddressHandler.fetchAssignedAddresses( - eq(user), - any() - ) - } returns emptyList() - - coEvery { reservedAddressHandler.peekReservedAddress(ethAddressType) } returns ReservedAddress( - "0x1", - null, - ethAddressType - ) - - coEvery { reservedAddressHandler.peekReservedAddress(ethMemoAddressType) } returns ReservedAddress( - "0x2", - "Memo", - ethMemoAddressType - ) + runBlocking { + val user = UUID.randomUUID().toString() + coEvery { + assignedAddressHandler.fetchAssignedAddresses( + eq(user), + any() + ) + } returns emptyList() - val assignedAddress = assignAddressServiceImpl.assignAddress(user, currency, chain) - assertThat(assignedAddress).isEqualTo( - listOf( - AssignedAddress( - user, + coEvery { reservedAddressHandler.peekReservedAddress(ethAddressType) } returns ReservedAddress( "0x1", null, - ethAddressType, - mutableListOf(ethChain) + ethAddressType + ) - ) + coEvery { reservedAddressHandler.peekReservedAddress(ethMemoAddressType) } returns ReservedAddress( + "0x2", + "Memo", + ethMemoAddressType ) - ) - } + + val assignedAddress = assignAddressServiceImpl.assignAddress(user, currency, gatewayUuid) + assertThat(assignedAddress).isEqualTo( + listOf( + AssignedAddress( + user, + "0x1", + null, + ethAddressType, + mutableListOf(ethChain) + + ) + ) + ) + } @Test fun givenNoReservedAddressAndUserWithNoAssignedAddress_whenAssignAddress_thenExcpetion(): Unit = runBlocking { val user = UUID.randomUUID().toString() coEvery { assignedAddressHandler.fetchAssignedAddresses( - user, - listOf(ethAddressType, ethMemoAddressType) + user, + listOf(ethAddressType, ethMemoAddressType) ) } returns emptyList() coEvery { reservedAddressHandler.peekReservedAddress(ethAddressType) } returns null - coEvery { assignAddressServiceImpl.assignAddress(user, currency, chain) } throws RuntimeException() + coEvery { assignAddressServiceImpl.assignAddress(user, currency, gatewayUuid) } throws RuntimeException() } @Test fun givenReservedAddressAndUserOneAssignedAddress_whenAssignAddress_thenReservedAddressAssigned(): Unit = - runBlocking { - val user = UUID.randomUUID().toString() - coEvery { - assignedAddressHandler.fetchAssignedAddresses( - eq(user), - any() - ) - } returns mutableListOf( - AssignedAddress( - user, - "0x1", - null, - ethAddressType, - mutableListOf(ethChain) + runBlocking { + val user = UUID.randomUUID().toString() + coEvery { + assignedAddressHandler.fetchAssignedAddresses( + eq(user), + any() + ) + } returns mutableListOf( + AssignedAddress( + user, + "0x1", + null, + ethAddressType, + mutableListOf(ethChain) + ) ) - ) - coEvery { reservedAddressHandler.peekReservedAddress(ethAddressType) } returns ReservedAddress( - "0x1", - null, - ethAddressType - ) - coEvery { reservedAddressHandler.peekReservedAddress(ethMemoAddressType) } returns ReservedAddress( - "0x2", - "Memo", - ethMemoAddressType - ) - - val assignedAddress = assignAddressServiceImpl.assignAddress(user, currency, chain) - assertThat(assignedAddress).isEqualTo( - listOf( - AssignedAddress( - user, + coEvery { reservedAddressHandler.peekReservedAddress(ethAddressType) } returns ReservedAddress( "0x1", null, - ethAddressType, - mutableListOf(ethChain) - ) + ethAddressType ) - ) - } + coEvery { reservedAddressHandler.peekReservedAddress(ethMemoAddressType) } returns ReservedAddress( + "0x2", + "Memo", + ethMemoAddressType + ) + + val assignedAddress = assignAddressServiceImpl.assignAddress(user, currency, gatewayUuid) + assertThat(assignedAddress).isEqualTo( + listOf( + AssignedAddress( + user, + "0x1", + null, + ethAddressType, + mutableListOf(ethChain) + ) + ) + ) + } } From cee447e8602d54efc83f9fee6adefc18fd2a9380 Mon Sep 17 00:00:00 2001 From: fatemeh imanipour Date: Sat, 30 Aug 2025 21:02:35 +0330 Subject: [PATCH 3/5] Change unit tests based on new structure of assigne address request --- .../core/service/AssignAddressServiceImpl.kt | 35 ++++++------------- 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt index 2f691f411..0e22081a9 100644 --- a/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt +++ b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt @@ -2,22 +2,19 @@ package co.nilin.opex.bcgateway.core.service import co.nilin.opex.bcgateway.core.api.AssignAddressService import co.nilin.opex.bcgateway.core.model.* -import co.nilin.opex.bcgateway.core.spi.AssignedAddressHandler -import co.nilin.opex.bcgateway.core.spi.ChainLoader -import co.nilin.opex.bcgateway.core.spi.CryptoCurrencyHandlerV2 -import co.nilin.opex.bcgateway.core.spi.ReservedAddressHandler +import co.nilin.opex.bcgateway.core.spi.* import co.nilin.opex.bcgateway.core.utils.LoggerDelegate import co.nilin.opex.common.OpexError import org.slf4j.Logger import org.springframework.beans.factory.annotation.Value import org.springframework.transaction.annotation.Transactional import java.time.LocalDateTime -import java.util.UUID open class AssignAddressServiceImpl( private val currencyHandler: CryptoCurrencyHandlerV2, private val assignedAddressHandler: AssignedAddressHandler, private val reservedAddressHandler: ReservedAddressHandler, + private val addressTypeHandler: AddressTypeHandler, private val chainLoader: ChainLoader ) : AssignAddressService { @@ -28,31 +25,21 @@ open class AssignAddressServiceImpl( @Transactional override suspend fun assignAddress(user: String, currency: String, gatewayUuid: String): List { addressLifeTime = 7200 - val currencyInfo = currencyHandler.fetchCurrencyOnChainGateways(FetchGateways(currencySymbol = currency, gatewayUuid =gatewayUuid)) + val requestedGateway = currencyHandler.fetchOnChainGateway(currency = currency, gatewayUuid = gatewayUuid) ?: throw OpexError.CurrencyNotFound.exception() - val chains = currencyInfo - ?.map { imp -> chainLoader.fetchChainInfo(imp.chain) } - val addressTypes = chains - ?.flatMap { chain -> chain?.addressTypes!! } - ?.distinct() - val chainAddressTypeMap = HashMap>() - chains?.forEach { chain -> - chain?.addressTypes?.forEach { addressType -> - chainAddressTypeMap.putIfAbsent(addressType, mutableListOf()) - chainAddressTypeMap.getValue(addressType).add(chain!!) - } - } + + val requestedChain = chainLoader.fetchChainInfo(requestedGateway.chain) + + val addressTypes = chainLoader.fetchChainInfo(requestedChain.name)?.addressTypes + val userAssignedAddresses = (assignedAddressHandler.fetchAssignedAddresses(user, addressTypes!!)).toMutableList() + val result = mutableSetOf() + addressTypes.forEach { addressType -> val assigned = userAssignedAddresses.firstOrNull { assignAddress -> assignAddress.type == addressType } if (assigned != null) { - chainAddressTypeMap[addressType]?.forEach { chain -> - if (!assigned.chains.contains(chain)) { - assigned.chains.add(chain) - } - } result.add(assigned) } else { val reservedAddress = reservedAddressHandler.peekReservedAddress(addressType) @@ -62,7 +49,7 @@ open class AssignAddressServiceImpl( reservedAddress.address, reservedAddress.memo, addressType, - chainAddressTypeMap[addressType]!!, + listOf(requestedChain).toMutableList(), addressLifeTime?.let { LocalDateTime.now().plusSeconds(addressLifeTime!!) } ?: null, LocalDateTime.now(), From 2e80006d63aeb7467be7cea542af9c244a6f2b33 Mon Sep 17 00:00:00 2001 From: fatemeh imanipour Date: Sun, 31 Aug 2025 12:27:44 +0330 Subject: [PATCH 4/5] Change unit tests based on new structure of assigne address request --- .../bcgateway/core/service/AssignAddressServiceImpl.kt | 6 +++--- .../core/service/AssignAddressServiceImplUnitTest.kt | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt index 0e22081a9..72492bdce 100644 --- a/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt +++ b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt @@ -14,7 +14,6 @@ open class AssignAddressServiceImpl( private val currencyHandler: CryptoCurrencyHandlerV2, private val assignedAddressHandler: AssignedAddressHandler, private val reservedAddressHandler: ReservedAddressHandler, - private val addressTypeHandler: AddressTypeHandler, private val chainLoader: ChainLoader ) : AssignAddressService { @@ -24,13 +23,14 @@ open class AssignAddressServiceImpl( @Transactional override suspend fun assignAddress(user: String, currency: String, gatewayUuid: String): List { + addressLifeTime = 7200 + val requestedGateway = currencyHandler.fetchOnChainGateway(currency = currency, gatewayUuid = gatewayUuid) ?: throw OpexError.CurrencyNotFound.exception() val requestedChain = chainLoader.fetchChainInfo(requestedGateway.chain) - - val addressTypes = chainLoader.fetchChainInfo(requestedChain.name)?.addressTypes + val addressTypes = requestedChain?.addressTypes val userAssignedAddresses = (assignedAddressHandler.fetchAssignedAddresses(user, addressTypes!!)).toMutableList() diff --git a/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt index 4fa3d163a..23aa3ac9a 100644 --- a/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt +++ b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt @@ -2,10 +2,7 @@ package co.nilin.opex.bcgateway.core.service //import co.nilin.opex.bcgateway.core.spi.CurrencyHandler import co.nilin.opex.bcgateway.core.model.* -import co.nilin.opex.bcgateway.core.spi.AssignedAddressHandler -import co.nilin.opex.bcgateway.core.spi.ChainLoader -import co.nilin.opex.bcgateway.core.spi.CryptoCurrencyHandlerV2 -import co.nilin.opex.bcgateway.core.spi.ReservedAddressHandler +import co.nilin.opex.bcgateway.core.spi.* import io.mockk.coEvery import io.mockk.mockk import kotlinx.coroutines.runBlocking @@ -95,6 +92,8 @@ class AssignAddressServiceImplUnitTest { coEvery { assignedAddressHandler.persist(any()) } returns Unit coEvery { reservedAddressHandler.remove(any()) } returns Unit + + } @Test From 542c32d73836513f6c8bf357826624899abf6cb8 Mon Sep 17 00:00:00 2001 From: fatemeh imanipour Date: Sun, 31 Aug 2025 12:53:41 +0330 Subject: [PATCH 5/5] Change unit tests based on new structure of assigne address request --- .../AssignAddressServiceImplUnitTest.kt | 227 +++++++++--------- 1 file changed, 120 insertions(+), 107 deletions(-) diff --git a/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt index 23aa3ac9a..404845d6c 100644 --- a/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt +++ b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt @@ -2,7 +2,10 @@ package co.nilin.opex.bcgateway.core.service //import co.nilin.opex.bcgateway.core.spi.CurrencyHandler import co.nilin.opex.bcgateway.core.model.* -import co.nilin.opex.bcgateway.core.spi.* +import co.nilin.opex.bcgateway.core.spi.AssignedAddressHandler +import co.nilin.opex.bcgateway.core.spi.ChainLoader +import co.nilin.opex.bcgateway.core.spi.CryptoCurrencyHandlerV2 +import co.nilin.opex.bcgateway.core.spi.ReservedAddressHandler import io.mockk.coEvery import io.mockk.mockk import kotlinx.coroutines.runBlocking @@ -20,7 +23,7 @@ class AssignAddressServiceImplUnitTest { private val assignAddressServiceImpl = - AssignAddressServiceImpl(currencyHandler, assignedAddressHandler, reservedAddressHandler, chainLoader) + AssignAddressServiceImpl(currencyHandler, assignedAddressHandler, reservedAddressHandler, chainLoader) // private val currency = Currency("ETH", "Ethereum") private val chain = "ETH_MAINNET" @@ -34,52 +37,59 @@ class AssignAddressServiceImplUnitTest { init { val eth = CryptoCurrencyCommand( - currency, - UUID.randomUUID().toString(), - currency, - true, - true, - false, - null, - null, - BigDecimal.ZERO, - true, - true, - BigDecimal.ZERO, - BigDecimal.ZERO, - BigDecimal.ZERO, - BigDecimal.ZERO, - 18, - ethChain.name, - null + currency, + UUID.randomUUID().toString(), + currency, + true, + true, + false, + null, + null, + BigDecimal.ZERO, + true, + true, + BigDecimal.ZERO, + BigDecimal.ZERO, + BigDecimal.ZERO, + BigDecimal.ZERO, + 18, + ethChain.name, + null // ethChain ) val wrappedEth = CryptoCurrencyCommand( - currency, - UUID.randomUUID().toString(), - currency, - true, - true, - false, - "WETH", - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - BigDecimal.ZERO, - true, - true, - BigDecimal.ZERO, - BigDecimal.ZERO, - BigDecimal.ZERO, - BigDecimal.ZERO, - 18, - bscChain.name, - null + currency, + UUID.randomUUID().toString(), + currency, + true, + true, + false, + "WETH", + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + BigDecimal.ZERO, + true, + true, + BigDecimal.ZERO, + BigDecimal.ZERO, + BigDecimal.ZERO, + BigDecimal.ZERO, + 18, + bscChain.name, + null // bscChain ) - coEvery { currencyHandler.fetchCurrencyOnChainGateways(FetchGateways(currencySymbol = currency, gatewayUuid = gatewayUuid)) } returns + coEvery { + currencyHandler.fetchCurrencyOnChainGateways( + FetchGateways( + currencySymbol = currency, + gatewayUuid = gatewayUuid + ) + ) + } returns listOf(eth, wrappedEth) coEvery { currencyHandler.fetchCurrencyOnChainGateways(FetchGateways(currencySymbol = currency)) } returns @@ -89,6 +99,9 @@ class AssignAddressServiceImplUnitTest { coEvery { chainLoader.fetchChainInfo(chain = bscChain.name) } returns bscChain + coEvery { currencyHandler.fetchOnChainGateway(currency = currency, gatewayUuid = gatewayUuid) } returns eth + + coEvery { assignedAddressHandler.persist(any()) } returns Unit coEvery { reservedAddressHandler.remove(any()) } returns Unit @@ -98,49 +111,49 @@ class AssignAddressServiceImplUnitTest { @Test fun givenReservedAddressAndUserWithNoAssignedAddress_whenAssignAddress_thenReservedAddressAssigned(): Unit = - runBlocking { - val user = UUID.randomUUID().toString() - coEvery { - assignedAddressHandler.fetchAssignedAddresses( - eq(user), - any() - ) - } returns emptyList() + runBlocking { + val user = UUID.randomUUID().toString() + coEvery { + assignedAddressHandler.fetchAssignedAddresses( + eq(user), + any() + ) + } returns emptyList() - coEvery { reservedAddressHandler.peekReservedAddress(ethAddressType) } returns ReservedAddress( + coEvery { reservedAddressHandler.peekReservedAddress(ethAddressType) } returns ReservedAddress( + "0x1", + null, + ethAddressType + ) + + coEvery { reservedAddressHandler.peekReservedAddress(ethMemoAddressType) } returns ReservedAddress( + "0x2", + "Memo", + ethMemoAddressType + ) + + val assignedAddress = assignAddressServiceImpl.assignAddress(user, currency, gatewayUuid) + assertThat(assignedAddress).isEqualTo( + listOf( + AssignedAddress( + user, "0x1", null, - ethAddressType - ) - - coEvery { reservedAddressHandler.peekReservedAddress(ethMemoAddressType) } returns ReservedAddress( - "0x2", - "Memo", - ethMemoAddressType - ) + ethAddressType, + mutableListOf(ethChain) - val assignedAddress = assignAddressServiceImpl.assignAddress(user, currency, gatewayUuid) - assertThat(assignedAddress).isEqualTo( - listOf( - AssignedAddress( - user, - "0x1", - null, - ethAddressType, - mutableListOf(ethChain) - - ) - ) + ) ) - } + ) + } @Test fun givenNoReservedAddressAndUserWithNoAssignedAddress_whenAssignAddress_thenExcpetion(): Unit = runBlocking { val user = UUID.randomUUID().toString() coEvery { assignedAddressHandler.fetchAssignedAddresses( - user, - listOf(ethAddressType, ethMemoAddressType) + user, + listOf(ethAddressType, ethMemoAddressType) ) } returns emptyList() coEvery { reservedAddressHandler.peekReservedAddress(ethAddressType) } returns null @@ -149,45 +162,45 @@ class AssignAddressServiceImplUnitTest { @Test fun givenReservedAddressAndUserOneAssignedAddress_whenAssignAddress_thenReservedAddressAssigned(): Unit = - runBlocking { - val user = UUID.randomUUID().toString() - coEvery { - assignedAddressHandler.fetchAssignedAddresses( - eq(user), - any() - ) - } returns mutableListOf( - AssignedAddress( - user, - "0x1", - null, - ethAddressType, - mutableListOf(ethChain) - ) + runBlocking { + val user = UUID.randomUUID().toString() + coEvery { + assignedAddressHandler.fetchAssignedAddresses( + eq(user), + any() ) - coEvery { reservedAddressHandler.peekReservedAddress(ethAddressType) } returns ReservedAddress( - "0x1", - null, - ethAddressType - ) - coEvery { reservedAddressHandler.peekReservedAddress(ethMemoAddressType) } returns ReservedAddress( - "0x2", - "Memo", - ethMemoAddressType + } returns mutableListOf( + AssignedAddress( + user, + "0x1", + null, + ethAddressType, + mutableListOf(ethChain) ) + ) + coEvery { reservedAddressHandler.peekReservedAddress(ethAddressType) } returns ReservedAddress( + "0x1", + null, + ethAddressType + ) + coEvery { reservedAddressHandler.peekReservedAddress(ethMemoAddressType) } returns ReservedAddress( + "0x2", + "Memo", + ethMemoAddressType + ) - val assignedAddress = assignAddressServiceImpl.assignAddress(user, currency, gatewayUuid) - assertThat(assignedAddress).isEqualTo( - listOf( - AssignedAddress( - user, - "0x1", - null, - ethAddressType, - mutableListOf(ethChain) - ) - ) + val assignedAddress = assignAddressServiceImpl.assignAddress(user, currency, gatewayUuid) + assertThat(assignedAddress).isEqualTo( + listOf( + AssignedAddress( + user, + "0x1", + null, + ethAddressType, + mutableListOf(ethChain) + ) ) - } + ) + } }