예제 #1
0
        private void QueueWorkerMethod(object dummy)
        {
            _resumer.WaitOne();

            try
            {
                foreach (var trigger in TriggerQueue.GetConsumingEnumerable())
                {
                    if (_tokenSource.IsCancellationRequested)
                    {
                        RaiseStateMachineSystemEvent("StateMachine : QueueWorker", "Processing canceled");
                        return;
                    }

                    foreach (var transition in CurrentState.StateTransitionList.Where(t => trigger == t.Value.Trigger))
                    {
                        ExecuteTransition(transition.Value);
                    }
                }
            }
            catch (Exception e)
            {
                RaiseStateMachineSystemEvent("StateMachine: QueueWorker", "Processing canceled. Exception: " + e);
                Start();
            }
        }
예제 #2
0
        public void TriggerQueue_Equals_MisMatch_Expect_False()
        {
            var mockResource = new Mock <IResource>();

            mockResource.Setup(resource => resource.ResourceID).Returns(Guid.NewGuid());

            var mockOption = new Mock <IOption>();
            var mockInputs = new Mock <ICollection <IServiceInputBase> >();
            var resourceId = Guid.NewGuid();

            var triggerQueue = new TriggerQueue
            {
                QueueSourceId     = resourceId,
                QueueName         = "Queue",
                WorkflowName      = "Workflow",
                Concurrency       = 100,
                UserName          = "******",
                Password          = "******",
                Options           = new[] { mockOption.Object },
                QueueSinkId       = resourceId,
                DeadLetterQueue   = "DeadLetterQueue",
                DeadLetterOptions = new[] { mockOption.Object },
                MapEntireMessage  = true,
                Inputs            = mockInputs.Object,
                ResourceId        = resourceId
            };
            var otherTriggerQueue = new TriggerQueue {
                Concurrency = 2
            };
            var equals = triggerQueue.Equals(otherTriggerQueue);

            Assert.IsFalse(equals);
            Assert.AreEqual(resourceId, triggerQueue.ResourceId);
        }
예제 #3
0
        public void TriggerQueue_Equals_Other_IsNull_Expect_False()
        {
            var triggerQueue = new TriggerQueue();
            var equals       = triggerQueue.Equals(null);

            Assert.IsFalse(equals);
        }
예제 #4
0
        public void TriggersCatalog_FileSystemWatcher_Error()
        {
            var directory            = "some path";
            var fileName             = Guid.NewGuid().ToString() + ".bite";
            var oldName              = Guid.NewGuid().ToString() + ".bite";
            var files                = new string[] { fileName };
            var mockDirectoryWrapper = new Mock <IDirectory>();

            mockDirectoryWrapper.Setup(directoryWrapper => directoryWrapper.GetFiles("some path")).Returns(files);
            var mockFileWrapper = new Mock <IFile>();
            var mockSerializer  = new Mock <ISerializer>();

            var mockFileSystemWatcher = new Mock <IFileSystemWatcher>();

            var triggerId        = Guid.NewGuid();
            var decryptedTrigger = "serialized queue data";
            var expected         = DpapiWrapper.Encrypt(decryptedTrigger);

            mockFileWrapper.Setup(o => o.ReadAllText(fileName)).Returns(expected);
            var expectedTrigger = new TriggerQueue
            {
                TriggerId = triggerId
            };

            mockSerializer.Setup(o => o.Deserialize <ITriggerQueue>(decryptedTrigger)).Returns(expectedTrigger);

            var catalog = GetTriggersCatalog(mockDirectoryWrapper.Object, mockFileWrapper.Object, directory, mockSerializer.Object, mockFileSystemWatcher.Object);

            mockFileSystemWatcher.Raise(fileWatcher => fileWatcher.Error += null, null, new ErrorEventArgs(new Exception()));

            mockDirectoryWrapper.Verify(directoryWrapper => directoryWrapper.GetFiles(directory), Times.Exactly(1));

            Assert.AreEqual(1, catalog.Queues.Count);
            Assert.AreEqual(triggerId, catalog.Queues[0].TriggerId);
        }
