public void Instantiate_Error_ReturnsFalse()
        {
            var newAlertArgs = new NewAlertEventArgs();
            var result       = newAlertArgs.Instantiate("Error Occurred");

            Assert.IsFalse(result);
        }
        public virtual void TryToGetAndSendNewSosOnlineAlerts(SirenOfShameSettings settings, DateTime now, Action <NewAlertEventArgs> invokeNewAlert)
        {
            if (!settings.GetSosOnlineContent())
            {
                return;
            }

            bool weHaveAlreadyCheckedForAlertsToday = settings.LastCheckedForAlert != null && (now - settings.LastCheckedForAlert.Value).TotalHours < 24;

            if (weHaveAlreadyCheckedForAlertsToday)
            {
                return;
            }

            settings.LastCheckedForAlert = DateTime.Now;
            settings.Save();
            var webClient = GetWebClient();

            webClient.DownloadStringCompleted += (s, e) =>
            {
                try
                {
                    if (e.Error != null)
                    {
                        _log.Error("Error retrieving alert", e.Error);
                        return;
                    }
                    NewAlertEventArgs args = new NewAlertEventArgs();
                    var successParsing     = args.Instantiate(e.Result);
                    if (successParsing)
                    {
                        if (settings.SoftwareInstanceId == null)
                        {
                            settings.SoftwareInstanceId = args.SoftwareInstanceId;
                            settings.Save();
                        }
                        if (settings.AlertClosed == null || args.AlertDate > settings.AlertClosed)
                        {
                            invokeNewAlert(args);
                        }
                    }
                }
                catch (Exception ex)
                {
                    _log.Error("Error retrieving alert", ex);
                }
            };
            string url = string.Format(SOS_URL + "/GetAlert?SirenEverConnected={0}&SoftwareInstanceId={1}&ServerType={2}&Version={3}",
                                       settings.SirenEverConnected,
                                       settings.SoftwareInstanceId,
                                       string.Join(",", settings.CiEntryPointSettings.Select(cip => cip.Name)),
                                       Application.ProductVersion
                                       );

            webClient.DownloadStringAsync(new Uri(url));
        }
        public void Instantiate_ExtraArgs_Ignored()
        {
            var newAlertArgs = new NewAlertEventArgs();
            var result       = newAlertArgs.Instantiate("56\r\nhttp://www.google.com\r\nHello World\r\n633979872000000000\r\n\r\n\r\n\r\n\r\n");

            Assert.IsTrue(result);
            Assert.AreEqual(56, newAlertArgs.SoftwareInstanceId);
            Assert.AreEqual("Hello World", newAlertArgs.Message);
            Assert.AreEqual("http://www.google.com", newAlertArgs.Url);
        }
        public void Instantiate_ThreeArgsAllGood_ReturnsTrue()
        {
            var newAlertArgs = new NewAlertEventArgs();
            var result       = newAlertArgs.Instantiate(@"56
http://www.google.com
Hello World
633979872000000000");

            Assert.IsTrue(result);
            Assert.AreEqual(56, newAlertArgs.SoftwareInstanceId);
            Assert.AreEqual("Hello World", newAlertArgs.Message);
            Assert.AreEqual("http://www.google.com", newAlertArgs.Url);
            Assert.AreEqual(new DateTime(2010, 1, 2), newAlertArgs.AlertDate);
        }
示例#5
0
 private void RulesEngineNewAlert(object sender, NewAlertEventArgs args)
 {
     Invoke(() =>
     {
         _showAlert          = true;
         _alertUrl           = args.Url;
         _panelAlert.Visible = true;
         _panelAlert.Height  = 1;
         _labelAlert.Text    = args.Message;
         _details.Location   = new Point(_labelAlert.Width + 7, _labelAlert.Location.Y);
         _showAlertAnimation.Start();
         _alertDate = args.AlertDate;
     });
 }
示例#6
0
        public void TryToGetAndSendNewSosOnlineAlerts_HaveNeverCheckedForAlertsButSettingsSayNeverDownload_DoNotSendAlertToUi()
        {
            var sosOnlineService = new SosOnlineServiceFake();
            var settings         = new SirenOfShameSettingsFake();

            settings.UpdateLocation      = UpdateLocation.Never;
            settings.LastCheckedForAlert = null;
            NewAlertEventArgs newAlertEventArgs = null;

            sosOnlineService.TryToGetAndSendNewSosOnlineAlerts(settings, new DateTime(2010, 1, 1), alert =>
            {
                newAlertEventArgs = alert;
            });

            sosOnlineService.FakeWebClient.InvokeDownloadStringCompleted(@"56
http://www.google.com
Hello World
633979872000000000");
            Assert.IsNull(newAlertEventArgs);
        }
示例#7
0
        public void TryToGetAndSendNewSosOnlineAlerts_LastCheckedForNewAlertsOneSecondAgo_DoNotSendAlertToUi()
        {
            var sosOnlineService = new SosOnlineServiceFake();
            var settings         = new SirenOfShameSettingsFake();
            var now = new DateTime(2010, 2, 2, 2, 2, 1);

            settings.LastCheckedForAlert = new DateTime(2010, 2, 2, 2, 2, 2);

            NewAlertEventArgs newAlertEventArgs = null;

            sosOnlineService.TryToGetAndSendNewSosOnlineAlerts(settings, now, alert =>
            {
                newAlertEventArgs = alert;
            });

            sosOnlineService.FakeWebClient.InvokeDownloadStringCompleted(@"56
http://www.google.com
Hello World
633979872000000000");

            Assert.IsNull(newAlertEventArgs);
        }
示例#8
0
        public void TryToGetAndSendNewSosOnlineAlerts_HaveNeverCheckedForAlerts_SendAlertToUi()
        {
            var sosOnlineService = new SosOnlineServiceFake();
            var settings         = new SirenOfShameSettingsFake();

            settings.LastCheckedForAlert = null;
            NewAlertEventArgs newAlertEventArgs = null;

            sosOnlineService.TryToGetAndSendNewSosOnlineAlerts(settings, new DateTime(2010, 1, 1), alert =>
            {
                newAlertEventArgs = alert;
            });

            sosOnlineService.FakeWebClient.InvokeDownloadStringCompleted(@"56
http://www.google.com
Hello World
633979872000000000");

            Assert.IsNotNull(newAlertEventArgs, "Expected WebClient.DownloadStringAsync to be called, but it never was");
            Assert.AreEqual("Hello World", newAlertEventArgs.Message);
            Assert.AreEqual("http://www.google.com", newAlertEventArgs.Url);
            Assert.AreEqual(new DateTime(2010, 1, 2), newAlertEventArgs.AlertDate);
        }
示例#9
0
        void Unit_NewAlert(object sender, NewAlertEventArgs e)
        {
            this.HandleInvoke(() =>
            {
                var alert = e.Alert as IFileAlert;
                if (alert != null)
                {
                    _alertCount++;
                    var alertType = alert is ChangeAlert ? "Change" : "Creation";
                    var item      = new ListViewItem(alertType);
                    item.SubItems.Add(Path.GetFileName(alert.Path));
                    item.SubItems.Add(DateTime.Now.ToLongTimeString());

                    lvwAlertLog.Items.Add(item);
                    if (lvwAlertLog.Items.Count > 16)
                    {
                        lvwAlertLog.Items.RemoveAt(0);
                    }
                    tbxTotalAlerts.Text  = _alertCount.ToString();
                    tbxFilesInQueue.Text = _scanner.VirusTotalQueue.CurrentQueueCount.ToString();
                }
            });
        }