Esempio n. 1
0
        public async Task ValidateBlockBeforeAttach_InvalidTransaction_ReturnFalse()
        {
            var chain = await _blockchainService.GetChainAsync();

            var transaction = await _osTestHelper.GenerateTransferTransaction();

            transaction.Signature = ByteString.Empty;
            var block = _osTestHelper.GenerateBlockWithTransactions(chain.BestChainHash, chain.BestChainHeight,
                                                                    new [] { transaction });

            var result = await _blockSyncValidationService.ValidateBlockBeforeAttachAsync(block);

            result.ShouldBeFalse();
        }
        public async Task TransactionBroadcastStream_UnknownPeer_Test()
        {
            var metadata = new Metadata {
                { GrpcConstants.PubkeyMetadataKey, "UnknownPeerPubkey" }
            };

            var transaction = await _osTestHelper.GenerateTransferTransaction();

            var requestStream = new TestAsyncStreamReader <Transaction>(new List <Transaction> {
                transaction
            });
            await _serverService.TransactionBroadcastStream(requestStream, BuildServerCallContext(metadata))
            .ShouldThrowAsync <RpcException>();
        }
Esempio n. 3
0
        public async Task SentTransaction_Token_Check_Test()
        {
            //user without token - NotExisted
            {
                var keyPair      = CryptoHelper.GenerateKeyPair();
                var tokenAddress = GetTokenContractAddress();

                //approve transaction
                var transaction = await GenerateTransaction(keyPair, tokenAddress, "Approve", new ApproveInput
                {
                    Amount  = 100,
                    Spender = Address.FromPublicKey(CryptoHelper.GenerateKeyPair().PublicKey),
                    Symbol  = "Check user without token whether can sent transaction"
                });

                var transactionId = await SendTransactionAsync(transaction);

                var transactionResult = await QueryTransactionResultAsync(transactionId);

                Enum.TryParse <TransactionResultStatus>(transactionResult.Status, true, out var status);
                status.ShouldBe(TransactionResultStatus.NotExisted);
            }

            //bp user with token - Mined
            {
                var transaction = await _osTestHelper.GenerateTransferTransaction();

                var transactionId = await SendTransactionAsync(transaction);

                var transactionResult = await QueryTransactionResultAsync(transactionId);

                Enum.TryParse <TransactionResultStatus>(transactionResult.Status, true, out var status);
                status.ShouldBe(TransactionResultStatus.Mined);
            }
        }
        public void Setup(BenchmarkContext context)
        {
            _osTestHelper = GetRequiredService <OSTestHelper>();

            _counter = context.GetCounter("TestCounter");

            AsyncHelper.RunSync(async() =>
            {
                _transaction = await _osTestHelper.GenerateTransferTransaction();
            });
        }
        public async Task SentTransaction_Token_Check_Test()
        {
            //user without token - NotExisted
            {
                var keyPair      = CryptoHelper.GenerateKeyPair();
                var tokenAddress =
                    await _smartContractAddressService.GetAddressByContractNameAsync(await _osTestHelper.GetChainContextAsync(),
                                                                                     TokenSmartContractAddressNameProvider.StringName);

                //approve transaction
                var transaction = await GenerateTransaction(keyPair, tokenAddress, "Approve", new ApproveInput
                {
                    Amount  = 100,
                    Spender = Address.FromPublicKey(CryptoHelper.GenerateKeyPair().PublicKey),
                    // TODO: valid symbol needed for a test case not related to token symbol
                    Symbol = "Check user without token whether can sent transaction"
                });

                var transactionId = await SendTransactionAsync(transaction);

                var transactionResult = await QueryTransactionResultAsync(transactionId);

                Enum.TryParse <TransactionResultStatus>(transactionResult.Status, true, out var status);
                status.ShouldBe(TransactionResultStatus.Failed);
            }

            //bp user with token - Mined
            {
                var transaction = await _osTestHelper.GenerateTransferTransaction();

                var transactionId = await SendTransactionAsync(transaction);

                var transactionResult = await QueryTransactionResultAsync(transactionId);

                Enum.TryParse <TransactionResultStatus>(transactionResult.Status, true, out var status);
                status.ShouldBe(TransactionResultStatus.Mined);
            }
        }
Esempio n. 6
0
        public async Task SentTransaction_Token_Check_Test()
        {
            //user without token - NotExisted
            {
                var keyPair      = CryptoHelper.GenerateKeyPair();
                var tokenAddress = GetTokenContractAddress();

                //approve transaction
                var transaction = await GenerateTransaction(keyPair, tokenAddress, "Approve", new ApproveInput
                {
                    Amount  = 100,
                    Spender = Address.FromPublicKey(CryptoHelper.GenerateKeyPair().PublicKey),
                    // TODO: valid symbol needed for a test case not related to token symbol
                    Symbol = "Check user without token whether can sent transaction"
                });

                var transactionId = await SendTransactionAsync(transaction);

                var transactionResult = await QueryTransactionResultAsync(transactionId);

                Enum.TryParse <TransactionResultStatus>(transactionResult.Status, true, out var status);
                status.ShouldBe(TransactionResultStatus.Failed);
                // transactionResult.Error.ShouldBe(ExecutionStatus.ExecutionStoppedByPrePlugin.ToString());
            }

            //bp user with token - Mined
            {
                var transaction = await _osTestHelper.GenerateTransferTransaction();

                var transactionId = await SendTransactionAsync(transaction);

                var transactionResult = await QueryTransactionResultAsync(transactionId);

                Enum.TryParse <TransactionResultStatus>(transactionResult.Status, true, out var status);
                status.ShouldBe(TransactionResultStatus.Mined);
            }
        }
        public async Task GlobalSetup()
        {
            _osTestHelper = GetRequiredService <OSTestHelper>();

            _transaction = await _osTestHelper.GenerateTransferTransaction();
        }
Esempio n. 8
0
        public async Task GetBlockHeightTest()
        {
            // Get current height
            var response = await GetResponseAsStringAsync("/api/blockChain/blockHeight");

            var currentHeight = long.Parse(response);

            var chain = await _blockchainService.GetChainAsync();

            currentHeight.ShouldBe(chain.BestChainHeight);

            // Mined one block
            var transaction = await _osTestHelper.GenerateTransferTransaction();

            await _osTestHelper.BroadcastTransactions(new List <Transaction> {
                transaction
            });

            await _osTestHelper.MinedOneBlock();

            // Get latest height
            response = await GetResponseAsStringAsync("/api/blockChain/blockHeight");

            var height = long.Parse(response);

            height.ShouldBe(currentHeight + 1);
        }
Esempio n. 9
0
        public async Task Get_BlockHeight_Success()
        {
            // Get current height
            var response = await JsonCallAsJObject("/chain", "GetBlockHeight");

            var currentHeight = (int)response["result"];

            // Mined one block
            var chain = await _blockchainService.GetChainAsync();

            var transaction = await _osTestHelper.GenerateTransferTransaction();

            await _osTestHelper.BroadcastTransactions(new List <Transaction> {
                transaction
            });

            await _osTestHelper.MinedOneBlock();

            // Get latest height
            response = await JsonCallAsJObject("/chain", "GetBlockHeight");

            var height = (int)response["result"];

            height.ShouldBe(currentHeight + 1);
        }