Exemplo n.º 1
0
        static ValidationResult CanConnectServer(ElasticsearchSource source)
        {
            try
            {
                var uri          = new Uri(source.HostName + ":" + source.Port);
                var isValid      = false;
                var errorMessage = "";
                var settings     = new ConnectionSettings(uri).RequestTimeout(TimeSpan.FromMinutes(2));
                if (source.AuthenticationType == AuthenticationType.Password)
                {
                    settings.BasicAuthentication(source.Username, source.Password);
                }

                var client = new ElasticClient(settings);
                var result = client.Ping();
                isValid = result.IsValid;
                if (!isValid)
                {
                    errorMessage = "could not connect to elasticsearch Instance";
                }
                return(new ValidationResult
                {
                    IsValid = isValid,
                    ErrorMessage = errorMessage
                });
            }
            catch (Exception e)
            {
                return(new ValidationResult
                {
                    IsValid = false,
                    ErrorMessage = e.InnerException != null?string.Join(Environment.NewLine, e.Message, e.InnerException.Message) : e.Message
                });
            }
        }
Exemplo n.º 2
0
        public void ElasticsearchSource_Validate_ToXml_AuthenticationType_Password()
        {
            const string xmlString = @"<Source ID=""1a82a341-b678-4992-a25a-39cdd57198d4"" Name=""Example Elasticsearch Source"" ResourceType=""ElasticsearchSource"" IsValid=""false"" 
                                               ConnectionString=""HostName=localhost;Port=9200;UserName=test;Password=test;AuthenticationType=Password"" Type=""ElasticsearchSource"" ServerVersion=""1.4.1.27"" ServerID=""693ca20d-fb17-4044-985a-df3051d6bac7"">
                                          <DisplayName>Example Elasticsearch Source</DisplayName>
                                          <AuthorRoles>
                                          </AuthorRoles>
                                          <ErrorMessages />
                                          <TypeOf>ElasticsearchSource</TypeOf>
                                          <VersionInfo DateTimeStamp=""2017-05-26T14:21:24.3247847+02:00"" Reason="""" User=""NT AUTHORITY\SYSTEM"" VersionNumber=""3"" ResourceId=""1a82a341-b678-4992-a25a-39cdd57198d4"" VersionId=""b1a6de00-3cac-41cd-b0ed-9fac9bb61266"" />
                                        </Source>";

            var xElement            = XElement.Parse(xmlString);
            var elasticsearchSource = new ElasticsearchSource(xElement);
            var result = elasticsearchSource.ToXml();

            var elasticsearchSourceWithXml = new ElasticsearchSource(result);

            Assert.AreEqual(nameof(ElasticsearchSource), elasticsearchSourceWithXml.ResourceType);
            Assert.AreEqual("9200", elasticsearchSourceWithXml.Port);
            Assert.AreEqual("localhost", elasticsearchSourceWithXml.HostName);
            Assert.AreEqual("test", elasticsearchSourceWithXml.Password);
            Assert.AreEqual("test", elasticsearchSourceWithXml.Username);
            Assert.AreEqual(AuthenticationType.Password, elasticsearchSourceWithXml.AuthenticationType);
        }
        public void ElasticsearchSources_Test_With_ValidHost_AuthenticationType_Anonymous_Expected_ValidValidationResult()
        {
            try
            {
                var dependency = new Depends(Depends.ContainerType.AnonymousElasticsearch);
                var hostName   = "http://" + dependency.Container.IP;
                var source     = new ElasticsearchSource
                {
                    HostName           = hostName,
                    Port               = dependency.Container.Port,
                    AuthenticationType = Dev2.Runtime.ServiceModel.Data.AuthenticationType.Anonymous
                }.ToString();

                var handler = new ElasticsearchSources();
                var result  = handler.Test(source);
                Assert.IsTrue(result.IsValid, result.ErrorMessage);
            }
            catch (Exception e)
            {
                if (e.Message.Contains("could not connect to elasticsearch Instance"))
                {
                    Assert.Inconclusive(e.Message);
                }
                else
                {
                    throw;
                }
            }
        }
        public void ElasticsearchSources_Test_With_InvalidHost_AuthenticationType_Anonymous_Expected_InvalidValidationResult()
        {
            var source = new ElasticsearchSource
            {
                HostName           = "http://ddd",
                AuthenticationType = Dev2.Runtime.ServiceModel.Data.AuthenticationType.Anonymous,
                Port = "9200"
            }.ToString();

            try
            {
                var handler = new ElasticsearchSources();
                var result  = handler.Test(source);
                Assert.IsFalse(result.IsValid);
                Assert.AreEqual("could not connect to elasticsearch Instance", result.ErrorMessage);
            }
            catch (Exception e)
            {
                if (e.Message.Contains("could not connect to elasticsearch Instance"))
                {
                    Assert.Inconclusive(e.Message);
                }
                else
                {
                    throw;
                }
            }
        }
Exemplo n.º 5
0
        public void AuditingSettingsData_Set_Get_LoggingDataSource()
        {
            var dependency = new Depends(Depends.ContainerType.AnonymousElasticsearch);
            var hostName   = "http://" + dependency.Container.IP;

            var source = new ElasticsearchSource
            {
                AuthenticationType = AuthenticationType.Anonymous,
                Port        = dependency.Container.Port,
                HostName    = hostName,
                SearchIndex = "warewolflogstests"
            };
            var serializer = new Dev2JsonSerializer();
            var jsonSource = serializer.Serialize(source);
            var expectedAuditingSettingsData = new AuditingSettingsData
            {
                Endpoint          = "ws://127.0.0.1:5000/ws",
                EncryptDataSource = true,
                LoggingDataSource = new NamedGuidWithEncryptedPayload
                {
                    Name    = "Data Source",
                    Value   = Guid.Empty,
                    Payload = jsonSource
                },
            };
            IDeserializer deserializer = new JsonSerializer();
            var           bytes        = UTF8Encoding.UTF8.GetBytes(expectedAuditingSettingsData.LoggingDataSource.Payload);
            var           result       = deserializer.Deserialize <ElasticsearchSource>(bytes);

            Assert.AreEqual(expectedAuditingSettingsData.LoggingDataSource.Value, Guid.Empty);
            Assert.AreEqual(expectedAuditingSettingsData.LoggingDataSource.Name, "Data Source");
            Assert.AreEqual(source, result);
        }
Exemplo n.º 6
0
        public IElasticsearchSourceDefinition FetchSource(Guid id)
        {
            var xaml   = _queryManager.FetchResourceXaml(id);
            var source = new ElasticsearchSource(xaml.ToXElement());

            var def = new ElasticsearchSourceDefinition(source);

            return(def);
        }
Exemplo n.º 7
0
        static LogSettingsViewModel CreateLogSettingViewModel()
        {
            XmlConfigurator.ConfigureAndWatch(new FileInfo("Settings.config"));
            var loggingSettingsTo = new LoggingSettingsTo {
                FileLoggerLogSize = 50, FileLoggerLogLevel = "TRACE"
            };

            var _resourceRepo = new Mock <IResourceRepository>();
            var env           = new Mock <IServer>();
            var expectedServerSettingsData = new ServerSettingsData
            {
                ExecutionLogLevel = LogLevel.DEBUG.ToString(),
                Sink = "AuditingSettingsData"
            };

            _resourceRepo.Setup(res => res.GetServerSettings(env.Object)).Returns(expectedServerSettingsData);
            var dependency          = new Depends(Depends.ContainerType.AnonymousElasticsearch);
            var hostName            = "http://" + dependency.Container.IP;
            var elasticsearchSource = new ElasticsearchSource
            {
                AuthenticationType = AuthenticationType.Anonymous,
                Port        = dependency.Container.Port,
                HostName    = hostName,
                SearchIndex = "warewolflogstests"
            };
            var jsonSource           = JsonConvert.SerializeObject(elasticsearchSource);
            var auditingSettingsData = new AuditingSettingsData
            {
                Endpoint          = "ws://127.0.0.1:5000/ws",
                EncryptDataSource = true,
                LoggingDataSource = new NamedGuidWithEncryptedPayload
                {
                    Name    = "Auditing Data Source",
                    Value   = Guid.Empty,
                    Payload = jsonSource
                },
            };

            _resourceRepo.Setup(res => res.GetAuditingSettings <AuditingSettingsData>(env.Object)).Returns(auditingSettingsData);
            var selectedAuditingSourceId = Guid.NewGuid();
            var mockAuditingSource       = new Mock <IResource>();

            mockAuditingSource.Setup(source => source.ResourceID).Returns(selectedAuditingSourceId);
            var auditingSources = new Mock <IResource>();
            var expectedList    = new List <IResource>
            {
                mockAuditingSource.Object, auditingSources.Object
            };

            _resourceRepo.Setup(resourceRepository => resourceRepository.FindResourcesByType <IAuditingSource>(env.Object)).Returns(expectedList);

            env.Setup(a => a.ResourceRepository).Returns(_resourceRepo.Object);
            var logSettingsViewModel = new LogSettingsViewModel(loggingSettingsTo, env.Object);

            return(logSettingsViewModel);
        }
Exemplo n.º 8
0
        public void ElasticsearchSource_Constructor_Validate_DefaultValues()
        {
            var elasticsearchSource = new ElasticsearchSource();

            Assert.IsNotNull(elasticsearchSource.ResourceID);
            Assert.AreEqual(Guid.Empty, elasticsearchSource.ResourceID);
            Assert.AreEqual(nameof(ElasticsearchSource), elasticsearchSource.ResourceType);
            Assert.AreEqual("9200", elasticsearchSource.Port);
            Assert.AreEqual(AuthenticationType.Anonymous, elasticsearchSource.AuthenticationType);
        }
Exemplo n.º 9
0
        public void ElasticsearchSource_Validate_DefaultValues()
        {
            var elasticsearchSource = new ElasticsearchSource();

            Assert.IsTrue(elasticsearchSource.IsSource);
            Assert.IsFalse(elasticsearchSource.IsService);
            Assert.IsFalse(elasticsearchSource.IsFolder);
            Assert.IsFalse(elasticsearchSource.IsReservedService);
            Assert.IsFalse(elasticsearchSource.IsServer);
            Assert.IsFalse(elasticsearchSource.IsResourceVersion);
        }
        public void ElasticsearchSources_TestWithValidArgs_Expected_Valid_ValidationResult()
        {
            var handler             = new ElasticsearchSources();
            var elasticsearchSource = new ElasticsearchSource();
            var dependency          = new Depends(Depends.ContainerType.AnonymousElasticsearch);
            var hostName            = "http://" + dependency.Container.IP;

            elasticsearchSource.HostName = hostName;
            var result = handler.Test(elasticsearchSource);

            Assert.IsTrue(result.IsValid);
        }
Exemplo n.º 11
0
 public ValidationResult Test(ElasticsearchSource source)
 {
     try
     {
         return(CanConnectServer(source));
     }
     catch (Exception ex)
     {
         RaiseError(ex);
         return(new ValidationResult {
             IsValid = false, ErrorMessage = ex.Message
         });
     }
 }
Exemplo n.º 12
0
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            var msg        = new ExecuteMessage();
            var serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Save Elasticsearch Resource Service", GlobalConstants.WarewolfInfo);

                values.TryGetValue(Warewolf.Service.SaveElasticsearchSource.ElasticsearchSource, out StringBuilder resourceDefinition);

                IElasticsearchSourceDefinition elasticsearchSourceDef = serializer.Deserialize <ElasticsearchSourceDefinition>(resourceDefinition);

                if (elasticsearchSourceDef.Path == null)
                {
                    elasticsearchSourceDef.Path = string.Empty;
                }

                if (elasticsearchSourceDef.Path.EndsWith("\\"))
                {
                    elasticsearchSourceDef.Path = elasticsearchSourceDef.Path.Substring(0, elasticsearchSourceDef.Path.LastIndexOf("\\", StringComparison.Ordinal));
                }

                var elasticsearchSource = new ElasticsearchSource
                {
                    ResourceID         = elasticsearchSourceDef.Id,
                    HostName           = elasticsearchSourceDef.HostName,
                    Port               = elasticsearchSourceDef.Port,
                    SearchIndex        = elasticsearchSourceDef.SearchIndex,
                    AuthenticationType = elasticsearchSourceDef.AuthenticationType,
                    Password           = elasticsearchSourceDef.Password,
                    Username           = elasticsearchSourceDef.Username,
                    ResourceName       = elasticsearchSourceDef.Name
                };

                ResourceCat.SaveResource(GlobalConstants.ServerWorkspaceID, elasticsearchSource, elasticsearchSourceDef.Path);
                msg.HasError = false;
            }
            catch (Exception err)
            {
                msg.HasError = true;
                msg.Message  = new StringBuilder(err.Message);
                Dev2Logger.Error(err, GlobalConstants.WarewolfError);
            }

            return(serializer.SerializeToBuilder(msg));
        }
        public void ElasticsearchSources_Test_With_InvalidHost_AuthenticationType_Password_Expected_InvalidValidationResult()
        {
            var source = new ElasticsearchSource
            {
                HostName           = "http://ddd",
                Port               = "9300",
                AuthenticationType = Dev2.Runtime.ServiceModel.Data.AuthenticationType.Password,
                Password           = "******",
                Username           = "******"
            }.ToString();

            var handler = new ElasticsearchSources();
            var result  = handler.Test(source);

            Assert.IsFalse(result.IsValid);
            Assert.AreEqual("could not connect to elasticsearch Instance", result.ErrorMessage);
        }
Exemplo n.º 14
0
        public ElasticsearchSource Get(string resourceId, Guid workspaceId)
        {
            var result = new ElasticsearchSource();

            try
            {
                var xmlStr = ResourceCatalog.Instance.GetResourceContents(workspaceId, Guid.Parse(resourceId)).ToString();
                if (!string.IsNullOrEmpty(xmlStr))
                {
                    var xml = XElement.Parse(xmlStr);
                    result = new ElasticsearchSource(xml);
                }
            }
            catch (Exception ex)
            {
                RaiseError(ex);
            }
            return(result);
        }
Exemplo n.º 15
0
        private static ILoggerContext ConstructLoggerContext(IArgs args, out ElasticsearchSource elasticsearchSource)
        {
            var mockArgs = new Mock <IArgs>();

            mockArgs.Setup(o => o.ServerEndpoint).Returns(args.ServerEndpoint);
            mockArgs.Setup(o => o.Verbose).Returns(args.Verbose);
            var dependency = new Depends(Depends.ContainerType.AnonymousElasticsearch);
            var hostName   = "http://" + dependency.Container.IP;

            elasticsearchSource = new ElasticsearchSource
            {
                ResourceID         = Guid.Empty,
                ResourceType       = "ElasticsearchSource",
                AuthenticationType = AuthenticationType.Anonymous,
                Port        = dependency.Container.Port,
                HostName    = hostName,
                SearchIndex = "warewolflogstests"
            };

            var serializer       = new Dev2JsonSerializer();
            var payload          = serializer.Serialize(elasticsearchSource);
            var encryptedPayload = DpapiWrapper.Encrypt(payload);
            var data             = new AuditingSettingsData
            {
                EncryptDataSource = true,
                LoggingDataSource = new NamedGuidWithEncryptedPayload
                {
                    Name    = "Testing Elastic Data Source",
                    Value   = Guid.Empty,
                    Payload = encryptedPayload
                }
            };

            Config.Auditing.LoggingDataSource = data.LoggingDataSource;
            Config.Auditing.EncryptDataSource = data.EncryptDataSource;
            Config.Server.Sink = nameof(AuditingSettingsData);
            return(new LoggerContext(mockArgs.Object));
        }
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            var msg        = new ExecuteMessage();
            var serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Test Elasticsearch Source", GlobalConstants.WarewolfInfo);
                msg.HasError = false;
                values.TryGetValue(Warewolf.Service.TestElasticsearchSource.ElasticsearchSource, out StringBuilder resourceDefinition);

                var elasticsearchServiceSourceDefinition = serializer.Deserialize <ElasticsearchSourceDefinition>(resourceDefinition);
                var con = new ElasticsearchSources();
                using (var elasticsearchSource = new ElasticsearchSource
                {
                    HostName = elasticsearchServiceSourceDefinition.HostName,
                    Port = elasticsearchServiceSourceDefinition.Port,
                    Password = elasticsearchServiceSourceDefinition.Password,
                    Username = elasticsearchServiceSourceDefinition.Username,
                    AuthenticationType = elasticsearchServiceSourceDefinition.AuthenticationType,
                    SearchIndex = elasticsearchServiceSourceDefinition.SearchIndex
                })
                {
                    var result = con.Test(elasticsearchSource);
                    msg.HasError = false;
                    msg.Message  = new StringBuilder(result.IsValid ? serializer.Serialize(result.Result) : result.ErrorMessage);
                    msg.HasError = !result.IsValid;
                }
            }
            catch (Exception err)
            {
                msg.HasError = true;
                msg.Message  = new StringBuilder(err.Message);
                Dev2Logger.Error(err, GlobalConstants.WarewolfError);
            }
            return(serializer.SerializeToBuilder(msg));
        }
        public void SaveElasticsearchSource_Execute_GivenResourceDefination_GivenExising_ShouldReturnResourceDefinationMsg()
        {
            //---------------Set up test pack-------------------
            var serializer = new Dev2JsonSerializer();
            var source     = new ElasticsearchSourceDefinition()
            {
                Id                 = Guid.Empty,
                Name               = "Name",
                HostName           = "HostName",
                Port               = "3679",
                AuthenticationType = AuthenticationType.Anonymous,
                SearchIndex        = "warewolflogs"
            };
            var compressedExecuteMessage = new CompressedExecuteMessage();
            var serializeToJsonString    = source.SerializeToJsonString(new DefaultSerializationBinder());

            compressedExecuteMessage.SetMessage(serializeToJsonString);
            var values = new Dictionary <string, StringBuilder>
            {
                { "ElasticsearchSource", source.SerializeToJsonStringBuilder() }
            };
            var catalog             = new Mock <IResourceCatalog>();
            var elasticsearchSource = new ElasticsearchSource();

            catalog.Setup(resourceCatalog => resourceCatalog.GetResource(It.IsAny <Guid>(), source.Name)).Returns(elasticsearchSource);
            catalog.Setup(resourceCatalog => resourceCatalog.SaveResource(It.IsAny <Guid>(), elasticsearchSource, It.IsAny <string>()));
            var saveElasticsearchSource = new SaveElasticsearchSource(catalog.Object);
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var jsonResult = saveElasticsearchSource.Execute(values, null);
            var result     = serializer.Deserialize <ExecuteMessage>(jsonResult);

            //---------------Test Result -----------------------
            Assert.IsFalse(result.HasError);
            catalog.Verify(resourceCatalog => resourceCatalog.SaveResource(It.IsAny <Guid>(), elasticsearchSource, It.IsAny <string>()));
        }
Exemplo n.º 18
0
        static LogSettingsViewModel CreateLogSettingViewModel(string sink, Mock <IResourceRepository> _resourceRepo = null)
        {
            XmlConfigurator.ConfigureAndWatch(new FileInfo("Settings.config"));
            var loggingSettingsTo = new LoggingSettingsTo {
                FileLoggerLogSize = 50, FileLoggerLogLevel = "TRACE", EventLogLoggerLogLevel = "DEBUG"
            };

            var env = new Mock <IServer>();

            if (_resourceRepo is null)
            {
                _resourceRepo = new Mock <IResourceRepository>();
            }

            var expectedServerSettingsData = new ServerSettingsData
            {
                Sink = sink,
                ExecutionLogLevel = LogLevel.DEBUG.ToString()
            };

            _resourceRepo.Setup(res => res.GetServerSettings(env.Object)).Returns(expectedServerSettingsData);
            var selectedAuditingSourceId = Guid.NewGuid();

            if (sink == "LegacySettingsData")
            {
                var legacySettingsData = new LegacySettingsData()
                {
                    AuditFilePath = "somePath"
                };
                _resourceRepo.Setup(res => res.GetAuditingSettings <LegacySettingsData>(env.Object)).Returns(legacySettingsData);
                _resourceRepo.Setup(res => res.SaveAuditingSettings(env.Object, legacySettingsData)).Verifiable();
            }
            else
            {
                var dependency          = new Depends(Depends.ContainerType.AnonymousElasticsearch);
                var hostName            = "http://" + dependency.Container.IP;
                var elasticsearchSource = new ElasticsearchSource
                {
                    AuthenticationType = AuthenticationType.Anonymous,
                    Port        = dependency.Container.Port,
                    HostName    = hostName,
                    SearchIndex = "warewolflogstests"
                };
                var serializer           = new Dev2JsonSerializer();
                var payload              = serializer.Serialize(elasticsearchSource);
                var encryptedPayload     = DpapiWrapper.Encrypt(payload);
                var auditingSettingsData = new AuditingSettingsData
                {
                    Endpoint          = "ws://127.0.0.1:5000/ws",
                    EncryptDataSource = true,
                    LoggingDataSource = new NamedGuidWithEncryptedPayload
                    {
                        Name    = "Auditing Data Source",
                        Value   = selectedAuditingSourceId,
                        Payload = encryptedPayload
                    },
                };
                _resourceRepo.Setup(res => res.GetAuditingSettings <AuditingSettingsData>(env.Object)).Returns(auditingSettingsData);
                _resourceRepo.Setup(res => res.SaveAuditingSettings(env.Object, auditingSettingsData)).Verifiable();
            }

            IResource mockAuditingSource = new ElasticsearchSource
            {
                ResourceID   = selectedAuditingSourceId,
                ResourceName = "Auditing Data Source"
            };
            var expectedList = new List <IResource>();

            expectedList.Add(mockAuditingSource);

            _resourceRepo.Setup(resourceRepository => resourceRepository.FindResourcesByType <IAuditingSource>(env.Object)).Returns(expectedList);

            env.Setup(a => a.ResourceRepository).Returns(_resourceRepo.Object);
            var logSettingsViewModel = new LogSettingsViewModel(loggingSettingsTo, env.Object);

            return(logSettingsViewModel);
        }