예제 #1
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);
        }