From d72d887224346c95cc9203577106e05cd70aa2ca Mon Sep 17 00:00:00 2001 From: Katarzyna Streich Date: Thu, 21 Sep 2017 14:50:20 +0100 Subject: [PATCH] Fix BankOfCorda demo after services removal (#1584) * Fix BankOfCorda demo after services removal * Add CashConfigDataFlow permission to BankOfCorda * Address comments * Add permission --- docs/source/running-the-demos.rst | 5 ----- samples/bank-of-corda-demo/build.gradle | 6 ++++-- .../kotlin/net/corda/bank/BankOfCordaHttpAPITest.kt | 4 +++- .../src/main/kotlin/net/corda/bank/BankOfCordaDriver.kt | 3 ++- .../main/kotlin/net/corda/bank/api/BankOfCordaClientApi.kt | 6 +++--- .../src/main/kotlin/net/corda/bank/api/BankOfCordaWebApi.kt | 4 ++-- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/source/running-the-demos.rst b/docs/source/running-the-demos.rst index 53ab0a85ac..a20990dab9 100644 --- a/docs/source/running-the-demos.rst +++ b/docs/source/running-the-demos.rst @@ -192,11 +192,6 @@ To run from the command line in Windows: .. note:: To verify that the Bank of Corda node is alive and running, navigate to the following URL: http://localhost:10007/api/bank/date -.. note:: The Bank of Corda node explicitly advertises with a node service type as follows: - ``advertisedServices = ["corda.issuer.USD"]`` - This allows for 3rd party applications to perform actions based on Node Type. - For example, the Explorer tool only allows nodes of this type to issue and exit cash. - In the window you run the command you should see (in case of Web, RPC is simmilar): - Requesting Cash via Web ... diff --git a/samples/bank-of-corda-demo/build.gradle b/samples/bank-of-corda-demo/build.gradle index 1ecf9f160a..4da684ed47 100644 --- a/samples/bank-of-corda-demo/build.gradle +++ b/samples/bank-of-corda-demo/build.gradle @@ -71,7 +71,8 @@ task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) { 'permissions': ["StartFlow.net.corda.finance.flows.CashPaymentFlow", "StartFlow.net.corda.finance.flows.CashConfigDataFlow", "StartFlow.net.corda.finance.flows.CashExitFlow", - "StartFlow.net.corda.finance.flows.CashIssueAndPaymentFlow"]] + "StartFlow.net.corda.finance.flows.CashIssueAndPaymentFlow", + "StartFlow.net.corda.finance.flows.CashConfigDataFlow"]] ] } node { @@ -84,7 +85,8 @@ task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) { rpcUsers = [ ['username' : "bigCorpUser", 'password' : "test", - 'permissions': ["StartFlow.net.corda.flows.CashPaymentFlow"]] + 'permissions': ["StartFlow.net.corda.finance.flows.CashPaymentFlow", + "StartFlow.net.corda.finance.flows.CashConfigDataFlow"]] ] } } diff --git a/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaHttpAPITest.kt b/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaHttpAPITest.kt index b7d931d99d..a1781fd1c6 100644 --- a/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaHttpAPITest.kt +++ b/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaHttpAPITest.kt @@ -7,6 +7,7 @@ import net.corda.nodeapi.ServiceInfo import net.corda.node.services.transactions.SimpleNotaryService import net.corda.testing.BOC import net.corda.testing.driver.driver +import net.corda.testing.notary import org.junit.Test import kotlin.test.assertTrue @@ -18,7 +19,8 @@ class BankOfCordaHttpAPITest { val nodeBankOfCordaFuture = startNode(providedName = BOC.name, advertisedServices = setOf(ServiceInfo(SimpleNotaryService.type))) val (nodeBankOfCorda) = listOf(nodeBankOfCordaFuture, bigCorpNodeFuture).map { it.getOrThrow() } val nodeBankOfCordaApiAddr = startWebserver(nodeBankOfCorda).getOrThrow().listenAddress - assertTrue(BankOfCordaClientApi(nodeBankOfCordaApiAddr).requestWebIssue(IssueRequestParams(1000, "USD", BIGCORP_LEGAL_NAME, "1", BOC.name, BOC.name))) + val notaryName = notary().node.nodeInfo.legalIdentities[1].name + assertTrue(BankOfCordaClientApi(nodeBankOfCordaApiAddr).requestWebIssue(IssueRequestParams(1000, "USD", BIGCORP_LEGAL_NAME, "1", BOC.name, notaryName))) }, isDebug = true) } } diff --git a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaDriver.kt b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaDriver.kt index 8b139ba6f2..4fa643ac76 100644 --- a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaDriver.kt +++ b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaDriver.kt @@ -54,7 +54,8 @@ private class BankOfCordaDriver { // The ISSUE_CASH will request some Cash from the ISSUER on behalf of Big Corporation node val role = options.valueOf(roleArg)!! - val requestParams = IssueRequestParams(options.valueOf(quantity), options.valueOf(currency), BIGCORP_LEGAL_NAME, "1", BOC.name, DUMMY_NOTARY.name) + val requestParams = IssueRequestParams(options.valueOf(quantity), options.valueOf(currency), BIGCORP_LEGAL_NAME, + "1", BOC.name, DUMMY_NOTARY.name.copy(commonName = "corda.notary.validating")) try { when (role) { diff --git a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaClientApi.kt b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaClientApi.kt index b65a7f3131..39b738f04b 100644 --- a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaClientApi.kt +++ b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaClientApi.kt @@ -40,9 +40,9 @@ class BankOfCordaClientApi(val hostAndPort: NetworkHostAndPort) { // Resolve parties via RPC val issueToParty = rpc.partyFromX500Name(params.issueToPartyName) - ?: throw Exception("Unable to locate ${params.issueToPartyName} in Network Map Service") - val notaryLegalIdentity = rpc.partyFromX500Name(params.notaryName) - ?: throw IllegalStateException("Unable to locate ${params.notaryName} in Network Map Service") + ?: throw IllegalStateException("Unable to locate ${params.issueToPartyName} in Network Map Service") + val notaryLegalIdentity = rpc.notaryIdentities().firstOrNull { it.name == params.notaryName } ?: + throw IllegalStateException("Couldn't locate notary ${params.notaryName} in NetworkMapCache") val amount = Amount(params.amount, Currency.getInstance(params.currency)) val anonymous = true diff --git a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaWebApi.kt b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaWebApi.kt index 2a25342416..b651455765 100644 --- a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaWebApi.kt +++ b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/api/BankOfCordaWebApi.kt @@ -44,8 +44,8 @@ class BankOfCordaWebApi(val rpc: CordaRPCOps) { val issueToParty = rpc.partyFromX500Name(params.issueToPartyName) ?: return Response.status(Response.Status.FORBIDDEN).entity("Unable to locate ${params.issueToPartyName} in identity service").build() rpc.partyFromX500Name(params.issuerBankName) ?: return Response.status(Response.Status.FORBIDDEN).entity("Unable to locate ${params.issuerBankName} in identity service").build() - val notaryParty = rpc.partyFromX500Name(params.notaryName) - ?: return Response.status(Response.Status.FORBIDDEN).entity("Unable to locate ${params.notaryName} in identity service").build() + val notaryParty = rpc.notaryIdentities().firstOrNull { it.name == params.notaryName } + ?: return Response.status(Response.Status.FORBIDDEN).entity("Unable to locate notary ${params.notaryName} in network map").build() val amount = Amount(params.amount, Currency.getInstance(params.currency)) val anonymous = true