public HostIdValidatorTests()
        {
            var options = new ScriptApplicationHostOptions();

            _environment = new TestEnvironment(new Dictionary <string, string>
            {
                { EnvironmentSettingNames.AzureWebsiteHostName, _testHostname }
            });

            _loggerProvider = new TestLoggerProvider();
            var loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(_loggerProvider);
            var logger = loggerFactory.CreateLogger <HostIdValidator>();

            var config = new ConfigurationBuilder()
                         .AddEnvironmentVariables()
                         .Build();
            var azureBlobStorageProvider = TestHelpers.GetAzureBlobStorageProvider(config);

            azureBlobStorageProvider.TryCreateHostingBlobContainerClient(out _blobContainerClient);

            var mockBlobStorageProvider = new Mock <IAzureBlobStorageProvider>(MockBehavior.Strict);

            mockBlobStorageProvider.Setup(p => p.TryCreateHostingBlobContainerClient(out _blobContainerClient)).Returns(() => _storageConfigured);

            var hostNameProvider = new HostNameProvider(_environment);

            _mockApplicationLifetime = new Mock <IApplicationLifetime>(MockBehavior.Strict);
            _hostIdValidator         = new HostIdValidator(_environment, mockBlobStorageProvider.Object, _mockApplicationLifetime.Object, hostNameProvider, logger);

            _storageConfigured = true;
        }
        public static IWebJobsBuilder UseHostId(this IWebJobsBuilder builder, string hostId)
        {
            if (!HostIdValidator.IsValid(hostId))
            {
                throw new InvalidOperationException(HostIdValidator.ValidationMessage);
            }

            builder.Services.AddSingleton <IHostIdProvider>(new FixedHostIdProvider(hostId));

            return(builder);
        }
        public ScriptHostIdProviderTests()
        {
            var options = new ScriptApplicationHostOptions();

            _environment = new TestEnvironment();

            _mockConfiguration = new Mock <IConfiguration>(MockBehavior.Strict);

            var loggerProvider = new TestLoggerProvider();
            var loggerFactory  = new LoggerFactory();

            loggerFactory.AddProvider(loggerProvider);
            var logger                  = loggerFactory.CreateLogger <HostIdValidator>();
            var hostNameProvider        = new HostNameProvider(_environment);
            var mockStorageProvider     = new Mock <IAzureBlobStorageProvider>(MockBehavior.Strict);
            var mockApplicationLifetime = new Mock <IApplicationLifetime>(MockBehavior.Strict);

            _hostIdValidator = new HostIdValidator(_environment, mockStorageProvider.Object, mockApplicationLifetime.Object, hostNameProvider, logger);
            _provider        = new ScriptHostIdProvider(_mockConfiguration.Object, _environment, new TestOptionsMonitor <ScriptApplicationHostOptions>(options), _hostIdValidator);
        }