public async Task GetWorkflowExportAsync_WorkflowForXmlExists_ReturnEmptyWorkflow()
        {
            // arrange
            _workflow = new SqlWorkflow();
            _workflowArtifactTypes = new List <SqlWorkflowArtifactTypes>();
            _workflowStates        = new List <SqlState>();
            _workflowEvents        = new List <SqlWorkflowEventData>();
            _userRepositoryMock.Setup(repo => repo.GetUsersAsync(It.IsAny <Pagination>(), null, null, null))
            .ReturnsAsync(_userQueryResult);
            _workflowRepositoryMock.Setup(repo => repo.GetWorkflowDetailsAsync(It.IsAny <int>()))
            .ReturnsAsync(_workflow);
            _workflowRepositoryMock.Setup(repo => repo.GetWorkflowArtifactTypesAsync(It.IsAny <int>()))
            .ReturnsAsync(_workflowArtifactTypes);
            _workflowRepositoryMock.Setup(repo => repo.GetWorkflowStatesAsync(It.IsAny <int>()))
            .ReturnsAsync(_workflowStates);
            _workflowRepositoryMock.Setup(repo => repo.GetWorkflowEventsAsync(It.IsAny <int>()))
            .ReturnsAsync(_workflowEvents);
            _projectMetaRepository.Setup(repo => repo.GetStandardProjectTypesAsync()).ReturnsAsync(_projectTypes);

            // act
            var workflowExport = await _service.GetWorkflowExportAsync(WorkflowId, WorkflowMode.Xml);

            // assert
            Assert.IsNotNull(workflowExport);
            Assert.IsFalse(workflowExport.IsActive);
            Assert.IsTrue(workflowExport.Projects.IsEmpty());
            Assert.IsTrue(workflowExport.States.IsEmpty());
            Assert.IsTrue(workflowExport.TransitionEvents.IsEmpty());
            Assert.IsTrue(workflowExport.PropertyChangeEvents.IsEmpty());
            Assert.IsTrue(workflowExport.NewArtifactEvents.IsEmpty());
        }
        public async Task UpdateWorkflowAsync(SqlWorkflow workflow, int revision, IDbTransaction transaction = null)
        {
            var parameters = new DynamicParameters();

            parameters.Add("@WorkflowId", workflow.WorkflowId);
            parameters.Add("@Name", workflow.Name);
            parameters.Add("@Description", workflow.Description);
            parameters.Add("@Status", workflow.Active);
            parameters.Add("@RevisionId", revision);
            parameters.Add("@CurrentVersion", workflow.VersionId);

            parameters.Add("@ErrorCode", dbType: DbType.Int32, direction: ParameterDirection.Output);

            if (transaction != null)
            {
                await
                transaction.Connection.ExecuteScalarAsync <int>("UpdateWorkflow", parameters, transaction,
                                                                commandType : CommandType.StoredProcedure);
            }
            else
            {
                await
                _connectionWrapper.ExecuteScalarAsync <int>("UpdateWorkflow", parameters,
                                                            commandType : CommandType.StoredProcedure);
            }

            var errorCode = parameters.Get <int?>("ErrorCode");

            if (errorCode.HasValue)
            {
                switch (errorCode.Value)
                {
                case (int)SqlErrorCodes.GeneralSqlError:
                    throw new Exception(ErrorMessages.GeneralErrorOfUpdatingWorkflow);

                case (int)SqlErrorCodes.WorkflowWithSuchANameAlreadyExists:
                    throw new ConflictException(ErrorMessages.WorkflowAlreadyExists, ErrorCodes.WorkflowAlreadyExists);

                case (int)SqlErrorCodes.WorkflowWithCurrentIdNotExist:
                    throw new ResourceNotFoundException(ErrorMessages.WorkflowNotExist, ErrorCodes.ResourceNotFound);

                case (int)SqlErrorCodes.WorkflowWithCurrentIdIsActive:
                    throw new ConflictException(ErrorMessages.WorkflowIsActive, ErrorCodes.WorkflowIsActive);

                case (int)SqlErrorCodes.WorkflowWithoutProjectArtifactTypeAssignmentsCannotBeActivated:
                    throw new ConflictException(ErrorMessages.WorkflowWithoutProjectArtifactTypeAssignmentsCannotBeActivated, ErrorCodes.WorkflowProjectHasNoLiveArtifactTypes);

                case (int)SqlErrorCodes.WorkflowHasSameProjectArtifactTypeAssignedToAnotherActiveWorkflow:
                    throw new ConflictException(ErrorMessages.WorkflowHasSameProjectArtifactTypeAssignedToAnotherActiveWorkflow, ErrorCodes.Conflict);

                case (int)SqlErrorCodes.WorkflowVersionsNotEqual:
                    throw new ConflictException(ErrorMessages.WorkflowVersionsNotEqual, ErrorCodes.WorkflowVersionsNotEqual);
                }
            }
        }
