Ejemplo n.º 1
0
        private IEnumerable <IWorkerProvider> TestReadWorkerProviderFromConfig(string language, string json, string[] arguments, Mock <ILogger <object> > mockLogger)
        {
            string rootPath   = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
            string workerPath = Path.Combine(rootPath, language);

            try
            {
                Directory.CreateDirectory(workerPath);

                File.WriteAllText(Path.Combine(workerPath, ScriptConstants.WorkerConfigFileName), json);

                var scriptHostConfig      = new ScriptHostConfiguration();
                var scriptSettingsManager = new ScriptSettingsManager();
                var settings = new List <KeyValuePair <string, string> >
                {
                    new KeyValuePair <string, string>("workers:config:path", rootPath)
                };
                scriptSettingsManager.SetConfigurationFactory(() => new ConfigurationBuilder()
                                                              .AddInMemoryCollection(settings).Build());
                return(GenericWorkerProvider.ReadWorkerProviderFromConfig(scriptHostConfig, mockLogger.Object, scriptSettingsManager));
            }
            finally
            {
                if (Directory.Exists(rootPath))
                {
                    Directory.Delete(rootPath, true);
                }
            }
        }
        public ApplicationInsightsTestFixture(string scriptRoot, string testId)
        {
            HostSettings = new WebHostSettings
            {
                IsSelfHost  = true,
                ScriptPath  = Path.Combine(Environment.CurrentDirectory, scriptRoot),
                LogPath     = Path.Combine(Path.GetTempPath(), @"Functions"),
                SecretsPath = Environment.CurrentDirectory // not used
            };

            _testServer = new TestServer(
                AspNetCore.WebHost.CreateDefaultBuilder()
                .UseStartup <Startup>()
                .ConfigureServices(services =>
            {
                var settingsManager = new ScriptSettingsManager();
                settingsManager.SetConfigurationFactory(() =>
                {
                    return(new ConfigurationBuilder()
                           .AddInMemoryCollection(new Dictionary <string, string>
                    {
                        [EnvironmentSettingNames.AppInsightsInstrumentationKey] = TestChannelLoggerProviderFactory.ApplicationInsightsKey
                    })
                           .AddEnvironmentVariables()
                           .Build());
                });

                services.Replace(new ServiceDescriptor(typeof(ScriptSettingsManager), settingsManager));
                services.Replace(new ServiceDescriptor(typeof(WebHostSettings), HostSettings));
                services.Replace(new ServiceDescriptor(typeof(ILoggerProviderFactory), new TestChannelLoggerProviderFactory(Channel)));
                services.Replace(new ServiceDescriptor(typeof(ISecretManager), new TestSecretManager()));
            }));

            var scriptConfig = _testServer.Host.Services.GetService <WebHostResolver>().GetScriptHostConfiguration(HostSettings);

            InitializeConfig(scriptConfig);

            HttpClient             = _testServer.CreateClient();
            HttpClient.BaseAddress = new Uri("https://localhost/");

            TestHelpers.WaitForWebHost(HttpClient);
        }