Skip to content

Commit 3a80bbc

Browse files
authored
Merge pull request #34 from OpenFuturePlatform/track-wallet-#33
Track wallet after Scaffold generation #33
2 parents 264529a + ca36d08 commit 3a80bbc

File tree

4 files changed

+32
-8
lines changed

4 files changed

+32
-8
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
package io.openfuture.api.domain.scaffold
22

3-
import io.openfuture.api.annotation.Address
3+
import io.openfuture.api.annotation.Url
44
import io.openfuture.api.entity.scaffold.Currency
55
import io.openfuture.api.entity.scaffold.ScaffoldVersion
66
import javax.validation.Valid
77
import javax.validation.constraints.*
88

99
data class SaveEthereumScaffoldRequest(
10-
@Address @field:NotBlank var address: String? = null,
10+
@field:NotBlank var address: String? = null,
1111
@field:NotBlank var abi: String? = null,
1212
@field:NotBlank var openKey: String? = null,
13-
@field:NotBlank @field:Address var developerAddress: String? = null,
13+
@field:NotBlank var developerAddress: String? = null,
1414
@field:NotBlank var description: String? = null,
1515
@field:NotBlank @field:Digits(integer = Int.MAX_VALUE, fraction = Int.MAX_VALUE) var fiatAmount: String? = null,
1616
@field:NotNull var currency: Currency? = null,
1717
@field:NotBlank @field:Digits(integer = Int.MAX_VALUE, fraction = Int.MAX_VALUE) var conversionAmount: String? = null,
18-
var webHook: String? = null,
18+
@field:Url var webHook: String? = null,
1919
@field:NotEmpty @field:Size(max = 9) @field:Valid var properties: List<EthereumScaffoldPropertyDto> = listOf(),
2020
@field:NotNull var version: ScaffoldVersion = ScaffoldVersion.last()
21-
)
21+
)

src/main/kotlin/io/openfuture/api/service/DefaultEthereumScaffoldService.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.openfuture.api.service
22

33
import io.openfuture.api.component.scaffold.processor.ScaffoldProcessor
4+
import io.openfuture.api.component.state.StateApi
45
import io.openfuture.api.config.propety.ScaffoldProperties
56
import io.openfuture.api.domain.holder.AddEthereumShareHolderRequest
67
import io.openfuture.api.domain.holder.UpdateEthereumShareHolderRequest
@@ -9,6 +10,7 @@ import io.openfuture.api.entity.auth.User
910
import io.openfuture.api.entity.scaffold.EthereumScaffold
1011
import io.openfuture.api.entity.scaffold.EthereumScaffoldProperty
1112
import io.openfuture.api.entity.scaffold.EthereumScaffoldSummary
13+
import io.openfuture.api.entity.state.Blockchain
1214
import io.openfuture.api.exception.NotFoundException
1315
import io.openfuture.api.repository.EthereumScaffoldPropertyRepository
1416
import io.openfuture.api.repository.EthereumScaffoldRepository
@@ -29,7 +31,8 @@ class DefaultEthereumScaffoldService(
2931
private val propertyRepository: EthereumScaffoldPropertyRepository,
3032
private val ethereumScaffoldSummaryRepository: EthereumScaffoldSummaryRepository,
3133
private val shareHolderRepository: ShareHolderRepository,
32-
private val openKeyService: OpenKeyService
34+
private val openKeyService: OpenKeyService,
35+
private val stateApi: StateApi
3336
) : EthereumScaffoldService {
3437

3538
@Transactional(readOnly = true)
@@ -80,6 +83,7 @@ class DefaultEthereumScaffoldService(
8083
val properties = request.properties.map { propertyRepository.save(EthereumScaffoldProperty.of(scaffold, it)) }
8184
scaffold.property.addAll(properties)
8285
getScaffoldSummary(scaffold.address, openKey.user, true)
86+
request.webHook?.let { stateApi.createWallet(scaffold.developerAddress, it, Blockchain.Ethereum) }
8387
return scaffold
8488
}
8589

src/test/kotlin/io/openfuture/api/controller/api/EthereumScaffoldApiControllerTests.kt

+19-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ class EthereumScaffoldApiControllerTests : ControllerTests() {
138138
val openKey = createOpenKey(setOf(Role("ROLE_MASTER")))
139139
val scaffold = createScaffold(openKey)
140140
val request = SaveEthereumScaffoldRequest("0x8cf1664B09F216538bc9A32B2c26f85a19fd76B5", "abi", "openKey",
141-
"0x8cf1664B09F216538bc9A32B2c26f85a19fd76B5", "description", "2", USD, "0.0023", "webHook",
141+
"0x8cf1664B09F216538bc9A32B2c26f85a19fd76B5", "description", "2", USD, "0.0023", "https://www.openfuture.io/api",
142142
listOf(createScaffoldPropertyDto()))
143143
val requestJson = objectMapper.writeValueAsString(request)
144144

@@ -154,6 +154,24 @@ class EthereumScaffoldApiControllerTests : ControllerTests() {
154154
.andExpect(content().json(expectScaffoldJson(scaffold), true))
155155
}
156156

157+
@Test
158+
fun saveShouldReturnBadRequestTest() {
159+
val openKey = createOpenKey(setOf(Role("ROLE_MASTER")))
160+
val request = SaveEthereumScaffoldRequest("0x8cf1664B09F216538bc9A32B2c26f85a19fd76B5", "abi", "openKey",
161+
"0x8cf1664B09F216538bc9A32B2c26f85a19fd76B5", "description", "2", USD, "0.0023", "invalid webhhok",
162+
listOf(createScaffoldPropertyDto()))
163+
val requestJson = objectMapper.writeValueAsString(request)
164+
165+
given(keyService.find(openKey.value)).willReturn(openKey)
166+
167+
mvc.perform(post("/api/ethereum-scaffolds")
168+
.header(AUTHORIZATION, openKey.value)
169+
.contentType(APPLICATION_JSON_UTF8)
170+
.content(requestJson))
171+
172+
.andExpect(status().isBadRequest)
173+
}
174+
157175
@Test
158176
fun updateTest() {
159177
val openKey = createOpenKey(setOf(Role("ROLE_MASTER")))

src/test/kotlin/io/openfuture/api/service/DefaultEthereumScaffoldServiceTests.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.openfuture.api.service
22

33
import io.openfuture.api.component.scaffold.processor.ScaffoldProcessor
4+
import io.openfuture.api.component.state.StateApi
45
import io.openfuture.api.config.UnitTest
56
import io.openfuture.api.config.any
67
import io.openfuture.api.config.propety.ScaffoldProperties
@@ -40,6 +41,7 @@ internal class DefaultEthereumScaffoldServiceTests : UnitTest() {
4041
@Mock private lateinit var propertyRepository: EthereumScaffoldPropertyRepository
4142
@Mock private lateinit var ethereumScaffoldSummaryRepository: EthereumScaffoldSummaryRepository
4243
@Mock private lateinit var shareHolderRepository: ShareHolderRepository
44+
@Mock private lateinit var stateApi: StateApi
4345

4446
@Mock
4547
private lateinit var pageable: Pageable
@@ -50,7 +52,7 @@ internal class DefaultEthereumScaffoldServiceTests : UnitTest() {
5052
@Before
5153
fun setUp() {
5254
service = DefaultEthereumScaffoldService(processor, properties, repositoryEthereum, propertyRepository, ethereumScaffoldSummaryRepository,
53-
shareHolderRepository, openKeyService)
55+
shareHolderRepository, openKeyService, stateApi)
5456
}
5557

5658
@Test

0 commit comments

Comments
 (0)