using Microsoft.Extensions.Options; namespace ZB.MOM.WW.ScadaBridge.Communication.Tests; /// /// Regression: timeouts feed per-pattern Ask /// deadlines and gRPC keepalive/stream-lifetime settings; a zero/negative value /// (or a non-positive GrpcMaxConcurrentStreams) must be rejected at startup /// by an with a clear, key-naming message /// rather than surfacing at first Ask/gRPC use. /// public class CommunicationOptionsValidatorTests { private static ValidateOptionsResult Validate(CommunicationOptions options) => new CommunicationOptionsValidator().Validate(Options.DefaultName, options); [Fact] public void DefaultOptions_AreValid() { var result = Validate(new CommunicationOptions()); Assert.True(result.Succeeded, result.FailureMessage); } [Fact] public void ZeroDeploymentTimeout_IsRejected() { var result = Validate(new CommunicationOptions { DeploymentTimeout = TimeSpan.Zero }); Assert.True(result.Failed); Assert.Contains("DeploymentTimeout", result.FailureMessage); } [Fact] public void NonPositiveGrpcMaxConcurrentStreams_IsRejected() { var result = Validate(new CommunicationOptions { GrpcMaxConcurrentStreams = 0 }); Assert.True(result.Failed); Assert.Contains("GrpcMaxConcurrentStreams", result.FailureMessage); } }