Exemple #1
0
        public static void SaveErrors(ContractWrapper cw, SqlConnection con)
        {
            var sql = @"
						Insert INTO ContractError(Fk_Contract,Fk_ContractErrorType,Text) 
						VALUES(@fk_Contract,@fk_ContractErrorType,@text);
					"                    ;

            try
            {
                foreach (var err in cw.Errors)
                {
                    using (var cmd = new SqlCommand(sql, con))
                    {
                        cmd.Parameters.AddRange(new[] {
                            new SqlParameter("@fk_Contract", cw.Id),
                            new SqlParameter("@fk_ContractErrorType", (int)err.ErrorType),
                            new SqlParameter("@text", (object)err.Text ?? DBNull.Value),
                        });
                        cmd.ExecuteNonQuery();
                    };
                }
            }
            catch
            {
                // int i = 5;
            }
        }
        public void Invoke()
        {
            var contract = new ContractWrapper(NetworkType.Privnet);
            var hash     = contract.WriteToBlockchain("test text".AsByteArray());

            contract.ReadFromBlockchain(hash);

            Assert.AreEqual("test text", hash);
        }
Exemple #3
0
        public void ShouldCheckForNewupdate()
        {
            string lookupContractAddress = "0xa454963c7a6dcbdcd0d3fb281f4e67262fb71586";
            string ncContractAddress     = "0x5f51f49e25b2ba1acc779066a2614eb70a9093a0";
            string rpc = Environment.GetEnvironmentVariable("TEST_RPC") ?? "http://localhost:8545";
            string validatorAddress      = "0xc3681dfe99730eb45154208cba7b0df7e705f305";
            string fileToPersistBlockNum = Path.GetTempFileName();

            ResetToSnapshot(rpc);

            // no new update should be seen
            ContractWrapper cw        = new ContractWrapper(lookupContractAddress, rpc, validatorAddress, new MockLogger(), "test", _keyjson, fileToPersistBlockNum);
            bool            hasUpdate = cw.HasNewUpdate().Result;

            hasUpdate.Should().Be(false);


            // Send an update
            // prepare RPC connection to play some tx

            string  contractOwnerPk = "ae29ab491cf53d8b63f281cc5eecdbbac4a992b2a4bf483bacae66dfff0740f0";
            Account account         = new Account(contractOwnerPk);

            // create a web 3 instance
            Web3 web3 = new Web3(account, rpc);

            // hook up to the contract and event
            ContractHandler contractHandler = web3.Eth.GetContractHandler(ncContractAddress);

            // contract gets primed with by ganache start
            // const valAddr = "0xc3681dfe99730eb45154208cba7b0df7e705f305"; // first addr in ganache
            // contract.updateValidator(valAddr, '0x123456', 'parity/parity:v2.3.3', '0x123456', 'https://chainspec', true);

            TransactionReceipt confirmResponse = contractHandler.SendRequestAndWaitForReceiptAsync(new UpdateValidatorFunction
            {
                DockerSha        = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x23 },
                DockerName       = "parity/parity:v2.3.4",
                ChainspecSha     = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x23 },
                ChainspecUrl     = "https://example.com" + new Random().Next(),
                IsSigning        = true,
                ValidatorAddress = validatorAddress
            }).Result;


            bool?hasErrors = confirmResponse.HasErrors();

            if (hasErrors.HasValue && hasErrors.Value)
            {
                throw new ContractException("Unable to confirm update");
            }

            // now an update should be seen
            bool hasUpdate2Nd = cw.HasNewUpdate().Result;

            hasUpdate2Nd.Should().Be(true);
        }
Exemple #4
0
        static void Main(string[] args)
        {
            var contract  = new ContractWrapper(NetworkType.Privnet);
            var hash      = contract.WriteToBlockchain("test text".AsByteArray());
            var readValue = contract.ReadFromBlockchain(hash);

            if ("test text" != readValue)
            {
                throw new NotSupportedException();
            }
        }
Exemple #5
0
        public void ShouldBeAbleToConfirmUpdate()
        {
            string contractAddress       = "0xa454963c7a6dcbdcd0d3fb281f4e67262fb71586";
            string rpc                   = Environment.GetEnvironmentVariable("TEST_RPC") ?? "http://localhost:8545";
            string validatorAddress      = "0xc3681dfe99730eb45154208cba7b0df7e705f305";
            string fileToPersistBlockNum = Path.GetTempFileName();


            ResetToSnapshot(rpc);

            IContractWrapper cw = new ContractWrapper(contractAddress, rpc, validatorAddress, new MockLogger(), "test", _keyjson, fileToPersistBlockNum);

            cw.ConfirmUpdate().Wait();
        }
