private async Task <TransactionResult> GetTransactionResult(Hash txHash) { // in storage var res = await _transactionResultQueryService.GetTransactionResultAsync(txHash); if (res != null) { return(res); } // in tx pool var receipt = await _txHub.GetTransactionReceiptAsync(txHash); if (receipt != null) { return(new TransactionResult { TransactionId = receipt.TransactionId, Status = TransactionResultStatus.Pending }); } // not existed return(new TransactionResult { TransactionId = txHash, Status = TransactionResultStatus.NotExisted }); }
public async Task Broadcast_UnableVerify_Transaction_ReturnInvalidTransaction() { // Generate unsigned transaction var transaction = await _osTestHelper.GenerateTransferTransaction(); transaction.Signature = ByteString.CopyFrom(new byte[0]); var response = await JsonCallAsJObject("/chain", "BroadcastTransaction", new { rawTransaction = transaction.ToByteArray().ToHex() }); var responseCode = (long)response["error"]["code"]; var responseMessage = response["error"]["message"].ToString(); responseCode.ShouldBe(Error.InvalidTransaction); responseMessage.ShouldBe(Error.Message[Error.InvalidTransaction]); var existTransaction = await _txHub.GetTransactionReceiptAsync(transaction.GetHash()); existTransaction.ShouldBeNull(); }
public async Task Broadcast_UnableVerify_Transaction_ReturnInvalidTransaction() { // Generate unsigned transaction var transaction = await _osTestHelper.GenerateTransferTransaction(); transaction.Signature = ByteString.CopyFrom(new byte[0]); var parameters = new Dictionary <string, string> { { "rawTransaction", transaction.ToByteArray().ToHex() } }; var response = await PostResponseAsObjectAsync <WebAppErrorResponse>( "/api/blockChain/broadcastTransaction", parameters, expectedStatusCode : HttpStatusCode.Forbidden); response.Error.Code.ShouldBe(Error.InvalidTransaction.ToString()); response.Error.Message.ShouldBe(Error.Message[Error.InvalidTransaction]); var existTransaction = await _txHub.GetTransactionReceiptAsync(transaction.GetHash()); existTransaction.ShouldBeNull(); }