public override Empty SetConfiguration(SetConfigurationInput input) { AssertPerformedByConfigurationControllerOrZeroContract(); Assert(input.Key.Any() && input.Value != ByteString.Empty, "Invalid set config input."); State.Configurations[input.Key] = new BytesValue { Value = input.Value }; Context.Fire(new ConfigurationSet { Key = input.Key, Value = input.Value }); return(new Empty()); }
public async Task SetConfiguration_With_Invalid_Input_Test() { var organizationAddress = await GetParliamentDefaultOrganizationAddressAsync(); var parameter = new Int32Value { Value = 1 }.ToByteString(); var inputWithInvalidKey = new SetConfigurationInput { Value = parameter }; var proposalId = await CreateProposalAsync(organizationAddress, inputWithInvalidKey, nameof(ConfigurationImplContainer.ConfigurationImplStub.SetConfiguration)); proposalId.ShouldNotBeNull(); await ApproveWithMinersAsync(proposalId); var releaseTxResult = await ReleaseProposalAsync(proposalId); releaseTxResult.Status.ShouldBe(TransactionResultStatus.Failed); releaseTxResult.Error.ShouldContain("Invalid set config input"); var inputWithInvalidValue = new SetConfigurationInput { Key = "key1" }; proposalId = await CreateProposalAsync(organizationAddress, inputWithInvalidValue, nameof(ConfigurationImplContainer.ConfigurationImplStub.SetConfiguration)); proposalId.ShouldNotBeNull(); await ApproveWithMinersAsync(proposalId); releaseTxResult = await ReleaseProposalAsync(proposalId); releaseTxResult.Status.ShouldBe(TransactionResultStatus.Failed); releaseTxResult.Error.ShouldContain("Invalid set config input"); }