public void IsValid_WithNullOrEmptyConnectionString_ShouldReturnFalseAndEmptyErrorMessage(
            [Values("", " ", null)] string connectionString
            )
        {
            var result = ConnectionStringValidator.IsValid(connectionString, _connectionStringName, out var errorMessage);

            Assert.That(result, Is.False);
            Assert.That(errorMessage, Is.EqualTo(_connectionStringName + " is null or empty"));
        }
        public void IsValid_WithInvalidConnectionString_ShouldReturnFalseAndEmptyErrorMessage()
        {
            var result = ConnectionStringValidator.IsValid(
                Constants.InvalidConnectionString,
                _connectionStringName,
                out var errorMessage
                );

            Assert.That(result, Is.False);
            Assert.That(errorMessage, Is.SupersetOf(_connectionStringName + " is invalid: "));
        }
        public void IsValid_WithValidConnectionString_ShouldReturnTrueAndNullErrorMessage()
        {
            var result = ConnectionStringValidator.IsValid(
                Constants.ValidConnectionString,
                _connectionStringName,
                out var errorMessage
                );

            Assert.That(result, Is.True);
            Assert.That(errorMessage, Is.Null);
        }
        public ValidateOptionsResult Validate(string name, AzureTopicEventSenderOptions options)
        {
            if (!ConnectionStringValidator.IsValid(
                    options.SendConnectionString,
                    nameof(options.SendConnectionString),
                    out var errorMessage
                    )
                )
            {
                return(ValidateOptionsResult.Fail(errorMessage));
            }

            return(ValidateOptionsResult.Success);
        }
        public ValidateOptionsResult Validate(string name, AzureTopicEventReceiverOptions options)
        {
            if (!ConnectionStringValidator.IsValid(
                    options.ReceiveConnectionString,
                    nameof(options.ReceiveConnectionString),
                    out var receiveConnectionStringErrorMessage
                    )
                )
            {
                return(ValidateOptionsResult.Fail(receiveConnectionStringErrorMessage));
            }

            if (options.IsSubscriptionCreationEnabled && !ConnectionStringValidator.IsValid(
                    options.ManagementConnectionString,
                    nameof(options.ManagementConnectionString),
                    out var managementConnectionStringErrorMessage
                    )
                )
            {
                return(ValidateOptionsResult.Fail(managementConnectionStringErrorMessage));
            }

            if (string.IsNullOrWhiteSpace(options.SubscriptionName) && options.SubscriptionNameProvider == null)
            {
                return(ValidateOptionsResult.Fail(
                           $"{nameof(options.SubscriptionName)} and {nameof(options.SubscriptionNameProvider)} are null or empty," +
                           $" please specify at least one of the parameters"
                           ));
            }

            if (string.IsNullOrWhiteSpace(options.TopicPath))
            {
                return(ValidateOptionsResult.Fail(
                           $"{nameof(options.TopicPath)} is null or empty"
                           ));
            }

            return(ValidateOptionsResult.Success);
        }