public void WebServerRequest_CreateResponseWriter() { var executionDto = new ExecutionDto(); var mock = new Mock <IDSFDataObject>(); mock.SetupGet(o => o.Environment).Returns(new ExecutionEnvironment()); mock.SetupGet(o => o.IsDebug).Returns(true); mock.SetupGet(o => o.RemoteInvoke).Returns(false); mock.SetupGet(o => o.RemoteNonDebugInvoke).Returns(false); executionDto.DataListFormat = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json"); executionDto.ErrorResultTO = new Data.TO.ErrorResultTO(); executionDto.DataObject = mock.Object; executionDto.Request = new Communication.EsbExecuteRequest(); executionDto.Request.WasInternalService = false; executionDto.CreateResponseWriter(); }
protected static IResponseWriter CreateForm(WebRequestTO webRequest, string serviceName, string workspaceId, NameValueCollection headers, IPrincipal user) { var executePayload = ""; var workspaceRepository = _repository ?? WorkspaceRepository.Instance; var workspaceGuid = SetWorkspaceId(workspaceId, workspaceRepository); var allErrors = new ErrorResultTO(); var dataObject = CreateNewDsfDataObject(webRequest, serviceName, user, workspaceGuid); dataObject.SetupForWebDebug(webRequest); webRequest.BindRequestVariablesToDataObject(ref dataObject); dataObject.SetupForRemoteInvoke(headers); dataObject.SetEmitionType(webRequest, serviceName, headers); dataObject.SetupForTestExecution(serviceName, headers); if (dataObject.ServiceName == null) { dataObject.ServiceName = serviceName; } dataObject.SetResourceNameAndId(_resourceCatalog, serviceName, out IResource resource); dataObject.SetTestResourceIds(_resourceCatalog, webRequest, serviceName); dataObject.WebUrl = webRequest.WebServerUrl; var serializer = new Dev2JsonSerializer(); var esbEndpoint = new EsbServicesEndpoint(); dataObject.EsbChannel = esbEndpoint; var instance = _authorizationService ?? ServerAuthorizationService.Instance; var canExecute = dataObject.CanExecuteCurrentResource(resource, instance); // Build EsbExecutionRequest - Internal Services Require This ;) var esbExecuteRequest = new EsbExecuteRequest { ServiceName = serviceName }; foreach (string key in webRequest.Variables) { esbExecuteRequest.AddArgument(key, new StringBuilder(webRequest.Variables[key])); } var executionDlid = GlobalConstants.NullDataListID; var formatter = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "text/xml"); if (canExecute && dataObject.ReturnType != EmitionTypes.SWAGGER) { ErrorResultTO errors = null; Thread.CurrentPrincipal = user; var userPrinciple = user; if ((dataObject.ReturnType == EmitionTypes.TEST || dataObject.ReturnType == EmitionTypes.TRX) && dataObject.TestName == "*") { formatter = ServiceTestExecutor.ExecuteTests(serviceName, dataObject, formatter, userPrinciple, workspaceGuid, serializer, _testCatalog, _resourceCatalog, ref executePayload); return(new StringResponseWriter(executePayload, formatter.ContentType)); } Common.Utilities.PerformActionInsideImpersonatedContext(userPrinciple, () => { executionDlid = esbEndpoint.ExecuteRequest(dataObject, esbExecuteRequest, workspaceGuid, out errors); }); } else { if (!canExecute) { dataObject.Environment.AddError(string.Format(Warewolf.Resource.Errors.ErrorResource.UserNotAuthorizedToExecuteOuterWorkflowException, dataObject.ExecutingUser.Identity.Name, dataObject.ServiceName)); } } formatter = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json"); if (dataObject.IsServiceTestExecution) { executePayload = ServiceTestExecutor.SetupForTestExecution(serializer, esbExecuteRequest, dataObject); if (!canExecute) { return(new StringResponseWriter(dataObject.Environment.FetchErrors(), formatter.ContentType)); } return(new StringResponseWriter(executePayload, formatter.ContentType)); } if (dataObject.IsDebugFromWeb) { var serialize = SetupForWebExecution(dataObject, serializer); return(new StringResponseWriter(serialize, formatter.ContentType)); } var unionedErrors = dataObject.Environment?.Errors?.Union(dataObject.Environment?.AllErrors) ?? new List <string>(); foreach (var error in unionedErrors) { if (error.Length > 0) { allErrors.AddError(error, true); } } var executionDto = new ExecutionDto { WebRequestTO = webRequest, ServiceName = serviceName, DataObject = dataObject, Request = esbExecuteRequest, DataListIdGuid = executionDlid, WorkspaceID = workspaceGuid, Resource = resource, DataListFormat = formatter, PayLoad = executePayload, Serializer = serializer, ErrorResultTO = allErrors }; return(executionDto.CreateResponseWriter()); }