private IResponseWriter DefaultExecutionResponse(ExecutionDto executionDto) { var allErrors = new ErrorResultTO(); var currentErrors = executionDto.DataObject.Environment?.Errors?.Union(executionDto.DataObject.Environment?.AllErrors); if (currentErrors != null) { foreach (var error in currentErrors) { if (error.Length > 0) { allErrors.AddError(error, true); } } } executionDto.Request = _esbExecuteRequest; executionDto.ErrorResultTO = allErrors; var executionDtoExtensions = new ExecutionDtoExtensions(executionDto); return(executionDtoExtensions.CreateResponseWriter(new StringResponseWriterFactory())); }
public void EnqueueClientExecution(INewExecution execution) { var buySideExecution = new ExecutionDto { ExchangeOrderId = execution.BuySideOrder.ExchangeOrderId, Quantity = execution.MatchedQuantity, Price = execution.MatchedPrice, Symbol = execution.BuySideOrder.Symbol, ExecutionTime = execution.ExecutionTime, Way = execution.BuySideOrder.Way }; serverToClientMessage.Reset(); serverToClientMessage.ReceiverClientId = execution.BuySideOrder.ClientId; serverToClientMessage.Execution.Update(buySideExecution); serverToClientMessage.MessageType = ServerToClientMessageTypeEnum.Execution; Enqueue(); var sellSideExecution = new ExecutionDto { ExchangeOrderId = execution.SellSideOrder.ExchangeOrderId, Quantity = execution.MatchedQuantity, Price = execution.MatchedPrice, Symbol = execution.SellSideOrder.Symbol, ExecutionTime = execution.ExecutionTime, Way = execution.SellSideOrder.Way }; serverToClientMessage.Reset(); serverToClientMessage.ReceiverClientId = execution.SellSideOrder.ClientId; serverToClientMessage.Execution.Update(sellSideExecution); serverToClientMessage.MessageType = ServerToClientMessageTypeEnum.Execution; Enqueue(); }
public void ExecutionDtoExtentions_CreateResponseWriter_WasInternalService_And_ExecuteMessageXML_PayLoadIsNullOrEmpty_Success() { //-------------------------------Arrange---------------------------------- var mockDSFDataObject = new Mock <IDSFDataObject>(); mockDSFDataObject.Setup(o => o.Environment.HasErrors()).Returns(false); var esbExecuteRequestMessage = "<xml>test message</xml>"; var jsonSerializer = new Dev2JsonSerializer(); var serExecuteMessage = jsonSerializer.Serialize(esbExecuteRequestMessage); var executionDto = new ExecutionDto { DataObject = mockDSFDataObject.Object, DataListFormat = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "application/xml"), ErrorResultTO = new ErrorResultTO(), Request = new EsbExecuteRequest { WasInternalService = true, ExecuteResult = new StringBuilder(serExecuteMessage) }, Serializer = jsonSerializer, }; var executionDtoExtentions = new ExecutionDtoExtentions(executionDto); //-------------------------------Act-------------------------------------- executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory()); //-------------------------------Assert----------------------------------- Assert.AreEqual(expected: "\"<xml>test message</xml>\"", actual: executionDto.PayLoad); }
public void ExecutionDtoExtentions_CreateResponseWriter_WasInternalService_And_ExecuteMessageXML_Success() { //-------------------------------Arrange---------------------------------- var mockDSFDataObject = new Mock <IDSFDataObject>(); mockDSFDataObject.Setup(o => o.Environment.HasErrors()).Returns(false); var esbExecuteRequestMessage = "<xml>test message</xml>"; var executeMessage = new ExecuteMessage(); executeMessage.Message.Append(esbExecuteRequestMessage); var jsonSerializer = new Dev2JsonSerializer(); var serExecuteMessage = jsonSerializer.Serialize(executeMessage); var executionDto = new ExecutionDto { DataObject = mockDSFDataObject.Object, ErrorResultTO = new ErrorResultTO(), Request = new EsbExecuteRequest { WasInternalService = true, ExecuteResult = new StringBuilder(serExecuteMessage) }, Serializer = jsonSerializer, }; var executionDtoExtentions = new ExecutionDtoExtentions(executionDto); //-------------------------------Act-------------------------------------- executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory()); //-------------------------------Assert----------------------------------- Assert.AreEqual(expected: esbExecuteRequestMessage, actual: executionDto.PayLoad); }
public virtual IList <ExecutionDto> queryExecutions(ExecutionQueryDto queryDto, int?firstResult, int?maxResults) { ProcessEngine engine = ProcessEngine; queryDto.ObjectMapper = ObjectMapper; ExecutionQuery query = queryDto.toQuery(engine); IList <Execution> matchingExecutions; if (firstResult != null || maxResults != null) { matchingExecutions = executePaginatedQuery(query, firstResult, maxResults); } else { matchingExecutions = query.list(); } IList <ExecutionDto> executionResults = new List <ExecutionDto>(); foreach (Execution execution in matchingExecutions) { ExecutionDto resultExecution = ExecutionDto.fromExecution(execution); executionResults.Add(resultExecution); } return(executionResults); }
void client_NewExecution(object sender, ExecutionDto e) { UiDispatcher.Dispatcher.Invoke(() => { Executions.Add(e); }); }
public void ExecutionDtoExtentions_CreateResponseWriter_NotWasInternalService_And_EmitionTypesSWAGGER_Success() { //-------------------------------Arrange---------------------------------- var mockDSFDataObject = new Mock <IDSFDataObject>(); var mockResource = new Mock <IResource>(); mockResource.Setup(o => o.DataList).Returns(new StringBuilder("<DataList>the test string to be built</DataList>")); mockDSFDataObject.Setup(o => o.Environment.HasErrors()).Returns(false); mockDSFDataObject.Setup(o => o.ReturnType).Returns(EmitionTypes.SWAGGER); var dataListDataFormat = DataListFormat.CreateFormat("SWAGGER", EmitionTypes.SWAGGER, "application/json"); var webRequestTO = new WebRequestTO { WebServerUrl = "http://serverName:3142/public/resourceName.api" }; var executionDto = new ExecutionDto { Resource = mockResource.Object, DataObject = mockDSFDataObject.Object, ErrorResultTO = new ErrorResultTO(), DataListFormat = dataListDataFormat, WebRequestTO = webRequestTO, }; var executionDtoExtentions = new ExecutionDtoExtentions(executionDto); //-------------------------------Act-------------------------------------- executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory()); //-------------------------------Assert----------------------------------- Assert.AreEqual(expected: "{\r\n \"swagger\": 2,\r\n \"info\": {\r\n \"title\": null,\r\n \"description\": \"\",\r\n \"version\": \"1.0.0\"\r\n },\r\n \"host\": \":0/\",\r\n \"basePath\": \"/\",\r\n \"schemes\": [\r\n \"http\"\r\n ],\r\n \"produces\": [\r\n \"application/json\",\r\n \"application/xml\"\r\n ],\r\n \"paths\": {\r\n \"serviceName\": \"/public/resourceName.api\",\r\n \"get\": {\r\n \"summary\": \"\",\r\n \"description\": \"\",\r\n \"parameters\": []\r\n }\r\n },\r\n \"responses\": {\r\n \"200\": {\r\n \"schema\": {\r\n \"$ref\": \"#/definition/Output\"\r\n }\r\n }\r\n },\r\n \"definitions\": {\r\n \"Output\": {\r\n \"type\": \"object\",\r\n \"properties\": {}\r\n }\r\n }\r\n}", actual: executionDto.PayLoad); }
public void ExecutionDtoExtentions_CreateResponseWriter_NotWasInternalService_And_EmitionTypesXML_Success() { //-------------------------------Arrange---------------------------------- var mockDSFDataObject = new Mock <IDSFDataObject>(); var mockResource = new Mock <IResource>(); mockResource.Setup(o => o.DataList).Returns(new StringBuilder("<DataList>the test string to be built</DataList>")); mockDSFDataObject.Setup(o => o.Environment.HasErrors()).Returns(false); mockDSFDataObject.Setup(o => o.ReturnType).Returns(EmitionTypes.XML); var dataListDataFormat = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "application/xml"); var executionDto = new ExecutionDto { Resource = mockResource.Object, DataObject = mockDSFDataObject.Object, ErrorResultTO = new ErrorResultTO(), DataListFormat = dataListDataFormat, }; var executionDtoExtentions = new ExecutionDtoExtentions(executionDto); //-------------------------------Act-------------------------------------- executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory()); //-------------------------------Assert----------------------------------- Assert.AreEqual(expected: "<DataList />", actual: executionDto.PayLoad); }
public void ExecutionDtoExtentions_CreateResponseWriter_NotWasInternalService_And_IsDebug_Success() { //-------------------------------Arrange---------------------------------- var mockDSFDataObject = new Mock <IDSFDataObject>(); mockDSFDataObject.Setup(o => o.Environment.HasErrors()).Returns(false); mockDSFDataObject.Setup(o => o.IsDebug).Returns(true); var dataListDataFormat = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json"); var executionDto = new ExecutionDto { Resource = null, DataObject = mockDSFDataObject.Object, ErrorResultTO = new ErrorResultTO(), DataListFormat = dataListDataFormat, }; var executionDtoExtentions = new ExecutionDtoExtentions(executionDto); //-------------------------------Act-------------------------------------- executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory()); //-------------------------------Assert----------------------------------- Assert.AreEqual(expected: string.Empty, actual: executionDto.PayLoad); }
public ServerToClientMessage() { LimitOrder = new LimitOrderDto(); LimitOrderList = new List<LimitOrderDto>(); Execution = new ExecutionDto(); Level1 = new MarketBestBidAskDto(); StopLimitOrder = new StopLimitOrderDto(); StopLimitOrderList = new List<StopLimitOrderDto>(); Reset(); }
public ServerToClientMessage() { LimitOrder = new LimitOrderDto(); LimitOrderList = new List <LimitOrderDto>(); Execution = new ExecutionDto(); Level1 = new MarketBestBidAskDto(); StopLimitOrder = new StopLimitOrderDto(); StopLimitOrderList = new List <StopLimitOrderDto>(); Reset(); }
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(); }
public void ExecutionDtoExtensions_CreateResponseWriter_NotWasInternalService_And_EmitionTypesSWAGGER_Success() { //-------------------------------Arrange---------------------------------- var mockDataObject = new Mock <IDSFDataObject>(); var mockResource = new Mock <IWarewolfResource>(); mockResource.Setup(resource => resource.ResourceName).Returns("resourceName"); var versionInfo = new VersionInfo { VersionNumber = "1.0" }; mockResource.Setup(resource => resource.VersionInfo).Returns(versionInfo); mockResource.Setup(o => o.DataList).Returns(new StringBuilder("<DataList>the test string to be built</DataList>")); mockDataObject.Setup(o => o.Environment.HasErrors()).Returns(false); mockDataObject.Setup(o => o.ReturnType).Returns(EmitionTypes.SWAGGER); var dataListDataFormat = DataListFormat.CreateFormat("SWAGGER", EmitionTypes.SWAGGER, "application/json"); var webRequestTO = new WebRequestTO { WebServerUrl = "http://serverName:3142/public/resourceName.api" }; var executionDto = new ExecutionDto { Resource = mockResource.Object, DataObject = mockDataObject.Object, ErrorResultTO = new ErrorResultTO(), DataListFormat = dataListDataFormat, WebRequestTO = webRequestTO, }; var executionDtoExtensions = new ExecutionDtoExtensions(executionDto); //-------------------------------Act-------------------------------------- executionDtoExtensions.CreateResponseWriter(new StringResponseWriterFactory()); //-------------------------------Assert----------------------------------- var expectedPayload = "{\r\n \"openapi\": \"3.0.1\",\r\n \"info\": {\r\n \"title\": \"resourceName\",\r\n \"description\": \"resourceName\",\r\n \"version\": \"1.0\"\r\n },\r\n \"servers\": [\r\n {\r\n \"url\": \"http://servername\"\r\n }\r\n ],\r\n \"paths\": {\r\n \"/public/resourceName\": {\r\n \"get\": {\r\n \"tags\": [\r\n \"\"\r\n ],\r\n \"description\": \"\",\r\n \"parameters\": [],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"Success\",\r\n \"content\": {\r\n \"application/json\": {\r\n \"schema\": {\r\n \"type\": \"object\",\r\n \"properties\": {}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}"; Assert.AreEqual(expected: expectedPayload, actual: executionDto.PayLoad); }
public static MessageCorrelationResultWithVariableDto fromMessageCorrelationResultWithVariables(MessageCorrelationResultWithVariables result) { MessageCorrelationResultWithVariableDto dto = new MessageCorrelationResultWithVariableDto(); if (result != null) { dto.ResultType = result.ResultType; if (result.ProcessInstance != null) { dto.ProcessInstance = ProcessInstanceDto.fromProcessInstance(result.ProcessInstance); } else if (result.Execution != null) { dto.Execution = ExecutionDto.fromExecution(result.Execution); } dto.variables = VariableValueDto.fromMap(result.Variables, true); } return(dto); }
internal IResponseWriter BuildResponse(WebRequestTO webRequest, string serviceName) { if (_dataObject.IsServiceTestExecution) { return(ServiceTestExecutionResponse(out _executePayload, _dataObject, _serializer, _canExecute)); } if (_dataObject.IsDebugFromWeb) { return(DebugFromWebExecutionResponse(_dataObject, _serializer)); } DataListFormat formatter; if (webRequest.ServiceName.EndsWith(".xml") || _dataObject.ReturnType == EmitionTypes.XML) { formatter = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "text/xml"); } else { formatter = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json"); } var executionDto = new ExecutionDto { WebRequestTO = webRequest, ServiceName = serviceName, DataObject = _dataObject, DataListIdGuid = _executionDataListId, WorkspaceID = _workspaceGuid, Resource = _resource, DataListFormat = formatter, PayLoad = _executePayload ?? string.Empty, Serializer = _serializer, }; return(DefaultExecutionResponse(executionDto)); }
public override IResponseWriter BuildResponse(WebRequestTO webRequest, string serviceName) { var formatter = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json"); var executionDto = new ExecutionDto { WebRequestTO = webRequest, ServiceName = serviceName, DataObject = _dataObject, DataListIdGuid = _executionDataListId, WorkspaceID = _workspaceGuid, Resource = _resource, DataListFormat = formatter, PayLoad = _executePayload ?? string.Empty, Serializer = _serializer, }; var allErrors = new ErrorResultTO(); var currentErrors = executionDto.DataObject.Environment?.Errors?.Union(executionDto.DataObject.Environment?.AllErrors); if (currentErrors != null) { foreach (var error in currentErrors) { if (error.Length > 0) { allErrors.AddError(error, true); } } } executionDto.Request = _esbExecuteRequest; executionDto.ErrorResultTO = allErrors; if (executionDto.DataObject.ExecutionException is AccessDeniedException) { throw executionDto.DataObject.ExecutionException; } var executionDtoExtensions = new ExecutionDtoExtensions(executionDto); var resp = executionDtoExtensions.CreateResponse(); var content = resp.Content; if (!content.Contains("UserGroups")) { ThrowInternalServerError(); } var json = JsonConvert.DeserializeObject <UserGroupsResponse>(resp.Content); var userGroups = json?.UserGroups.ToList(); bool hasInvalidOutputs = false; hasInvalidOutputs = userGroups.Count == 0; foreach (var o in (userGroups)) { if (string.IsNullOrEmpty(o.Name) || string.IsNullOrWhiteSpace(o.Name)) { hasInvalidOutputs = true; break; } } return(hasInvalidOutputs ? ThrowInternalServerError() : CreateEncryptedResponse(resp.Content)); }
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()); }
public override IResponseWriter BuildResponse(WebRequestTO webRequest, string serviceName) { var formatter = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json"); var executionDto = new ExecutionDto { WebRequestTO = webRequest, ServiceName = serviceName, DataObject = _dataObject, DataListIdGuid = _executionDataListId, WorkspaceID = _workspaceGuid, Resource = _resource, DataListFormat = formatter, PayLoad = _executePayload ?? string.Empty, Serializer = _serializer, }; var allErrors = new ErrorResultTO(); var currentErrors = executionDto.DataObject.Environment?.Errors?.Union(executionDto.DataObject.Environment?.AllErrors); if (currentErrors != null) { foreach (var error in currentErrors) { if (error.Length > 0) { allErrors.AddError(error, true); } } } executionDto.Request = _esbExecuteRequest; executionDto.ErrorResultTO = allErrors; if (executionDto.DataObject.ExecutionException is AccessDeniedException) { throw executionDto.DataObject.ExecutionException; } var executionDtoExtensions = new ExecutionDtoExtensions(executionDto); var resp = executionDtoExtensions.CreateResponse(); var content = resp.Content; if (!content.Contains("UserGroups")) { var dataObject = executionDto.DataObject; var emissionType = new Uri(dataObject.WebUrl).GetEmitionType(); var message = string.Format(ErrorResource.TokenNotAuthorizedToExecuteOuterWorkflowException, dataObject.ServiceName); Throw(emissionType, HttpStatusCode.Unauthorized, GlobalConstants.TOKEN_UNAUTHORIZED, message); } var json = JsonConvert.DeserializeObject <UserGroupsResponse>(resp.Content); var userGroups = json?.UserGroups.ToList(); var hasInvalidOutputs = userGroups?.Count == 0; if (userGroups != null) { foreach (var o in (userGroups)) { if (string.IsNullOrEmpty(o.Name) || string.IsNullOrWhiteSpace(o.Name)) { hasInvalidOutputs = true; break; } } } var webUrl = executionDto.WebRequestTO.WebServerUrl; return(hasInvalidOutputs ? Throw(new Uri(webUrl).GetEmitionType(), HttpStatusCode.BadRequest, GlobalConstants.BAD_REQUEST, "invalid login override workflow selected: outputs not valid") : CreateEncryptedResponse(new Uri(webUrl).GetEmitionType(), resp.Content)); }