protected void OnRequestBlock() { RequestBlock?.Invoke(this, EventArgs.Empty); }
public void RequestAndResponseRemovalTest() { SdkConfig config = new SdkConfig() { ControlId = "unittest", SenderId = "testsenderid", SenderPassword = "******", CompanyId = "testcompany", UserId = "testuser", UserPassword = "******", }; Content content = new Content() { new ApiSessionCreate(), }; RequestBlock xmlRequest = new RequestBlock(config, content); string xmlResponse = @"<?xml version=""1.0"" encoding=""UTF-8""?> <response> <control> <status>success</status> <senderid>testsenderid</senderid> <controlid>testControl</controlid> <uniqueid>false</uniqueid> <dtdversion>3.0</dtdversion> </control> <operation> <authentication> <status>success</status> <userid>testuser</userid> <companyid>testcompany</companyid> <sessiontimestamp>2016-08-22T10:58:43-07:00</sessiontimestamp> </authentication> <result> <status>success</status> <function>get_list</function> <controlid>test1</controlid> <listtype start=""0"" end=""0"" total=""1"">vendor</listtype> <data> <vendor> <recordno>4</recordno> <vendorid>V0004</vendorid> <name>Vendor 4</name> <taxid>99-9999999</taxid> <achenabled>true</achenabled> <achaccountnumber>1111222233334444</achaccountnumber> <achaccounttype>Checking Account</achaccounttype> </vendor> </data> </result> <result> <status>success</status> <function>readByQuery</function> <controlid>test2</controlid> <data listtype=""vendor"" count=""1"" totalcount=""1"" numremaining=""0"" resultId=""""> <vendor> <RECORDNO>4</RECORDNO> <VENDORID>V0004</VENDORID> <NAME>Vendor 4</NAME> <TAXID>99-9999999</TAXID> <ACHENABLED>true</ACHENABLED> <ACHACCOUNTNUMBER>1111222233334444</ACHACCOUNTNUMBER> <ACHACCOUNTTYPE>Checking Account</ACHACCOUNTTYPE> </vendor> </data> </result> </operation> </response>"; Stream requestStream = xmlRequest.WriteXml(); requestStream.Position = 0; HttpRequestMessage mockRequest = new HttpRequestMessage(HttpMethod.Post, "https://unittest.intacct.com") { Content = new StreamContent(requestStream), }; HttpResponseMessage mockResponse = new HttpResponseMessage() { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(xmlResponse) }; MessageFormatter formatter = new MessageFormatter(); string message = formatter.Format(mockRequest, mockResponse); Assert.IsFalse(message.Contains("<password>pass123!</password>")); Assert.IsFalse(message.Contains("<password>P@ssW0rd!123</password>")); Assert.IsTrue(message.Contains("<password>REDACTED</password>")); Assert.IsFalse(message.Contains("<taxid>99-9999999</taxid>")); Assert.IsTrue(message.Contains("<taxid>REDACTED</taxid>")); Assert.IsFalse(message.Contains("<TAXID>99-9999999</TAXID>")); Assert.IsTrue(message.Contains("<TAXID>REDACTED</TAXID>")); Assert.IsFalse(message.Contains("<achaccountnumber>1111222233334444</achaccountnumber>")); Assert.IsTrue(message.Contains("<achaccountnumber>REDACTED</achaccountnumber>")); Assert.IsFalse(message.Contains("<ACHACCOUNTNUMBER>1111222233334444</ACHACCOUNTNUMBER>")); Assert.IsTrue(message.Contains("<ACHACCOUNTNUMBER>REDACTED</ACHACCOUNTNUMBER>")); }
protected async Task <HttpResponse> HandleRequest(RequestBlock request, Dictionary <string, object> variables = null, string referer = null) { var requestLinkStr = ResolvePath(ApplyGoTemplateText(request.Path, variables)).ToString(); _logger.Debug("CardigannIndexer ({0}): handleRequest() requestLinkStr= {1}", _definition.Id, requestLinkStr); Dictionary <string, string> pairs = null; var queryCollection = new NameValueCollection(); var method = HttpMethod.Get; if (string.Equals(request.Method, "post", StringComparison.OrdinalIgnoreCase)) { method = HttpMethod.Post; pairs = new Dictionary <string, string>(); } foreach (var input in request.Inputs) { var value = ApplyGoTemplateText(input.Value, variables); if (method == HttpMethod.Get) { queryCollection.Add(input.Key, value); } else if (method == HttpMethod.Post) { pairs.Add(input.Key, value); } } if (queryCollection.Count > 0) { if (!requestLinkStr.Contains("?")) { // TODO Need Encoding here if we add it back requestLinkStr += "?" + queryCollection.GetQueryString(separator: request.Queryseparator).Substring(1); } else { requestLinkStr += queryCollection.GetQueryString(separator: request.Queryseparator); } } var httpRequest = new HttpRequestBuilder(requestLinkStr) .SetCookies(Cookies ?? new Dictionary <string, string>()) .SetEncoding(_encoding) .SetHeader("Referer", referer); httpRequest.Method = method; // Add form data for POST requests if (method == HttpMethod.Post) { foreach (var param in pairs) { httpRequest.AddFormParameter(param.Key, param.Value); } } var response = await HttpClient.ExecuteProxiedAsync(httpRequest.Build(), Definition); _logger.Debug("CardigannIndexer ({0}): handleRequest() remote server returned {1}", _definition.Id, response.StatusCode); return(response); }