예제 #5
0
        public void TriggersCatalog_LoadQueuesByResourceId_ExpectQueue()
        {
            var          mockDirectoryWrapper = new Mock <IDirectory>();
            const string fileName             = "somefile.bite";

            mockDirectoryWrapper.Setup(o => o.GetFiles(It.IsAny <string>())).Returns(new[] { fileName });

            var mockFileWrapper       = new Mock <IFile>();
            var mockSerializer        = new Mock <ISerializer>();
            var mockFileSystemWatcher = new Mock <IFileSystemWatcher>();

            var expectedResourceId = Guid.NewGuid();
            var decryptedTrigger   = "serialized queue data";
            var expected           = DpapiWrapper.Encrypt(decryptedTrigger);

            mockFileWrapper.Setup(o => o.ReadAllText("somefile.bite")).Returns(expected);
            var expectedTrigger = new TriggerQueue {
                ResourceId = expectedResourceId
            };

            mockSerializer.Setup(o => o.Deserialize <ITriggerQueue>(decryptedTrigger)).Returns(expectedTrigger);

            var catalog      = GetTriggersCatalog(mockDirectoryWrapper.Object, mockFileWrapper.Object, "some path", mockSerializer.Object, mockFileSystemWatcher.Object);
            var triggerQueue = catalog.LoadQueueTriggerFromFile("somefile.bite");

            mockSerializer.Verify(o => o.Deserialize <ITriggerQueue>(decryptedTrigger), Times.Exactly(2));
            Assert.AreEqual(expectedTrigger, triggerQueue);

            var triggerQueues = catalog.LoadQueuesByResourceId(expectedResourceId);

            Assert.AreEqual(1, triggerQueues.Count);
        }
예제 #6
0
        public void TriggerQueue_ReferenceEquals_Match_Expect_True()
        {
            var triggerQueue = new TriggerQueue {
                Concurrency = 1
            };
            var otherTriggerQueue = triggerQueue;
            var equals            = triggerQueue.Equals(otherTriggerQueue);

            Assert.IsTrue(equals);
        }
예제 #7
0
 private void EnterTrigger(string newTrigger)
 {
     try
     {
         TriggerQueue.Add(newTrigger);
     }
     catch (Exception e)
     {
         RaiseStateMachineSystemEvent("ActiveStateMachine - Error entering Trigger", newTrigger + " - " + e.ToString());
     }
     RaiseStateMachineSystemEvent("ActiveStateMachine - Trigger entered", newTrigger);
 }