Example #3
0
        public static void creatUser(int _age, string _name, string _surname,
                                     string _email, string _password)
        {
            UsersModel user = new UsersModel()
            {
                age      = _age,
                name     = _name,
                surname  = _surname,
                email    = _email,
                password = _password
            };

            string sql = @"INSERT INTO dbo.Users (age, name, surname, email, password)
                            VALUES(@age, @name, @surname, @email, @password)";

            SqlWorkflow.saveData(sql, user);
        }
        public async Task UpdateWorkflowStatusAsync_WorkflowHasDifferentVersion_ReturnConflicErrorResult()
        {
            // Arrange
            var existingWorkflow = new SqlWorkflow {
                VersionId = 1, WorkflowId = 1
            };
            var updateSatus = new StatusUpdate {
                VersionId = 2, Active = true
            };

            _workflowRepositoryMock.Setup(repo => repo.GetWorkflowDetailsAsync(It.IsAny <int>()))
            .ReturnsAsync(existingWorkflow);
            // Act
            await _service.UpdateWorkflowStatusAsync(updateSatus, WorkflowId, SessionUserId);

            // Assert
            // Exception
        }
        public async Task <int> CreateWorkflow(SqlWorkflow workflow, int revision, IDbTransaction transaction)
        {
            var parameters = new DynamicParameters();

            parameters.Add("@Name", workflow.Name);
            parameters.Add("@Description", workflow.Description);
            parameters.Add("@RevisionId", revision);
            parameters.Add("@ErrorCode", dbType: DbType.Int32, direction: ParameterDirection.Output);

            int result;

            if (transaction == null)
            {
                result = await _connectionWrapper.ExecuteScalarAsync <int>
                         (
                    "CreateWorkflow",
                    parameters,
                    commandType : CommandType.StoredProcedure);
            }
            else
            {
                result = await transaction.Connection.ExecuteScalarAsync <int>
                         (
                    "CreateWorkflow",
                    parameters,
                    transaction,
                    commandType : CommandType.StoredProcedure);
            }

            var errorCode = parameters.Get <int?>("ErrorCode");

            if (errorCode.HasValue)
            {
                switch (errorCode.Value)
                {
                case (int)SqlErrorCodes.WorkflowWithSuchANameAlreadyExists:
                    throw new ConflictException(ErrorMessages.WorkflowAlreadyExists, ErrorCodes.WorkflowAlreadyExists);

                case (int)SqlErrorCodes.GeneralSqlError:
                    throw new Exception(ErrorMessages.GeneralErrorOfCreatingWorkflow);
                }
            }
            return(result);
        }
