Exemplo n.º 1
0
        public void AuditQueryableElastic_Default_Constructor_Failed_InvalidSource()
        {
            var auditQueryable = new AuditQueryableElastic("http://invalid-elastic-source", string.Empty, string.Empty, AuthenticationType.Anonymous, string.Empty, string.Empty);
            var query          = new Dictionary <string, StringBuilder>();

            _ = auditQueryable.QueryLogData(query);
            Assert.Fail("Invalid Elastic source successfully connected.");
        }
        public void AuditQueryableElastic_QueryTriggerData()
        {
            var          dependency  = new Depends(Depends.ContainerType.AnonymousElasticsearch);
            var          hostName    = "http://" + dependency.Container.IP;
            const string searchIndex = "warewolftestlogs";
            const string username    = "";
            const string password    = "";

            var mockElasticsearchSource = new Mock <IElasticsearchSource>();

            mockElasticsearchSource.Setup(o => o.HostName).Returns(hostName);
            mockElasticsearchSource.Setup(o => o.Port).Returns(dependency.Container.Port);
            mockElasticsearchSource.Setup(o => o.SearchIndex).Returns(searchIndex);
            mockElasticsearchSource.Setup(o => o.Username).Returns(username);
            mockElasticsearchSource.Setup(o => o.Password).Returns(password);
            mockElasticsearchSource.Setup(o => o.AuthenticationType).Returns(AuthenticationType.Anonymous);

            var resourceId          = Guid.NewGuid();
            var executionId         = Guid.NewGuid();
            var customTransactionId = Guid.NewGuid();
            var startDate           = DateTime.Now;
            var endDate             = startDate.AddMinutes(5);
            var queueRunStatus      = QueueRunStatus.Success;

            var executionInfo = new Dictionary <string, object>
            {
                { "ExecutionId", executionId },
                { "CustomTransactionID", customTransactionId },
                { "Success", queueRunStatus },
                { "EndDate", endDate },
                { "Duration", "5" },
                { "StartDate", startDate },
                { "FailureReason", "" },
            };

            var hits = new Dictionary <string, object>
            {
                { "ResourceId", resourceId },
                { "ExecutionInfo", executionInfo },
                { "UserName", username },
                { "Exception", new Exception("This is an exception") },
                { "LogLevel", LogLevel.Debug.ToString() },
                { "AuditType", "LogAdditionalDetail" },
            };

            var values = new Dictionary <string, object>
            {
                { "values", hits }
            };

            var fields = new Dictionary <string, object>
            {
                { "fields", values }
            };

            var mockHit = new Mock <IHit <object> >();

            mockHit.Setup(o => o.Source).Returns(fields);

            var readOnlyCollection = new List <IHit <object> >
            {
                mockHit.Object
            };

            var mockHitsMetadata = new Mock <IHitsMetadata <object> >();

            mockHitsMetadata.Setup(o => o.Hits).Returns(readOnlyCollection);

            var mockSearchResponse = new Mock <ISearchResponse <object> >();

            mockSearchResponse.Setup(o => o.HitsMetadata).Returns(mockHitsMetadata.Object);

            var mockElasticClient = new Mock <IElasticClient>();
            var mock = new Mock <IConnectionSettingsValues>();

            mockElasticClient.Setup(o => o.ConnectionSettings).Returns(mock.Object);

            mockElasticClient.Setup(o => o.Search <object>(It.IsAny <ISearchRequest>()))
            .Returns(mockSearchResponse.Object);

            var auditQueryableElastic =
                new AuditQueryableElastic(mockElasticsearchSource.Object, mockElasticClient.Object);

            var query = new Dictionary <string, StringBuilder>
            {
                { "ResourceId", resourceId.ToString().ToStringBuilder() }
            };

            var queryTriggerData = auditQueryableElastic.QueryTriggerData(query);

            var executionHistories = queryTriggerData.ToList();

            Assert.AreEqual(1, executionHistories.Count);
            Assert.AreEqual(resourceId, executionHistories[0].ResourceId);
            Assert.AreEqual(username, executionHistories[0].UserName);
            Assert.AreEqual(executionId, executionHistories[0].ExecutionInfo.ExecutionId);
            Assert.AreEqual(queueRunStatus, executionHistories[0].ExecutionInfo.Success);
            Assert.AreEqual(startDate.ToString(), executionHistories[0].ExecutionInfo.StartDate.ToString());
            Assert.AreEqual(endDate.ToString(), executionHistories[0].ExecutionInfo.EndDate.ToString());
            Assert.AreEqual("5.00:00:00", executionHistories[0].ExecutionInfo.Duration.ToString());

            auditQueryableElastic.Dispose();

            mockElasticsearchSource.Verify(o => o.Dispose(), Times.Once);
        }
        public void AuditQueryableElastic_QueryLogData()
        {
            var          dependency  = new Depends(Depends.ContainerType.AnonymousElasticsearch);
            var          hostName    = "http://" + dependency.Container.IP;
            const string searchIndex = "warewolftestlogs";
            const string username    = "";
            const string password    = "";

            var mockElasticsearchSource = new Mock <IElasticsearchSource>();

            mockElasticsearchSource.Setup(o => o.HostName).Returns(hostName);
            mockElasticsearchSource.Setup(o => o.Port).Returns(dependency.Container.Port);
            mockElasticsearchSource.Setup(o => o.SearchIndex).Returns(searchIndex);
            mockElasticsearchSource.Setup(o => o.Username).Returns(username);
            mockElasticsearchSource.Setup(o => o.Password).Returns(password);
            mockElasticsearchSource.Setup(o => o.AuthenticationType).Returns(AuthenticationType.Anonymous);

            var          executionId         = Guid.NewGuid();
            var          serverId            = Guid.NewGuid();
            var          parentId            = Guid.NewGuid();
            var          customTransactionId = Guid.NewGuid();
            var          auditDate           = DateTime.Now;
            var          startDate           = DateTime.Now;
            var          endDate             = startDate.AddMinutes(5);
            const string workflowName        = "workflowName";
            const string executingUser       = "******";
            const string url         = "http:localhost.net";
            const string environment = "environment";
            const string auditType   = "LogResumeExecutionState";
            var          logLevel    = LogLevel.Debug.ToString();

            var hits = new Dictionary <string, object>
            {
                { "ExecutionID", executionId },
                { "CustomTransactionID", customTransactionId },
                { "WorkflowName", workflowName },
                { "ExecutingUser", executingUser },
                { "Url", url },
                { "Environment", environment },
                { "AuditDate", auditDate },
                { "Exception", new Exception("This is an exception") },
                { "AuditType", auditType },
                { "LogLevel", logLevel },
                { "IsSubExecution", false.ToString() },
                { "IsRemoteWorkflow", false.ToString() },
                { "ServerID", serverId },
                { "ParentID", parentId },
            };

            var values = new Dictionary <string, object>
            {
                { "values", hits }
            };

            var fields = new Dictionary <string, object>
            {
                { "fields", values }
            };

            var mockHit = new Mock <IHit <object> >();

            mockHit.Setup(o => o.Source).Returns(fields);

            var readOnlyCollection = new List <IHit <object> >
            {
                mockHit.Object
            };

            var mockHitsMetadata = new Mock <IHitsMetadata <object> >();

            mockHitsMetadata.Setup(o => o.Hits).Returns(readOnlyCollection);

            var mockSearchResponse = new Mock <ISearchResponse <object> >();

            mockSearchResponse.Setup(o => o.HitsMetadata).Returns(mockHitsMetadata.Object);

            var mockElasticClient = new Mock <IElasticClient>();
            var mock = new Mock <IConnectionSettingsValues>();

            mockElasticClient.Setup(o => o.ConnectionSettings).Returns(mock.Object);

            mockElasticClient.Setup(o => o.Search <object>(It.IsAny <ISearchRequest>()))
            .Returns(mockSearchResponse.Object);

            var auditQueryableElastic =
                new AuditQueryableElastic(mockElasticsearchSource.Object, mockElasticClient.Object);

            var query = new Dictionary <string, StringBuilder>
            {
                { "StartDateTime", startDate.ToString().ToStringBuilder() },
                { "CompletedDateTime", endDate.ToString().ToStringBuilder() },
                { "EventLevel", "Debug".ToStringBuilder() },
                { "ExecutionID", executionId.ToString().ToStringBuilder() },
            };

            var queryTriggerData = auditQueryableElastic.QueryLogData(query);

            var audits = queryTriggerData.ToList();

            Assert.AreEqual(1, audits.Count);
            Assert.AreEqual(executionId.ToString(), audits[0].ExecutionID);
            Assert.AreEqual(customTransactionId.ToString(), audits[0].CustomTransactionID);
            Assert.AreEqual(workflowName, audits[0].WorkflowName);
            Assert.AreEqual(executingUser, audits[0].ExecutingUser);
            Assert.AreEqual(auditDate.ToString(), audits[0].AuditDate.ToString());
            Assert.AreEqual(auditType, audits[0].AuditType);
            Assert.AreEqual(logLevel, audits[0].LogLevel.ToString());
            Assert.IsFalse(audits[0].IsSubExecution);
            Assert.IsFalse(audits[0].IsRemoteWorkflow);
            Assert.AreEqual(serverId.ToString(), audits[0].ServerID);
            Assert.AreEqual(parentId.ToString(), audits[0].ParentID);
        }