예제 #8
0
        public void DeployStatsViewerViewModel_TryCalculate_DeployTriggers_Expect_Result()
        {
            var mockDeployDestinationExplorerViewModel = new Mock <IDeployDestinationExplorerViewModel>();

            mockDeployDestinationExplorerViewModel.Setup(o => o.DeployTriggers).Returns(true);

            var guid = Guid.NewGuid();

            var triggerQueue = new TriggerQueue {
                ResourceId = guid
            };

            var triggerQueues = new List <ITriggerQueue> {
                triggerQueue
            };

            var mockResourceRepository = new Mock <IResourceRepository>();

            mockResourceRepository.Setup(o => o.LoadResourceTriggersForDeploy(guid)).Returns(triggerQueues);
            mockResourceRepository.Setup(o => o.LoadResourceTestsForDeploy(guid)).Returns(new List <IServiceTestModelTO>());

            var mockServer = new Mock <IServer>();

            mockServer.Setup(o => o.ResourceRepository).Returns(mockResourceRepository.Object);

            var mockExplorerItemViewModel = new Mock <IExplorerItemViewModel>();

            mockExplorerItemViewModel.Setup(o => o.ResourceType).Returns(@"WorkflowService");
            mockExplorerItemViewModel.Setup(o => o.IsResourceChecked).Returns(true);
            mockExplorerItemViewModel.Setup(o => o.Server).Returns(mockServer.Object);

            var mockExplorerTreeItem = new Mock <IExplorerTreeItem>();

            mockExplorerTreeItem.Setup(o => o.ResourceId).Returns(guid);
            mockExplorerTreeItem.Setup(o => o.ResourceType).Returns(@"WorkflowService");
            mockExplorerTreeItem.Setup(o => o.IsResourceChecked).Returns(true);
            mockExplorerTreeItem.Setup(o => o.Server).Returns(mockServer.Object);

            var explorerTreeItems = new List <IExplorerTreeItem> {
                mockExplorerTreeItem.Object
            };
            var deployStatsViewerViewModel = new DeployStatsViewerViewModel(explorerTreeItems, mockDeployDestinationExplorerViewModel.Object);

            //-------------------------Act--------------------------------
            deployStatsViewerViewModel.TryCalculate(explorerTreeItems);

            Assert.AreEqual(1, deployStatsViewerViewModel.Services);
            Assert.AreEqual(1, deployStatsViewerViewModel.Triggers);
            Assert.AreEqual(0, deployStatsViewerViewModel.Tests);
        }
예제 #9
0
        private static IWorkerContext ConstructWorkerContext(out RabbitMQSource rabbitSource, out RabbitMQSource rabbitSink)
        {
            var mockArgs = new Mock <IArgs>();

            mockArgs.Setup(o => o.TriggerId).Returns(_resourceId.ToString());
            mockArgs.Setup(o => o.ServerEndpoint).Returns(new Uri("http://somehost:1234"));
            var mockResourceCatalogProxy = new Mock <IResourceCatalogProxy>();
            var mockFilePath             = new Mock <IFilePath>();

            mockFilePath.Setup(o => o.GetDirectoryName(It.IsAny <string>())).Returns("C:\\ProgramData\\Warewolf\\Triggers\\Queue");
            mockFilePath.Setup(o => o.GetFileName(It.IsAny <string>())).Returns(_resourceId.ToString() + ".bite");

            rabbitSource = new RabbitMQSource
            {
                ResourceID   = _sourceId,
                HostName     = "somehost",
                ResourceName = "my somehost resource",
            };
            rabbitSink = new RabbitMQSource
            {
                ResourceID   = _sinkId,
                HostName     = "somehost",
                ResourceName = "my somehost resource",
            };
            mockResourceCatalogProxy.Setup(o => o.GetResourceById <RabbitMQSource>(GlobalConstants.ServerWorkspaceID, _sourceId)).Returns(rabbitSource);
            mockResourceCatalogProxy.Setup(o => o.GetResourceById <RabbitMQSource>(GlobalConstants.ServerWorkspaceID, _sinkId)).Returns(rabbitSink);
            var mockTriggerCatalog = new Mock <ITriggersCatalog>();

            var triggerQueue = new TriggerQueue
            {
                QueueSourceId = _sourceId,
                QueueSinkId   = _sinkId,
                Options       = new IOption[] { new OptionBool {
                                                    Name = "Durable", Value = true
                                                } },
                ResourceId   = _resourceId,
                QueueName    = _queueName,
                WorkflowName = _workflowName,
                Inputs       = new List <IServiceInputBase> {
                    _expectedIServiceInput
                },
            };

            mockTriggerCatalog.Setup(o => o.PathFromResourceId(It.IsAny <string>())).Returns("C:\\ProgramData\\Warewolf\\Triggers\\Queue");
            mockTriggerCatalog.Setup(o => o.LoadQueueTriggerFromFile(It.IsAny <string>())).Returns(triggerQueue);
            return(new WorkerContext(mockArgs.Object, mockResourceCatalogProxy.Object, mockTriggerCatalog.Object, mockFilePath.Object));
        }
