public static void ReadFunctionsMetadataSucceeds() { string functionsPath = Path.Combine(Environment.CurrentDirectory, @"..\..\..\..\..\sample"); // Setup var settings = CreateWebSettings(); var fileSystem = CreateFileSystem(settings.ScriptPath); var loggerFactory = MockNullLogerFactory.CreateLoggerFactory(); var contentBuilder = new StringBuilder(); var httpClient = CreateHttpClient(contentBuilder); var proxyMetadataManager = new Mock <IProxyMetadataManager>(MockBehavior.Strict); var proxyMetadata = new ProxyMetadataInfo(new FunctionMetadata[0].ToImmutableArray(), null, null); proxyMetadataManager.SetupGet(p => p.ProxyMetadata).Returns(proxyMetadata); var webManager = new WebFunctionsManager(new OptionsWrapper <ScriptApplicationHostOptions>(settings), new OptionsWrapper <LanguageWorkerOptions>(CreateLanguageWorkerConfigSettings()), loggerFactory, httpClient, proxyMetadataManager.Object); FileUtility.Instance = fileSystem; IEnumerable <FunctionMetadata> metadata = webManager.GetFunctionsMetadata(); var jsFunctions = metadata.Where(funcMetadata => funcMetadata.Language == LanguageWorkerConstants.NodeLanguageWorkerName).ToList(); var unknownFunctions = metadata.Where(funcMetadata => string.IsNullOrEmpty(funcMetadata.Language)).ToList(); Assert.Equal(2, jsFunctions.Count()); Assert.Equal(1, unknownFunctions.Count()); }
public async Task VerifyDurableTaskHubNameIsAdded() { var vars = new Dictionary <string, string> { { EnvironmentSettingNames.WebSiteAuthEncryptionKey, TestHelpers.GenerateKeyHexString() }, { EnvironmentSettingNames.AzureWebsiteHostName, "appName.azurewebsites.net" } }; using (var env = new TestScopedEnvironmentVariable(vars)) { // Setup const string expectedSyncTriggersPayload = "[{\"authLevel\":\"anonymous\",\"type\":\"httpTrigger\",\"direction\":\"in\",\"name\":\"req\",\"functionName\":\"function1\"}," + "{\"name\":\"myQueueItem\",\"type\":\"orchestrationTrigger\",\"direction\":\"in\",\"queueName\":\"myqueue-items\",\"connection\":\"DurableStorage\",\"functionName\":\"function2\",\"taskHubName\":\"TestHubValue\"}," + "{\"name\":\"myQueueItem\",\"type\":\"activityTrigger\",\"direction\":\"in\",\"queueName\":\"myqueue-items\",\"connection\":\"DurableStorage\",\"functionName\":\"function3\",\"taskHubName\":\"TestHubValue\"}]"; var settings = CreateWebSettings(); var fileSystem = CreateFileSystem(settings.ScriptPath); var loggerFactory = MockNullLogerFactory.CreateLoggerFactory(); var contentBuilder = new StringBuilder(); var httpClient = CreateHttpClient(contentBuilder); var proxyMetadataManager = new Mock <IProxyMetadataManager>(MockBehavior.Strict); var proxyMetadata = new ProxyMetadataInfo(new FunctionMetadata[0].ToImmutableArray(), null, null); proxyMetadataManager.SetupGet(p => p.ProxyMetadata).Returns(proxyMetadata); var webManager = new WebFunctionsManager(new OptionsWrapper <ScriptApplicationHostOptions>(settings), new OptionsWrapper <LanguageWorkerOptions>(CreateLanguageWorkerConfigSettings()), loggerFactory, httpClient, proxyMetadataManager.Object); FileUtility.Instance = fileSystem; // Act (var success, var error) = await webManager.TrySyncTriggers(); var content = contentBuilder.ToString(); // Assert Assert.True(success, "SyncTriggers should return success true"); Assert.True(string.IsNullOrEmpty(error), "Error should be null or empty"); Assert.Equal(expectedSyncTriggersPayload, content); } }
public void ProxyMetadata_WhenProxyFileChanges_IsRefreshed() { using (var tempDirectory = new TempDirectory()) { var testProxiesPath = Path.Combine(Environment.CurrentDirectory, @"TestScripts\Proxies"); var options = new OptionsWrapper <ScriptJobHostOptions>(new ScriptJobHostOptions { RootScriptPath = tempDirectory.Path }); var environment = new TestEnvironment(); var eventManager = new ScriptEventManager(); var manager = new ProxyMetadataManager(options, environment, eventManager, NullLoggerFactory.Instance); // Get metadata before proxies exist ProxyMetadataInfo proxyMetadata1 = manager.ProxyMetadata; ProxyMetadataInfo proxyMetadata2 = manager.ProxyMetadata; Assert.True(proxyMetadata2.Functions.IsDefaultOrEmpty); Assert.Same(proxyMetadata1, proxyMetadata2); // Update our proxies definition FileUtility.CopyDirectory(testProxiesPath, tempDirectory.Path); // Simulate a file change notification eventManager.Publish(new FileEvent(EventSources.ScriptFiles, new FileSystemEventArgs(WatcherChangeTypes.Changed, tempDirectory.Path, ScriptConstants.ProxyMetadataFileName))); ProxyMetadataInfo proxyMetadata3 = manager.ProxyMetadata; Assert.NotSame(proxyMetadata1, proxyMetadata3); Assert.Equal(19, proxyMetadata3.Functions.Length); } }