From a1594a3bab6aa0827482c0ee58b6cb66e4c82bc5 Mon Sep 17 00:00:00 2001 From: Zach Herberstein Date: Mon, 16 Sep 2024 21:58:44 +1000 Subject: [PATCH 1/4] Added functionality to specify managed api connections to Mock --- src/LogicAppUnit/TestConfiguration.cs | 7 +++++++ src/LogicAppUnit/WorkflowTestBase.cs | 2 +- src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs | 7 +++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/LogicAppUnit/TestConfiguration.cs b/src/LogicAppUnit/TestConfiguration.cs index 42ea60e..fc3bc56 100644 --- a/src/LogicAppUnit/TestConfiguration.cs +++ b/src/LogicAppUnit/TestConfiguration.cs @@ -132,6 +132,13 @@ public class TestConfigurationWorkflow /// public List BuiltInConnectorsToMock { get; set; } = new List(); + + /// + /// List of managed api connectors where the actions are to be replaced with HTTP actions referencing the test mock server. + /// + public List ManagedApisToMock { get; set; } = new List(); + + /// /// true if the test framework automatically configures the OperationOptions setting to WithStatelessRunHistory for a stateless workflow, otherwise false. /// diff --git a/src/LogicAppUnit/WorkflowTestBase.cs b/src/LogicAppUnit/WorkflowTestBase.cs index c841b3b..417ee1c 100644 --- a/src/LogicAppUnit/WorkflowTestBase.cs +++ b/src/LogicAppUnit/WorkflowTestBase.cs @@ -277,7 +277,7 @@ private void ProcessConnectionsFile(string logicAppBasePath) _connections = new ConnectionsWrapper(ReadFromPath(Path.Combine(logicAppBasePath, Constants.CONNECTIONS), optional: true), _localSettings); - _connections.ReplaceManagedApiConnectionUrlsWithMockServer(); + _connections.ReplaceManagedApiConnectionUrlsWithMockServer(_testConfig.Workflow.ManagedApisToMock); // The Functions runtime will not start if there are any Managed API connections using the 'ManagedServiceIdentity' authentication type // Check for this so that the test will fail early with a meaningful error message diff --git a/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs b/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs index 02d11cc..fd7adcb 100644 --- a/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs +++ b/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs @@ -47,12 +47,15 @@ public override string ToString() /// /// Update the connections by replacing all URL references to managed API connectors with the URL reference for the mock test server. /// - public void ReplaceManagedApiConnectionUrlsWithMockServer() + public void ReplaceManagedApiConnectionUrlsWithMockServer(List managedApisToMock) { if (_jObjectConnection == null) return; - var managedApiConnections = _jObjectConnection.SelectToken("managedApiConnections").Children().ToList(); + var managedApiConnections = _jObjectConnection.SelectToken("managedApiConnections").Children() + .Where(con => managedApisToMock + .Contains(con.Name.ToString())) + .ToList(); if (managedApiConnections.Count > 0) { Console.WriteLine("Updating connections file for managed API connectors:"); From d3a0a520f6339414c4e39457f0fd281a3bec1b8e Mon Sep 17 00:00:00 2001 From: Zach Herberstein Date: Thu, 19 Sep 2024 09:34:52 +1000 Subject: [PATCH 2/4] Update to maintain existing functionality --- src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs b/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs index fd7adcb..77ce2ff 100644 --- a/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs +++ b/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs @@ -52,10 +52,12 @@ public void ReplaceManagedApiConnectionUrlsWithMockServer(List managedAp if (_jObjectConnection == null) return; - var managedApiConnections = _jObjectConnection.SelectToken("managedApiConnections").Children() - .Where(con => managedApisToMock - .Contains(con.Name.ToString())) - .ToList(); + var managedApiConnections = _jObjectConnection.SelectToken("managedApiConnections").Children().ToList(); + + // If no managed apis are specified then all managed apis are mocked + if (managedApisToMock != null && managedApisToMock.Count > 0) + managedApiConnections = managedApiConnections.Where(con => managedApisToMock.Contains(con.Name)).ToList(); + if (managedApiConnections.Count > 0) { Console.WriteLine("Updating connections file for managed API connectors:"); From c32519fbeba5106b0bd2eac09dce9a0290adb2e7 Mon Sep 17 00:00:00 2001 From: Zach Herberstein Date: Thu, 19 Sep 2024 09:44:06 +1000 Subject: [PATCH 3/4] Updated comments --- src/LogicAppUnit/WorkflowTestBase.cs | 2 +- src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/LogicAppUnit/WorkflowTestBase.cs b/src/LogicAppUnit/WorkflowTestBase.cs index 417ee1c..1a45d06 100644 --- a/src/LogicAppUnit/WorkflowTestBase.cs +++ b/src/LogicAppUnit/WorkflowTestBase.cs @@ -277,7 +277,7 @@ private void ProcessConnectionsFile(string logicAppBasePath) _connections = new ConnectionsWrapper(ReadFromPath(Path.Combine(logicAppBasePath, Constants.CONNECTIONS), optional: true), _localSettings); - _connections.ReplaceManagedApiConnectionUrlsWithMockServer(_testConfig.Workflow.ManagedApisToMock); + _connections.ReplaceManagedApiConnectionUrlsWithMockServer(_testConfig.Workflow?.ManagedApisToMock); // The Functions runtime will not start if there are any Managed API connections using the 'ManagedServiceIdentity' authentication type // Check for this so that the test will fail early with a meaningful error message diff --git a/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs b/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs index 77ce2ff..a814a60 100644 --- a/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs +++ b/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs @@ -46,7 +46,9 @@ public override string ToString() /// /// Update the connections by replacing all URL references to managed API connectors with the URL reference for the mock test server. + /// /// The list of managed API connections to mock, or null if the file does not exist. /// + public void ReplaceManagedApiConnectionUrlsWithMockServer(List managedApisToMock) { if (_jObjectConnection == null) From d85e41502862004cad2975c34d5705ff7f2bed1b Mon Sep 17 00:00:00 2001 From: Zach Herberstein Date: Thu, 19 Sep 2024 10:06:46 +1000 Subject: [PATCH 4/4] Comment formatting --- src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs b/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs index a814a60..f562a6e 100644 --- a/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs +++ b/src/LogicAppUnit/Wrapper/ConnectionsWrapper.cs @@ -46,7 +46,7 @@ public override string ToString() /// /// Update the connections by replacing all URL references to managed API connectors with the URL reference for the mock test server. - /// /// The list of managed API connections to mock, or null if the file does not exist. + /// The list of managed API connections to mock, or null if the file does not exist. /// public void ReplaceManagedApiConnectionUrlsWithMockServer(List managedApisToMock)