예제 #10
0
 /// <summary>
 /// Enter a trigger to the queue
 /// </summary>
 /// <param name="newTrigger"></param>
 private void EnterTrigger(string newTrigger)
 {
     // Put trigger in queue
     try
     {
         TriggerQueue.Add(newTrigger);
     }
     catch (Exception ex)
     {
         RaiseStateMachineSystemEvent(
             "ActiveStateMachine - Error entering trigger",
             $"{newTrigger} -  {ex.ToString()}");
     }
     // Raise an event
     RaiseStateMachineSystemEvent(
         "ActiveStateMachine - Trigger entered", newTrigger);
 }
예제 #11
0
        /// <summary>
        /// Worker method for trigger queue
        /// </summary>
        /// <param name="token">a instatnce of CancellationToken</param>
        private void QueueWorkerMethod(object token)
        {
            var cancellationToken = (CancellationToken)token;

            // Blocks execution until it is reset.
            // Used to pause the state machine.
            _resumer.WaitOne();

            // Block the queue and loop through all triggers available.
            // Blocking queue guarantees FIFO and the GetConsumingEnumerable
            // method automatically removes triggers from queue!
            try
            {
                foreach (var trigger in TriggerQueue.GetConsumingEnumerable())
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        RaiseStateMachineSystemEvent(
                            "State machine: QueueWorker",
                            "Processing canceled!");
                        return;
                    }

                    // Compare trigger
                    foreach (var transition in
                             CurrentState.StateTransitionList
                             .Where(t => trigger == t.Value.Trigger))
                    {
                        ExecuteTransition(transition.Value);
                    }
                }

                // Do not place any code here, because it will not be
                // executed! The foreach loop keeps spinning on the queue
                // until thread is canceled.
            }
            catch (Exception ex)
            {
                RaiseStateMachineSystemEvent(
                    "State machine: QueueWorker",
                    "Processing canceled! Exception: " + ex.ToString());
                // Create a new queue worker task. The previous one is
                // completing right now.
                Start();
            }
        }
예제 #12
0
        public void FetchTriggerQueues_Execute_ExpectTestList()
        {
            //------------Setup for test--------------------------
            var fetchTriggerQueues = new FetchTriggerQueues();

            var triggerQueue1 = new TriggerQueue();

            triggerQueue1.WorkflowName = "My WF";
            var triggerQueue2 = new TriggerQueue();

            triggerQueue2.TriggerId = Guid.NewGuid();
            var triggerQueue3 = new TriggerQueue();

            triggerQueue3.QueueName = "My Queue Name";
            var listOfTriggerQueues = new List <ITriggerQueue>
            {
                triggerQueue1, triggerQueue2, triggerQueue3
            };
            var repo = new Mock <ITriggersCatalog>();
            var ws   = new Mock <IWorkspace>();

            repo.Setup(a => a.Queues).Returns(listOfTriggerQueues).Verifiable();

            var serializer = new Dev2JsonSerializer();
            var inputs     = new Dictionary <string, StringBuilder>();
            var resourceID = Guid.NewGuid();

            inputs.Add("resourceID", new StringBuilder(resourceID.ToString()));
            fetchTriggerQueues.TriggersCatalog = repo.Object;
            //------------Execute Test---------------------------
            var res           = fetchTriggerQueues.Execute(inputs, ws.Object);
            var msg           = serializer.Deserialize <CompressedExecuteMessage>(res);
            var triggerQueues = serializer.Deserialize <List <ITriggerQueue> >(msg.GetDecompressedMessage());

            //------------Assert Results-------------------------
            repo.Verify(a => a.Queues);
            Assert.AreEqual(listOfTriggerQueues.Count, triggerQueues.Count);
            Assert.AreEqual(listOfTriggerQueues[0].WorkflowName, triggerQueues[0].WorkflowName);
            Assert.AreEqual(listOfTriggerQueues[1].TriggerId, triggerQueues[1].TriggerId);
            Assert.AreEqual(listOfTriggerQueues[2].QueueName, triggerQueues[2].QueueName);
        }
