internal IResponseWriter ExecuteAsTest(string serviceName, string executePayload, Guid workspaceGuid, IDSFDataObject dataObject, Dev2JsonSerializer serializer, IPrincipal userPrinciple) { var xmlFormatter = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "text/xml"); var formatter = ServiceTestExecutor.ExecuteTests(serviceName, dataObject, xmlFormatter, userPrinciple, workspaceGuid, serializer, _testCatalog, _resourceCatalog, ref executePayload); return(new StringResponseWriter(executePayload, formatter.ContentType)); }
private IResponseWriter ServiceTestExecutionResponse(out string executePayload, IDSFDataObject dataObject, Dev2JsonSerializer serializer, bool canExecute) { var formatter = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json"); if (!canExecute) { executePayload = string.Empty; return(new StringResponseWriter(dataObject.Environment.FetchErrors(), formatter.ContentType)); } executePayload = ServiceTestExecutor.SetupForTestExecution(serializer, _esbExecuteRequest, dataObject); return(new StringResponseWriter(executePayload, formatter.ContentType)); }
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()); }
private IResponseWriter ExecuteAsTest(IPrincipal userPrinciple) { var formatter = ServiceTestExecutor.ExecuteTests(_dataObject, userPrinciple, _workspaceGuid, _serializer, _testCatalog, _resourceCatalog, out _executePayload, _testCoverageCatalog); return(new StringResponseWriter(_executePayload ?? string.Empty, formatter.ContentType)); }