From 1c4d38e2820b0087f1d423b07dbfafef6c4f3e66 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 21 Dec 2022 11:31:26 -0400 Subject: [PATCH] In ClientConfig, added HttpMessageHandler field with an obsolete property called MockHandler to ensure any direct use of the name "MockHandler" will still work. Because MockHandler ultimately derives from HttpMessageHandler, all unit tests can now populate this and still work as they have been. This change allows a library user to control the life cycle of HttpMessageHandler, while still hooking into the logging provided. --- Intacct.SDK.Tests/OfflineClientTest.cs | 4 ++-- Intacct.SDK.Tests/OnlineClientTest.cs | 8 ++++---- Intacct.SDK.Tests/SessionProviderTest.cs | 12 ++++++------ Intacct.SDK.Tests/Xml/RequestHandlerTest.cs | 16 ++++++++-------- Intacct.SDK/ClientConfig.cs | 12 +++++++++++- Intacct.SDK/Xml/RequestHandler.cs | 6 +++--- 6 files changed, 34 insertions(+), 24 deletions(-) diff --git a/Intacct.SDK.Tests/OfflineClientTest.cs b/Intacct.SDK.Tests/OfflineClientTest.cs index a3f5088f..5b456a04 100644 --- a/Intacct.SDK.Tests/OfflineClientTest.cs +++ b/Intacct.SDK.Tests/OfflineClientTest.cs @@ -50,7 +50,7 @@ public async Task ExecuteTest() SenderId = "testsender", SenderPassword = "testsendpass", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; RequestConfig requestConfig = new RequestConfig() @@ -100,7 +100,7 @@ public async Task ExecuteBatchTest() SenderId = "testsender", SenderPassword = "testsendpass", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; RequestConfig requestConfig = new RequestConfig() diff --git a/Intacct.SDK.Tests/OnlineClientTest.cs b/Intacct.SDK.Tests/OnlineClientTest.cs index 6e4bdca1..46e33c97 100644 --- a/Intacct.SDK.Tests/OnlineClientTest.cs +++ b/Intacct.SDK.Tests/OnlineClientTest.cs @@ -76,7 +76,7 @@ public async Task ExecuteTest() SenderId = "testsender", SenderPassword = "testsendpass", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; OnlineClient client = new OnlineClient(clientConfig); @@ -140,7 +140,7 @@ public async Task ExecuteResultExceptionTest() SenderId = "testsender", SenderPassword = "testsendpass", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; OnlineClient client = new OnlineClient(clientConfig); @@ -223,7 +223,7 @@ public async Task ExecuteBatchTransactionResultExceptionTest() SenderId = "testsender", SenderPassword = "testsendpass", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; RequestConfig requestConfig = new RequestConfig() @@ -303,7 +303,7 @@ public async Task LoggerTest() SenderId = "testsender", SenderPassword = "testsendpass", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, // Logger = LogManager.GetLogger(guid), }; diff --git a/Intacct.SDK.Tests/SessionProviderTest.cs b/Intacct.SDK.Tests/SessionProviderTest.cs index 9c1dd51b..76a76090 100644 --- a/Intacct.SDK.Tests/SessionProviderTest.cs +++ b/Intacct.SDK.Tests/SessionProviderTest.cs @@ -68,7 +68,7 @@ public async Task FromLoginCredentialsTest() CompanyId = "testcompany", UserId = "testuser", UserPassword = "testpass", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; ClientConfig sessionCreds = await SessionProvider.Factory(config); @@ -134,7 +134,7 @@ public async Task FromLoginCredentialsWithEntityTest() EntityId= "testentity", UserId = "testuser", UserPassword = "testpass", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; ClientConfig sessionCreds = await SessionProvider.Factory(config); @@ -198,7 +198,7 @@ public async Task FromSessionCredentialsTest() SenderPassword = "pass123!", SessionId = "fAkESesSiOnId..", EndpointUrl = "https://unittest.intacct.com/ia/xml/xmlgw.phtml", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; ClientConfig sessionCreds = await SessionProvider.Factory(config); @@ -262,7 +262,7 @@ public async Task FromTopLevelSessionCredentialsWithEntityOverrideTest() SenderPassword = "pass123!", SessionId = "fAkESesSiOnId..", EndpointUrl = "https://unittest.intacct.com/ia/xml/xmlgw.phtml", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, EntityId = "testentity", }; @@ -327,7 +327,7 @@ public async Task FromPrivateEntitySessionCredentialsWithDifferentEntityOverride SenderPassword = "pass123!", SessionId = "EntityAsession..", EndpointUrl = "https://unittest.intacct.com/ia/xml/xmlgw.phtml", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, EntityId = "entityB", }; @@ -393,7 +393,7 @@ public async Task FromSessionCredentialsUsingEnvironmentSenderTest() { SessionId = "fAkESesSiOnId..", EndpointUrl = "https://unittest.intacct.com/ia/xml/xmlgw.phtml", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; ClientConfig sessionCreds = await SessionProvider.Factory(config); diff --git a/Intacct.SDK.Tests/Xml/RequestHandlerTest.cs b/Intacct.SDK.Tests/Xml/RequestHandlerTest.cs index 9194b850..9e153e99 100644 --- a/Intacct.SDK.Tests/Xml/RequestHandlerTest.cs +++ b/Intacct.SDK.Tests/Xml/RequestHandlerTest.cs @@ -76,7 +76,7 @@ public async Task MockExecuteSynchronousTest() SenderId = "testsenderid", SenderPassword = "pass123!", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; RequestConfig requestConfig = new RequestConfig() @@ -130,7 +130,7 @@ public async Task MockExecuteAsynchronousTest() SenderId = "testsenderid", SenderPassword = "pass123!", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; RequestConfig requestConfig = new RequestConfig() @@ -235,7 +235,7 @@ public async Task MockRetryTest() SenderId = "testsenderid", SenderPassword = "pass123!", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; RequestConfig requestConfig = new RequestConfig(); @@ -292,7 +292,7 @@ public async Task MockDefaultRetryFailureTest() SenderId = "testsenderid", SenderPassword = "pass123!", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; RequestConfig requestConfig = new RequestConfig(); @@ -345,7 +345,7 @@ public async Task Mock400LevelErrorWithXmlResponseTest() CompanyId = "badcompany", UserId = "baduser", UserPassword = "badpass", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; RequestConfig requestConfig = new RequestConfig(); @@ -382,7 +382,7 @@ public async Task MockDefaultNo524RetryTest() SenderId = "testsenderid", SenderPassword = "pass123!", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, }; RequestConfig requestConfig = new RequestConfig(); @@ -460,7 +460,7 @@ public async Task MockExecuteWithDebugLoggerTest() SenderId = "testsenderid", SenderPassword = "pass123!", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, // Logger = LogManager.GetLogger(guid), }; @@ -522,7 +522,7 @@ public async Task MockExecuteOfflineWithSessionCredsTest() SenderId = "testsenderid", SenderPassword = "pass123!", SessionId = "testsession..", - MockHandler = mockHandler, + HttpMessageHandler = mockHandler, // LoggerFactory = new LogFactory(), // Logger = LogFactory //LogManager.GetLogger(guid), }; diff --git a/Intacct.SDK/ClientConfig.cs b/Intacct.SDK/ClientConfig.cs index 63ae3d17..fd1a56b8 100644 --- a/Intacct.SDK/ClientConfig.cs +++ b/Intacct.SDK/ClientConfig.cs @@ -18,6 +18,9 @@ using Intacct.SDK.Xml.Request; using Microsoft.Extensions.Logging; +using System; +using System.Net.Http; + namespace Intacct.SDK { public class ClientConfig @@ -51,8 +54,15 @@ public class ClientConfig public MessageFormatter LogMessageFormatter; - public MockHandler MockHandler; + public HttpMessageHandler HttpMessageHandler; + [Obsolete("Use HttpMessageHandler instead.")] + public MockHandler MockHandler + { + get { return HttpMessageHandler as MockHandler;} + set { HttpMessageHandler = value;} + } + public ClientConfig() { this.LogLevel = LogLevel.Debug; diff --git a/Intacct.SDK/Xml/RequestHandler.cs b/Intacct.SDK/Xml/RequestHandler.cs index 180584bb..8955c097 100644 --- a/Intacct.SDK/Xml/RequestHandler.cs +++ b/Intacct.SDK/Xml/RequestHandler.cs @@ -86,15 +86,15 @@ public async Task ExecuteOffline(List content) private HttpMessageHandler GetHttpMessageHandler() { - if (this.ClientConfig.MockHandler != null) + if (this.ClientConfig.HttpMessageHandler != null) { if (this.ClientConfig.Logger != null) { - return new LoggingHandler(this.ClientConfig.MockHandler, this.ClientConfig.Logger, this.ClientConfig.LogMessageFormatter, this.ClientConfig.LogLevel); + return new LoggingHandler(this.ClientConfig.HttpMessageHandler, this.ClientConfig.Logger, this.ClientConfig.LogMessageFormatter, this.ClientConfig.LogLevel); } else { - return this.ClientConfig.MockHandler; + return this.ClientConfig.HttpMessageHandler; } } else