예제 #13
0
        public void TriggersCatalog_LoadQueueTriggerFromFile()
        {
            var directoryWrapper      = new Mock <IDirectory>().Object;
            var mockFileWrapper       = new Mock <IFile>();
            var mockSerializer        = new Mock <ISerializer>();
            var mockFileSystemWatcher = new Mock <IFileSystemWatcher>();

            var decryptedTrigger = "serialized queue data";
            var expected         = DpapiWrapper.Encrypt(decryptedTrigger);

            mockFileWrapper.Setup(o => o.ReadAllText("somefile.bite")).Returns(expected);
            var expectedTrigger = new TriggerQueue();

            mockSerializer.Setup(o => o.Deserialize <ITriggerQueue>(decryptedTrigger)).Returns(expectedTrigger);

            var catalog = GetTriggersCatalog(directoryWrapper, mockFileWrapper.Object, "some path", mockSerializer.Object, mockFileSystemWatcher.Object);
            var actual  = catalog.LoadQueueTriggerFromFile("somefile.bite");

            mockSerializer.Verify(o => o.Deserialize <ITriggerQueue>(decryptedTrigger), Times.Once);
            Assert.AreEqual(expectedTrigger, actual);
        }
예제 #14
0
 private void QueueWorkerMethod(object dummy)
 {
     _resumer.WaitOne();
     try
     {
         foreach (var trigger in TriggerQueue.GetConsumingEnumerable()) //not using take method, using this one to get avail triggers in the queue
         {
             if (_tokenSource.IsCancellationRequested)
             {
             }
             foreach (var transition in CurrentState.StateTransitionList.Where(transition => trigger == transition.Value.Trigger))
             {
                 ExecuteTransition(transition.Value);
             }
         }
     }
     catch (Exception ex)
     {
         RaiseStateMachineSystemEvent("State machine: Queueworker", "Processing canceled! Exception: " + ex.ToString());
         Start();
     }
 }
예제 #15
0
        public void TriggerQueueView_ToModel()
        {
            var mockOption = new Mock <IOption>();
            var mockInputs = new Mock <ICollection <IServiceInputBase> >();

            var triggerQueue = new TriggerQueue
            {
                Name              = "TestTriggerQueueName",
                QueueSourceId     = _queueResourceId,
                QueueName         = "TestQueue",
                WorkflowName      = "TestWorkflow",
                Concurrency       = 1000,
                UserName          = "******",
                Password          = "******",
                Options           = new IOption[] { mockOption.Object },
                QueueSinkId       = _queueResourceId,
                DeadLetterQueue   = "TestDeadLetterQueue",
                DeadLetterOptions = new IOption[] { mockOption.Object },
                Inputs            = mockInputs.Object
            };

            var triggerQueueView = CreateViewModel();

            triggerQueueView.ToModel(triggerQueue);

            Assert.AreEqual(triggerQueue.Name, triggerQueueView.TriggerQueueName);
            Assert.AreEqual(triggerQueue.QueueSourceId, triggerQueueView.SelectedQueueSource.ResourceID);
            Assert.AreEqual(triggerQueue.QueueName, triggerQueueView.QueueName);
            Assert.AreEqual(triggerQueue.WorkflowName, triggerQueueView.WorkflowName);
            Assert.AreEqual(triggerQueue.Concurrency, triggerQueueView.Concurrency);
            Assert.AreEqual(triggerQueue.UserName, triggerQueueView.UserName);
            Assert.AreEqual(triggerQueue.Password, triggerQueueView.Password);
            Assert.AreEqual(triggerQueue.Options.Count(), triggerQueueView.Options.Count);
            Assert.AreEqual(triggerQueue.QueueSinkId, triggerQueueView.SelectedDeadLetterQueueSource.ResourceID);
            Assert.AreEqual(triggerQueue.DeadLetterQueue, triggerQueueView.DeadLetterQueue);
            Assert.AreEqual(triggerQueue.DeadLetterOptions.Count(), triggerQueueView.DeadLetterOptions.Count);
            Assert.AreEqual(triggerQueue.Inputs.Count, triggerQueueView.Inputs.Count);
        }
