Beispiel #1
0
        public void ExecutionDtoExtensions_CreateResponseWriter_NotWasInternalService_And_EmitionTypesXML_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDataObject = new Mock <IDSFDataObject>();
            var mockResource   = new Mock <IWarewolfResource>();

            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.XML);

            var dataListDataFormat = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "application/xml");

            var executionDto = new ExecutionDto
            {
                Resource       = mockResource.Object,
                DataObject     = mockDataObject.Object,
                ErrorResultTO  = new ErrorResultTO(),
                DataListFormat = dataListDataFormat,
            };

            var executionDtoExtensions = new ExecutionDtoExtensions(executionDto);

            //-------------------------------Act--------------------------------------
            executionDtoExtensions.CreateResponseWriter(new StringResponseWriterFactory());

            //-------------------------------Assert-----------------------------------
            Assert.AreEqual(expected: "<DataList />", actual: executionDto.PayLoad);
        }
Beispiel #2
0
            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()));
            }
Beispiel #3
0
        public void ExecutionDtoExtensions_CreateResponseWriter_WasInternalService_And_ExecuteMessageXML_PayLoadIsNullOrEmpty_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDataObject = new Mock <IDSFDataObject>();

            mockDataObject.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     = mockDataObject.Object,
                DataListFormat = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "application/xml"),
                ErrorResultTO  = new ErrorResultTO(),
                Request        = new EsbExecuteRequest {
                    WasInternalService = true, ExecuteResult = new StringBuilder(serExecuteMessage)
                },
                Serializer = jsonSerializer,
            };

            var executionDtoExtensions = new ExecutionDtoExtensions(executionDto);

            //-------------------------------Act--------------------------------------
            executionDtoExtensions.CreateResponseWriter(new StringResponseWriterFactory());

            //-------------------------------Assert-----------------------------------
            Assert.AreEqual(expected: "\"<xml>test message</xml>\"", actual: executionDto.PayLoad);
        }
Beispiel #4
0
        public void ExecutionDtoExtensions_CreateResponseWriter_WasInternalService_And_ExecuteMessageXML_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDataObject = new Mock <IDSFDataObject>();

            mockDataObject.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    = mockDataObject.Object,
                ErrorResultTO = new ErrorResultTO(),
                Request       = new EsbExecuteRequest {
                    WasInternalService = true, ExecuteResult = new StringBuilder(serExecuteMessage)
                },
                Serializer = jsonSerializer,
            };

            var executionDtoExtensions = new ExecutionDtoExtensions(executionDto);

            //-------------------------------Act--------------------------------------
            executionDtoExtensions.CreateResponseWriter(new StringResponseWriterFactory());

            //-------------------------------Assert-----------------------------------
            Assert.AreEqual(expected: esbExecuteRequestMessage, actual: executionDto.PayLoad);
        }
Beispiel #5
0
        public void ExecutionDtoExtensions_CreateResponseWriter_NotWasInternalService_And_IsDebug_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDataObject = new Mock <IDSFDataObject>();

            mockDataObject.Setup(o => o.Environment.HasErrors()).Returns(false);
            mockDataObject.Setup(o => o.IsDebug).Returns(true);

            var dataListDataFormat = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json");

            var executionDto = new ExecutionDto
            {
                Resource       = null,
                DataObject     = mockDataObject.Object,
                ErrorResultTO  = new ErrorResultTO(),
                DataListFormat = dataListDataFormat,
            };

            var executionDtoExtensions = new ExecutionDtoExtensions(executionDto);

            //-------------------------------Act--------------------------------------
            executionDtoExtensions.CreateResponseWriter(new StringResponseWriterFactory());

            //-------------------------------Assert-----------------------------------
            Assert.AreEqual(expected: string.Empty, actual: executionDto.PayLoad);
        }
        public void ExecutionDtoExtensions_CreateResponseWriter_NotWasInternalService_And_EmitionTypesSWAGGER_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDataObject = new Mock <IDSFDataObject>();
            var mockResource   = new Mock <IWarewolfResource>();

            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-----------------------------------
            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);
        }
Beispiel #7
0
        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 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;

            var executionDtoExtentions = new ExecutionDtoExtensions(executionDto);

            executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory());
        }
            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));
            }
            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));
            }