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");
        }