예제 #16
0
        TriggerQueue SaveRandomTriggerQueue(ITriggersCatalog triggerCatalog, Guid triggerId)
        {
            var randomizer   = new Random();
            var source       = "TestResource" + randomizer.Next(1, 10000);
            var queue        = "TestQueueName" + randomizer.Next(1, 10000);
            var workflowName = "TestWorkflow" + randomizer.Next(1, 10000);

            var mockResource = new Mock <IResource>();

            mockResource.Setup(resource => resource.ResourceName).Returns(source);
            mockResource.Setup(resource => resource.ResourceID).Returns(Guid.NewGuid());

            var triggerQueueEvent = new TriggerQueue
            {
                TriggerId     = triggerId,
                QueueSourceId = mockResource.Object.ResourceID,
                QueueName     = queue,
                WorkflowName  = workflowName
            };

            triggerCatalog.SaveTriggerQueue(triggerQueueEvent);

            return(triggerQueueEvent);
        }
예제 #17
0
        public void TriggersCatalog_SaveTriggerQueue_WhenHasTriggerId_ShouldSave_NotUpdateTriggerId()
        {
            var queueTriggersPath = QueueTriggersPath;

            var source       = "TestResource";
            var queue        = "TestQueueName";
            var workflowName = "TestWorkflow";
            var triggerId    = Guid.NewGuid();

            var mockResource = new Mock <IResource>();

            mockResource.Setup(resource => resource.ResourceName).Returns(source);
            mockResource.Setup(resource => resource.ResourceID).Returns(Guid.NewGuid());

            var triggerQueueEvent = new TriggerQueue
            {
                QueueSourceId = mockResource.Object.ResourceID,
                QueueName     = queue,
                WorkflowName  = workflowName,
                TriggerId     = triggerId
            };
            var serializer = new Dev2.Common.Serializers.Dev2JsonSerializer();

            var mockSerializer = new Mock <IBuilderSerializer>();

            mockSerializer.Setup(o => o.Serialize(It.IsAny <ITriggerQueue>())).Returns(serializer.Serialize(triggerQueueEvent));
            var serializerInstance = mockSerializer.Object;

            var path = queueTriggersPath + "\\" + triggerId + ".bite";

            var directory = new Mock <IDirectory>().Object;
            var mockFile  = new Mock <IFile>();
            var savedData = string.Empty;

            mockFile.Setup(o => o.WriteAllText(It.IsAny <string>(), It.IsAny <string>())).Callback <string, string>((filename, data) => {
                savedData = data;
            });

            var file = mockFile.Object;
            var fileSystemWatcherWrapper = new Mock <IFileSystemWatcher>().Object;

            var triggerCatalog = GetTriggersCatalog(directory, file, queueTriggersPath, serializerInstance, fileSystemWatcherWrapper);

            triggerCatalog.SaveTriggerQueue(triggerQueueEvent);


            mockFile.Verify(o => o.WriteAllText(It.IsAny <string>(), It.IsAny <string>()), Times.Once);

            var isEncrypted = DpapiWrapper.CanBeDecrypted(savedData);

            Assert.IsTrue(isEncrypted);

            var decryptedTrigger = DpapiWrapper.Decrypt(savedData);

            var theSavedTrigger = serializer.Deserialize <ITriggerQueue>(decryptedTrigger);

            Assert.IsNotNull(theSavedTrigger);
            Assert.AreEqual(workflowName, theSavedTrigger.WorkflowName);

            Assert.AreEqual(triggerId, theSavedTrigger.TriggerId);

            mockFile.Setup(o => o.Exists(path)).Returns(() => savedData != string.Empty);
            triggerCatalog.DeleteTriggerQueue(triggerQueueEvent);

            mockFile.Verify(o => o.Delete(path), Times.Once);

            Assert.AreEqual(0, triggerCatalog.Queues.Count);
        }
        private Mock <IServer> SetupForTriggerQueueView(Resource resource)
        {
            Mock <IResource> _mockQueueSource;
            Guid             _queueResourceId = Guid.NewGuid();


            var mockServer   = new Mock <IServer>();
            var mockOption   = new Mock <IOption>();
            var mockInputs   = new Mock <ICollection <IServiceInputBase> >();
            var triggerQueue = new TriggerQueue
            {
                Name              = "TestTriggerQueueName",
                QueueSourceId     = _queueResourceId,
                QueueName         = "TestQueue",
                WorkflowName      = "TestWorkflow",
                Concurrency       = 1000,
                UserName          = "******",
                Password          = "******",
                Options           = new IOption[] { mockOption.Object },
                QueueSinkId       = _queueResourceId,
                DeadLetterQueue   = "TestDeadLetterQueue",
                DeadLetterOptions = new IOption[] { mockOption.Object },
                Inputs            = mockInputs.Object
            };

            List <ITriggerQueue> expectedTriggers = new List <ITriggerQueue>
            {
                triggerQueue
            };

            string[] tempValues = new string[3];
            tempValues[0] = "value1";
            tempValues[1] = "value2";
            tempValues[2] = "value3";

            List <IOption> expectedOptions    = SetupOptionsView();
            var            expectedQueueNames = new Dictionary <string, string[]>
            {
                { "QueueNames", tempValues }
            };
            var queueSource2 = new Mock <IResource>();

            _mockQueueSource = new Mock <IResource>();
            _mockQueueSource.Setup(source => source.ResourceID).Returns(_queueResourceId);
            var expectedList = new List <IResource>
            {
                _mockQueueSource.Object, queueSource2.Object
            };
            var mockResourceRepository = new Mock <IResourceRepository>();

            if (resource == null)
            {
                mockResourceRepository.Setup(resourceRepository => resourceRepository.FindOptions(mockServer.Object, _mockQueueSource.Object)).Returns(expectedOptions);
            }
            else
            {
                mockResourceRepository.Setup(resourceRepository => resourceRepository.FindOptions(mockServer.Object, resource)).Returns(expectedOptions);
            }

            mockResourceRepository.Setup(resourceRepository => resourceRepository.FindResourcesByType <IQueueSource>(mockServer.Object)).Returns(expectedList);
            mockResourceRepository.Setup(resourceRepository => resourceRepository.GetTriggerQueueHistory(Guid.NewGuid())).Returns(new List <IExecutionHistory>());
            mockResourceRepository.Setup(resourceRepository => resourceRepository.FindAutocompleteOptions(mockServer.Object, _mockQueueSource.Object)).Returns(expectedQueueNames);
            mockResourceRepository.Setup(resourceRepository => resourceRepository.FetchTriggerQueues()).Returns(expectedTriggers);

            var dataList          = "<DataList><Name>Test</Name><Surname>test1</Surname><Person><Name>sdas</Name><Surname>asdsad</Surname></Person></DataList>";
            var mockResourceModel = new Mock <IContextualResourceModel>();

            mockResourceModel.Setup(resourceModel => resourceModel.DataList).Returns(dataList);

            mockResourceRepository.Setup(resourceRepository => resourceRepository.LoadContextualResourceModel(_workflowResourceId)).Returns(mockResourceModel.Object);

            mockServer.Setup(server => server.ResourceRepository).Returns(mockResourceRepository.Object);
            return(mockServer);
        }