public async Task SetRequiredAcsInContracts_Test() { var contractFeeChargingPolicy = new RequiredAcsInContracts { AcsList = { "acsx", "acsy" } }; var organizationAddress = await GetParliamentDefaultOrganizationAddressAsync(); var proposalId = await CreateProposalAsync(organizationAddress, new SetConfigurationInput { Key = RequiredAcsInContractsConfigurationNameProvider.Name, Value = contractFeeChargingPolicy.ToByteString() }, nameof(ConfigurationContainer.ConfigurationStub.SetConfiguration)); proposalId.ShouldNotBeNull(); await ApproveWithMinersAsync(proposalId); var releaseTxResult = await ReleaseProposalAsync(proposalId); releaseTxResult.Status.ShouldBe(TransactionResultStatus.Mined); var actual = await Tester.CallContractMethodAsync(ConfigurationContractAddress, nameof(ConfigurationContainer.ConfigurationStub.GetConfiguration), new StringValue { Value = RequiredAcsInContractsConfigurationNameProvider.Name }); RequiredAcsInContracts.Parser.ParseFrom(BytesValue.Parser.ParseFrom(actual).Value) .ShouldBe(contractFeeChargingPolicy); }
public async Task <RequiredAcs> GetRequiredAcsInContractsAsync(Hash blockHash, long blockHeight) { var tx = new Transaction { From = FromAddress, To = ConfigurationContractAddress, MethodName = nameof(ConfigurationContainer.ConfigurationStub.GetConfiguration), Params = new StringValue { Value = RequiredAcsInContractsConfigurationNameProvider.Name }.ToByteString(), Signature = ByteString.CopyFromUtf8(KernelConstants.SignaturePlaceholder) }; var returned = await _transactionReadOnlyExecutionService.ExecuteAsync <BytesValue>( new ChainContext { BlockHash = blockHash, BlockHeight = blockHeight }, tx, TimestampHelper.GetUtcNow(), false); var requiredAcsInContracts = new RequiredAcsInContracts(); requiredAcsInContracts.MergeFrom(returned.Value); return(new RequiredAcs { AcsList = requiredAcsInContracts.AcsList.ToList(), RequireAll = requiredAcsInContracts.RequireAll }); }
public async Task SetRequiredAcsInContracts_NoPermission() { var transactionResult = await ExecuteContractWithMiningAsync(ConfigurationContractAddress, nameof(ConfigurationContainer.ConfigurationStub.SetRequiredAcsInContracts), new RequiredAcsInContracts()); var test = new RequiredAcsInContracts(); transactionResult.Status.ShouldBe(TransactionResultStatus.Failed); transactionResult.Error.ShouldContain("No permission."); }
GenerateConfigurationInitializationCallList(ChainInitializationData chainInitializationData) { var configurationContractMethodCallList = new SystemContractDeploymentInput.Types.SystemTransactionMethodCallList(); var requiredAcsInContracts = new RequiredAcsInContracts(); if (!chainInitializationData.ChainCreatorPrivilegePreserved) { requiredAcsInContracts.AcsList.AddRange(_contractOptions.ContractFeeStrategyAcsList); } configurationContractMethodCallList.Add(nameof(ConfigurationContainer.ConfigurationStub.SetRequiredAcsInContracts), requiredAcsInContracts); return(configurationContractMethodCallList); }
public async Task <RequiredAcs> GetRequiredAcsInContractsAsync(Hash blockHash, long blockHeight) { var chainContext = new ChainContext { BlockHash = blockHash, BlockHeight = blockHeight }; var returned = await _configurationService.GetConfigurationDataAsync( RequiredAcsInContractsConfigurationName, chainContext); var requiredAcsInContracts = new RequiredAcsInContracts(); requiredAcsInContracts.MergeFrom(returned); return(new RequiredAcs { AcsList = requiredAcsInContracts.AcsList.ToList(), RequireAll = requiredAcsInContracts.RequireAll }); }
public async Task SetRequiredAcsInContracts_Test() { var contractFeeChargingPolicy = new RequiredAcsInContracts { AcsList = { "acsx", "acsy" } }; var organizationAddress = await GetParliamentDefaultOrganizationAddressAsync(); var proposalId = await CreateProposalAsync(organizationAddress, contractFeeChargingPolicy, nameof(ConfigurationContainer.ConfigurationStub.SetRequiredAcsInContracts)); proposalId.ShouldNotBeNull(); await ApproveWithMinersAsync(proposalId); var releaseTxResult = await ReleaseProposalAsync(proposalId); releaseTxResult.Status.ShouldBe(TransactionResultStatus.Mined); var actual = await Tester.CallContractMethodAsync(ConfigurationContractAddress, nameof(ConfigurationContainer.ConfigurationStub.GetRequiredAcsInContracts), new Empty()); RequiredAcsInContracts.Parser.ParseFrom(actual).ShouldBe(contractFeeChargingPolicy); }
public override Empty SetRequiredAcsInContracts(RequiredAcsInContracts input) { CheckSenderIsParliamentOrZeroContract(); State.RequiredAcsInContracts.Value = input; return(new Empty()); }