Exemple #6
0
        public void ShouldQueryContract()
        {
            string contractAddress       = "0xa454963c7a6dcbdcd0d3fb281f4e67262fb71586";
            string rpc                   = Environment.GetEnvironmentVariable("TEST_RPC") ?? "http://localhost:8545";
            string validatorAddress      = "0xc3681dfe99730eb45154208cba7b0df7e705f305";
            string fileToPersistBlockNum = Path.GetTempFileName();

            ResetToSnapshot(rpc);

            IContractWrapper cw    = new ContractWrapper(contractAddress, rpc, validatorAddress, new MockLogger(), "test", _keyjson, fileToPersistBlockNum);
            NodeState        state = cw.GetExpectedState().Result;

            Assert.Equal("parity/parity:v2.3.3", state.DockerImage);
        }
Exemple #7
0
        public void ShouldThrowOnWrongContractDuringConfirmUpdate()
        {
            string contractAddress       = "0xa454963c7a6dcbdcd0d3fb281f4e67262fb71586";
            string rpc                   = Environment.GetEnvironmentVariable("TEST_RPC") ?? "http://localhost:8545";
            string validatorAddress      = "0xc3681dfe99730eb45154208cba7b0df7e705f305";
            string fileToPersistBlockNum = Path.GetTempFileName();

            ResetToSnapshot(rpc);

            IContractWrapper cw = new ContractWrapper(contractAddress, rpc, validatorAddress, new MockLogger(), "test", _keyjson, fileToPersistBlockNum);

            Action confirmUpdateAction = () => { cw.ConfirmUpdate().Wait(); };

            confirmUpdateAction.Should()
            .Throw <ContractException>()
            .WithMessage("Unable to confirm update");
        }
Exemple #8
0
        public static void SaveContract(ContractWrapper cw, SqlConnection con)
        {
            var sql = @"
						Insert INTO Contract(Code,Data) 
						VALUES(@code,@data);
						SELECT SCOPE_IDENTITY();
					"                    ;

            using (var cmd = new SqlCommand(sql, con))
            {
                cmd.Parameters.AddRange(new[] { new SqlParameter("@code", cw.Code), new SqlParameter("@data", cw.Body) });

                var retId = cmd.ExecuteScalar();
                var id    = int.Parse(retId.ToString());
                cw.Id = id;
            };
        }
Exemple #9
0
        public static void SaveIndividuals(ContractWrapper cw, SqlConnection con)
        {
            var sql = @"
						Insert INTO ContractIndividual(Fk_Contract,CustomerCode,NationalId) 
						VALUES(@fk_Contract,@customerCode,@NationalId);
					"                    ;

            foreach (var ind in cw.Individuals)
            {
                using (var cmd = new SqlCommand(sql, con))
                {
                    cmd.Parameters.AddRange(new[] {
                        new SqlParameter("@fk_Contract", cw.Id),
                        new SqlParameter("@customerCode", ind.CustomerCode),
                        new SqlParameter("@NationalId", ind.NationalId),
                    });

                    cmd.ExecuteNonQuery();
                };
            }
        }
Exemple #10
0
        static void Main(string[] args)
        {
            var serializer = new XmlSerializer(typeof(Contract));
            var settings   = new XmlReaderSettings();

            settings.Schemas.Add("http://creditinfo.com/schemas/Sample/Data", "Sample.xsd");
            settings.ValidationType   = ValidationType.Schema;
            settings.IgnoreWhitespace = true;

            try
            {
                using (var con = new SqlConnection(Properties.Settings.Default.DefaultConnection))
                {
                    con.Open();
                    using (var reader = XmlReader.Create("Sample.xml", settings))
                    {
                        while (reader.ReadToFollowing("Contract", "http://creditinfo.com/schemas/Sample/Data"))
                        {
                            try
                            {
                                var contract = serializer.Deserialize(reader.ReadSubtree()) as Contract;
                                var cw       = new ContractWrapper(contract);
                                ContractSaver.Save(cw, con);
                            }
                            catch (Exception ex)
                            {
                                // log exception
                            }
                        }
                    }

                    // var i = ContractLoader.HasIndividual("AA0000011", con);
                }
            }
            catch (Exception ex)
            {
                // log exception
            }
            Console.ReadKey();
        }
 public CallRequest(ContractWrapper cw, string func) : base(cw, func)
 {
     req_ = new EthCallUnityRequest(RPCMgr.instance.Account.chain_url_);
 }
 public BaseRequest(ContractWrapper c, string func)
 {
     cw_      = c;
     Function = Contract.GetFunction(func);
 }
 public SendRequest(ContractWrapper cw, string func) : base(cw, func)
 {
     req_ = new TransactionSignedUnityRequest(RPCMgr.instance.Account.chain_url_,
                                              RPCMgr.instance.Account.PrivateKey,
                                              RPCMgr.instance.Account.address_);
 }
Exemple #14
0
 public static void Save(ContractWrapper cw, SqlConnection con)
 {
     SaveContract(cw, con);
     SaveIndividuals(cw, con);
     SaveErrors(cw, con);
 }