public string SendRequest(ServiceEndpoint endpoint, ServiceEndpointUtilisation utilisation, Application application, ApplicationData updateTarget) { if (this.type == "VALIDATE") { string validateStr = AssemblyResourceReader.ReadAsString(string.Format("Test_Data.EndpointValidation.VALIDATE-{0}.json", endpoint.Id.PadLeft(2, '0'))); return validateStr; } return null; }
public void TestNonExistentEndpoint() { ApplicationData appData = new ApplicationData { { "First_name", "Blah" }, { "Last_name", "McR&D" } }; ServiceEndpointUtilisation endpointUtilisation = new ServiceEndpointUtilisation { ServiceEndpointId = "0" }; ServiceEndpointValidator validator = new ServiceEndpointValidator(endpointUtilisation, this.endpointList, this.communicator); ValidationResults results = validator.Validate(new Application(appData)); Assert.AreEqual(true, results.IsValid); }
public void TestMultipleErrorArray() { ApplicationData appData = new ApplicationData { { "First_name", "Blah" }, { "Last_name", "McR&D" } }; ServiceEndpointUtilisation endpointUtilisation = new ServiceEndpointUtilisation { ServiceEndpointId = "1" }; ServiceEndpointValidator validator = new ServiceEndpointValidator(endpointUtilisation, this.endpointList, this.communicator); ValidationResults results = validator.Validate(new Application(appData)); Assert.AreEqual(false, results.IsValid); Assert.AreEqual(2, results.Count(x => x.Key == "First_name")); Assert.AreEqual(0, results.Count(x => x.Key == "Last_name")); }
/// <summary> /// Sends a request to a service endpoint and returns the response /// mapped to a JSON string. /// </summary> /// <param name="communicator">The endpoint communicator.</param> /// <param name="endpoint">The endpoint definition.</param> /// <param name="utilisation">Provides a data field mapping for the request / response.</param> /// <param name="applicationData">The application data.</param> /// <param name="updateTarget">The update target.</param> /// <returns> /// A mapped JSON string of the response from the service endpoint. /// </returns> public static string SendRequest(this IServiceEndpointCommunicator communicator, ServiceEndpoint endpoint, ServiceEndpointUtilisation utilisation, ApplicationData applicationData, ApplicationData updateTarget) { return communicator.SendRequest(endpoint, utilisation, new Application(applicationData), updateTarget); }
/// <summary> /// Sends a request to a service endpoint and returns the response /// mapped to a JSON string. /// </summary> /// <param name="communicator">The endpoint communicator.</param> /// <param name="endpoint">The endpoint definition.</param> /// <param name="utilisation">Provides a data field mapping for the request / response.</param> /// <param name="applicationData">The application data, which is also the target when mapping back.</param> /// <returns> /// A mapped JSON string of the response from the service endpoint. /// </returns> public static string SendRequest(this IServiceEndpointCommunicator communicator, ServiceEndpoint endpoint, ServiceEndpointUtilisation utilisation, ApplicationData applicationData) { return communicator.SendRequest(endpoint, utilisation, applicationData, applicationData); }
public string SendRequest(ServiceEndpoint endpoint, ServiceEndpointUtilisation utilisation, Application application, ApplicationData updateTarget) { throw new NotImplementedException(); }
/// <summary> /// Sends a request to a service endpoint and returns the response /// mapped to a JSON string. /// </summary> /// <param name="endpoint">The endpoint definition.</param> /// <param name="utilisation">Provides a data field mapping for the request / response.</param> /// <param name="application">The application to map.</param> /// <param name="updateTarget">The update target.</param> /// <returns>A mapped JSON string of the response from the service endpoint.</returns> public string SendRequest(ServiceEndpoint endpoint, ServiceEndpointUtilisation utilisation, Application application, ApplicationData updateTarget) { MappedFieldList consolidatedMap = new MappedFieldList(endpoint.RequestFieldMap); consolidatedMap.MergeOnTarget(utilisation.RequestFieldMap); if (utilisation.MapAllFieldsInRequest) { MappedFieldList allFieldMap = new MappedFieldList(); allFieldMap.AddRange(application.ApplicationData.Select(val => new MappedField { MapType = MapType.Field, Target = val.Key, Source = val.Key })); consolidatedMap.MergeOnTarget(allFieldMap); } bool cached = consolidatedMap.Count == 0 && this.cachedResponse.ContainsKey(endpoint.Url); HttpEndpointCommunication commsEvent = new HttpEndpointCommunicationMapper().ToHttpEndpointCommunication(endpoint); HttpWebResponse response = null; string responseBody = string.Empty; try { if (cached) { response = this.cachedResponse[endpoint.Url]; responseBody = this.cachedResponseBody[endpoint.Url]; } else { response = this.DoSendRequest(endpoint, commsEvent, application, consolidatedMap); responseBody = this.ReadResponseContent(response); if (consolidatedMap.Count == 0) { this.cachedResponse.Add(endpoint.Url, response); this.cachedResponseBody.Add(endpoint.Url, responseBody); } } JToken token = new HttpWebResponseReader().ConvertToJson(responseBody, endpoint.ResponseFormat, endpoint.ResponseRoot); if (utilisation.ResponseFieldsMatchRequest) { MappedFieldList allFieldMap = new MappedFieldList(); allFieldMap.AddRange(consolidatedMap.Select(mappedField => new MappedField { MapType = MapType.Content, Source = mappedField.Target, Target = mappedField.Source })); utilisation.ResponseFieldMap.MergeOnTarget(allFieldMap); } if (utilisation.ResponseFieldMap != null && utilisation.ResponseFieldMap.Count > 0) { token = new HttpEndpointResponseMapper().MapToken(token, response, utilisation.ResponseFieldMap, updateTarget, utilisation.MaxResults); } return (token ?? string.Empty).ToString(); } catch (WebException e) { response = (HttpWebResponse)e.Response; responseBody = this.ReadResponseContent(response); commsEvent.ExceptionMessage = e.Message; throw; } catch (Exception e) { commsEvent.ExceptionMessage = e.Message; throw; } finally { if (response != null) { commsEvent.ResponseStatusCode = (int)response.StatusCode; commsEvent.ResponseContent = responseBody; response.Close(); } if (!cached) { this.logger.LogCommunication(commsEvent); } } }