Example #6
0
        public static List <UsersModel> loadUsers()
        {
            string sql = @"SELECT * FROM dbo.Users";

            return(SqlWorkflow.loadData <UsersModel> (sql));
        }
        public void Initialize()
        {
            _workflowRepositoryMock         = new Mock <IWorkflowRepository>();
            _workflowXmlValidatorMock       = new Mock <IWorkflowXmlValidator>();
            _userRepositoryMock             = new Mock <IUserRepository>();
            _usersRepositoryMock            = new Mock <IUsersRepository>();
            _workflowValidationErrorBuilder = new Mock <IWorkflowValidationErrorBuilder>();
            _triggerConverter                  = new Mock <ITriggerConverter>();
            _projectMetaRepository             = new Mock <IProjectMetaRepository>();
            _artifactRepository                = new Mock <IArtifactRepository>();
            _applicationSettingsRepositoryMock = new Mock <IApplicationSettingsRepository>();
            _applicationSettingsRepositoryMock = new Mock <IApplicationSettingsRepository>();
            _serviceLogRepositoryMock          = new Mock <IServiceLogRepository>();
            _sendMessageExecutorMock           = new Mock <ISendMessageExecutor>();
            _webhooksRepositoryMock            = new Mock <IWebhooksRepository>();

            _service = new WorkflowService(_workflowRepositoryMock.Object,
                                           _workflowXmlValidatorMock.Object,
                                           _usersRepositoryMock.Object,
                                           _workflowValidationErrorBuilder.Object,
                                           _projectMetaRepository.Object,
                                           _triggerConverter.Object,
                                           null,
                                           null,
                                           _artifactRepository.Object,
                                           _applicationSettingsRepositoryMock.Object,
                                           _serviceLogRepositoryMock.Object,
                                           _sendMessageExecutorMock.Object,
                                           _webhooksRepositoryMock.Object);

            _workflowDataValidatorMock = new Mock <IWorkflowDataValidator>();
            _workflowDataValidatorMock
            .Setup(q => q.ValidateUpdateDataAsync(It.IsAny <IeWorkflow>(), It.IsAny <ProjectTypes>()))
            .ReturnsAsync(new WorkflowDataValidationResult());
            typeof(WorkflowService)
            .GetField("_workflowDataValidator", BindingFlags.Instance | BindingFlags.NonPublic)
            ?.SetValue(_service, _workflowDataValidatorMock.Object);

            _workflow = new SqlWorkflow
            {
                Name        = "Workflow1",
                Description = "Workflow1Description"
            };
            _workflowArtifactTypes = new List <SqlWorkflowArtifactTypes>
            {
                new SqlWorkflowArtifactTypes
                {
                    ProjectId        = 1,
                    ProjectPath      = "Project1",
                    ArtifactTypeName = "Artifact1",
                    ArtifactTypeId   = 204
                },
                new SqlWorkflowArtifactTypes
                {
                    ProjectId        = 2,
                    ProjectPath      = "Project2",
                    ArtifactTypeName = "Artifact2",
                    ArtifactTypeId   = 205
                },
                new SqlWorkflowArtifactTypes
                {
                    ProjectId        = 3,
                    ProjectPath      = "Project3",
                    ArtifactTypeName = "Artifact3",
                    ArtifactTypeId   = 206
                }
            };
            _workflowStates = new List <SqlState>
            {
                new SqlState
                {
                    VersionId       = 1,
                    WorkflowStateId = 1,
                    Name            = "New",
                    Default         = true,
                    CanvasSettings  = I18NHelper.FormatInvariant("<S><LN>{0}</LN></S>", Location)
                },
                new SqlState
                {
                    VersionId       = 2,
                    WorkflowStateId = 2,
                    Name            = "Active",
                    CanvasSettings  = string.Empty
                }
            };
            _workflowEvents = new List <SqlWorkflowEventData>
            {
                new SqlWorkflowEventData
                {
                    WorkflowId     = 10,
                    Name           = "Transition1",
                    FromState      = "New",
                    ToState        = "Active",
                    FromStateId    = 1,
                    ToStateId      = 2,
                    Permissions    = "<P S=\"0\"><G>1</G></P>",
                    CanvasSettings = I18NHelper.FormatInvariant("<S><PRT><FR>{0}</FR><TO>{1}</TO></PRT></S>",
                                                                (int)FromPort, (int)ToPort),
                    Type     = 0,
                    Triggers =
                        "<TSR><TS><T><AEN><ES><E>test.com</E></ES><M>4QOTT0IR7W</M></AEN></T></TS></TSR>"
                },
                new SqlWorkflowEventData
                {
                    WorkflowId = 10,
                    Name       = "PropertyChange1",
                    Type       = 1,
                    Triggers   =
                        "<TSR><TS><T><AEN><ES><E>test.com</E></ES><M>4QOTT0IR7W</M></AEN></T></TS></TSR>",
                    PropertyTypeId = 1
                },
                new SqlWorkflowEventData
                {
                    WorkflowId = 10,
                    Name       = "PropertyChange2",
                    Type       = 1,
                    Triggers   =
                        "<TSR><TS><T><AEN><ES><E>test.com</E></ES><M>4QOTT0IR7W</M></AEN></T></TS></TSR>",
                    PropertyTypeId = 2
                },
                new SqlWorkflowEventData
                {
                    WorkflowId = 10,
                    Name       = "NewArtifact1",
                    Type       = 2,
                    Triggers   =
                        "<TSR><TS><T><AEN><ES><E>test.com</E></ES><M>4QOTT0IR7W</M></AEN></T></TS></TSR>",
                },
            };
            _userItems       = new List <UserDto>();
            _userQueryResult = new QueryResult <UserDto>();
            _projectTypes    = new ProjectTypes();
            _projectTypes.PropertyTypes.Add(new PropertyType {
                Name = "Property1", Id = 1
            });
            _projectTypes.PropertyTypes.Add(new PropertyType {
                Name = "Property2", Id = 2
            });
            _triggers = new List <IeTrigger> {
                new IeTrigger()
            };
        }