public void Execute_NullOutputFilePath_ThrowsException()
        {
            _scanToolsMock.Setup(x => x.TargetElementLocator).Returns(_targetElementLocatorMock.Object);
            _scanToolsMock.Setup(x => x.Actions).Returns(_actionsMock.Object);
            _scanToolsMock.Setup(x => x.ResultsAssembler).Returns(_resultsAssemblerMock.Object);
            _scanToolsMock.Setup(x => x.OutputFileHelper).Returns(_outputFileHelperMock.Object);

            _targetElementLocatorMock.Setup(x => x.LocateRootElement(It.IsAny <int>())).Returns(new A11yElement());

            var expectedResults = new ScanResults();

            expectedResults.ErrorCount = 1;
            InitResultsCallback(expectedResults);

            _actionsMock.Setup(x => x.CaptureScreenshot(It.IsAny <Guid>()));

            _outputFileHelperMock.Setup(x => x.GetNewA11yTestFilePath()).Returns <string>(null);

            var config = Config.Builder
                         .ForProcessId(-1)
                         .WithOutputFileFormat(OutputFileFormat.A11yTest)
                         .Build();

            var action = new Action(() => SnapshotCommand.Execute(config, _scanToolsMock.Object));
            var ex     = Assert.ThrowsException <AxeWindowsAutomationException>(action);

            Assert.IsInstanceOfType(ex.InnerException, typeof(InvalidOperationException));
            Assert.IsTrue(ex.Message.Contains("a11yTestOutputFile"));

            _scanToolsMock.VerifyAll();
            _targetElementLocatorMock.VerifyAll();
            _actionsMock.VerifyAll();
            _resultsAssemblerMock.VerifyAll();
            _outputFileHelperMock.VerifyAll();
        }
Beispiel #2
0
        public void Execute_NoErrors_NoOutputFiles()
        {
            _scanToolsMock.Setup(x => x.TargetElementLocator).Returns(_targetElementLocatorMock.Object);
            _scanToolsMock.Setup(x => x.Actions).Returns(_actionsMock.Object);
            _scanToolsMock.Setup(x => x.NativeMethods).Returns(_nativeMethodsMock.Object);
            _scanToolsMock.Setup(x => x.ResultsAssembler).Returns(_resultsAssemblerMock.Object);

            _targetElementLocatorMock.Setup(x => x.LocateRootElement(It.IsAny <int>())).Returns(new A11yElement());

            var expectedResults = new ScanResults();

            expectedResults.ErrorCount = 0;
            InitResultsCallback(expectedResults);

            // In addition to throwing an ArgumentNullException
            // The following call would cause mock exceptions for IAxeWindowsActions.CaptureScreenshot and IAxeWindowsActions.SaveA11yTestFile.
            //
            var config = Config.Builder
                         .ForProcessId(-1)
                         .WithOutputFileFormat(OutputFileFormat.A11yTest)
                         .Build();

            var actualResults = SnapshotCommand.Execute(config, _scanToolsMock.Object);

            Assert.IsNull(actualResults.OutputFile.A11yTest);

            _scanToolsMock.VerifyAll();
            _nativeMethodsMock.VerifyAll();
            _targetElementLocatorMock.VerifyAll();
            _actionsMock.VerifyAll();
            _resultsAssemblerMock.VerifyAll();
        }
Beispiel #3
0
        private void OnSelection(object sender, SelectedItemChangedEventArgs e)
        {
            if (e.SelectedItem == null)
            {
                return;
            }

            ScanResults selectedScanResult = (ScanResults)e.SelectedItem;

            //DisplayAlert("Item Selected", selectedScanResult.GuiName, "Ok");
            ((ListView)sender).SelectedItem = null;
            selectedScanResult.IsRunning    = true;
            selectedScanResult.IsVisible    = true;

            System.Collections.Generic.List <Plugin.BLE.Abstractions.Contracts.IDevice> systemDevices =
                Plugin.BLE.CrossBluetoothLE.Current.Adapter.GetSystemConnectedOrPairedDevices();

            if ((selectedDevice == null) || (selectedScanResult.Name != selectedDevice.scanResult.Name))
            {
                selectedDevice = new SelectedDevice(selectedScanResult);
            }
            else if (systemDevices.Contains(selectedDevice.bledevice))
            {
                selectedDevice.SendDataToConnectedDevice();
            }
            else
            {
                selectedDevice = new SelectedDevice(selectedScanResult);
            }
        }
Beispiel #4
0
        private void Dump(ScanResults sr)
        {
            var sw = new StringWriter();

            sw.WriteLine("ICFG");
            foreach (var node in sr.ICFG.Nodes.OrderBy(n => n.Address))
            {
                sw.WriteLine("{0} {1}", sr.DirectlyCalledAddresses.ContainsKey(node.Address) ? "C" : " ", node);
                var succs = sr.ICFG.Successors(node).OrderBy(n => n).ToList();
                if (succs.Count > 0)
                {
                    sw.Write("     ");
                    foreach (var s in succs)
                    {
                        sw.Write(" ");
                        if (!sr.DirectlyCalledAddresses.ContainsKey(s.Address))
                        {
                            // cross procedure tail call.
                            sw.Write("*");
                        }
                        sw.Write(s);
                    }
                    sw.WriteLine();
                }
            }
            Debug.WriteLine(sw.ToString());
        }
Beispiel #5
0
        private static void WriteSummaryAndResultsToConsole(ScanResults scanResults)
        {
            var summary = scanResults.Summary.ToList().OrderByDescending(x => x.Key);

            foreach (var(severity, count) in summary)
            {
                Console.WriteLine($"{severity}: {count}");
            }

            foreach (var r in scanResults.Results
                     .Select(x => x.Value)
                     .OrderByDescending(x => (int)x.Severity))
            {
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine($"Scan: {r.Scan.Name}");
                Console.WriteLine($"Details: {r.Scan.Details}");
                Console.WriteLine($"Result: {(r.Passed ? "Passed" : $"Failed ({r.Severity})")}");
                Console.WriteLine();

                foreach (var f in r.Failures)
                {
                    Console.WriteLine(
                        $"Failed On: {f.Message}{(f.FailingItems.Any() ? string.Join(", ", f.FailingItems.Where(x => !string.IsNullOrWhiteSpace(x))) : string.Empty)}");
                }
            }
Beispiel #6
0
        private void Given_Scanner()
        {
            this.host = new Mock <IRewriterHost>();
            var dev = new Mock <DecompilerEventListener>();

            //host.Setup(h => h.EnsurePseudoProcedure(null, null, 0))
            //    .IgnoreArguments()
            //    .Return(new PseudoProcedure("<>", PrimitiveType.Word32, 2));
            host.Setup(h => h.PseudoProcedure(
                           It.IsAny <string>(),
                           It.IsAny <DataType>(),
                           It.IsAny <Expression[]>())).Returns((Expression)null);
            host.Setup(h => h.GetImport(
                           It.IsAny <Address>(),
                           It.IsAny <Address>())).Returns((Expression)null);
            host.Setup(h => h.GetImportedProcedure(
                           It.IsAny <IProcessorArchitecture>(),
                           It.IsAny <Address>(),
                           It.IsAny <Address>())).Returns((ExternalProcedure)null);
            var frame = program.Architecture.CreateFrame();

            this.sr = new ScanResults
            {
                Instructions    = new Dictionary <Address, RtlInstructionCluster>(),
                KnownProcedures = new HashSet <Address>(),
            };
            this.sh = new ShingledScanner(program, host.Object, frame, sr, dev.Object);
        }
Beispiel #7
0
        public void Execute_NullResultsAssembler_ThrowsException()
        {
            _scanToolsMock.Setup(x => x.TargetElementLocator).Returns(_targetElementLocatorMock.Object);
            _scanToolsMock.Setup(x => x.Actions).Returns(_actionsMock.Object);
            _scanToolsMock.Setup(x => x.NativeMethods).Returns(_nativeMethodsMock.Object);
            _scanToolsMock.Setup(x => x.ResultsAssembler).Returns <IScanResultsAssembler>(null);

            _targetElementLocatorMock.Setup(x => x.LocateRootElement(It.IsAny <int>())).Returns(new A11yElement());

            ScanResults tempResults = null;

            _actionsMock.Setup(x => x.Scan(It.IsAny <A11yElement>(), It.IsAny <ScanActionCallback <ScanResults> >()))
            .Callback <A11yElement, ScanActionCallback <ScanResults> >((e, cb) => tempResults = cb(e, Guid.Empty))
            .Returns(() => tempResults);

            var action = new Action(() => SnapshotCommand.Execute(_minimalConfig, _scanToolsMock.Object));
            var ex     = Assert.ThrowsException <AxeWindowsAutomationException>(action);

            Assert.IsInstanceOfType(ex.InnerException, typeof(ArgumentException));
            Assert.IsTrue(ex.Message.Contains("ResultsAssembler"));

            _scanToolsMock.VerifyAll();
            _nativeMethodsMock.VerifyAll();
            _targetElementLocatorMock.VerifyAll();
            _actionsMock.VerifyAll();
        }
        private static A11yElement CreateA11yElement(List <A11yElement> children = null, List <ScanStatus> statuses = null)
        {
            A11yElement element = new A11yElement();

            if (children != null)
            {
                element.Children = children;
            }

            if (statuses != null)
            {
                ScanResult scanResult = new ScanResult
                {
                    Items = new List <RuleResult>()
                };

                foreach (ScanStatus status in statuses)
                {
                    scanResult.Items.Add(new RuleResult {
                        Status = status
                    });
                }

                ScanResults elementScanResults = new ScanResults();
                elementScanResults.AddScanResult(scanResult);

                element.ScanResults = elementScanResults;
            }

            return(element);
        }
Beispiel #9
0
        public ActionResult <string[]> Get(string guid)
        {
            if (guid is null)
            {
                return(new string[] { "Error", "Missing GUID" });
            }

            Guid fileGUID = new Guid(guid);

            ScanResults result = Scanner.ScanHistory.Find(x => x.FileGUID == fileGUID);

            if (result != null)
            {
                switch (result.ScanResult.Result)
                {
                case ClamScanResults.Clean:
                    return(new string[] { "Result", "Clean" });

                case ClamScanResults.VirusDetected:
                    return(new string[] { "Result", "Infected", "File", result.ScanResult.InfectedFiles.First().FileName.Replace("\\\\?\\", ""), "Virus" + result.ScanResult.InfectedFiles.First().VirusName });

                case ClamScanResults.Error:
                    return(new string[] { "Result", "Error", "Details", result.ScanResult.RawResult.Replace("\\\\?\\", "") });
                }
            }
            return(new string[] { "Unavailable", guid.ToString() });
        }
Beispiel #10
0
        public void DataScanner_Readstring()
        {
            var addrBase = Address.Ptr32(0x00123000);
            var mem      = new ByteMemoryArea(addrBase, new byte[0x1000]);
            var segmap   = new SegmentMap(addrBase,
                                          new ImageSegment("code", mem, AccessMode.ReadWrite));

            Given_Architecture();
            var program = new Program(
                segmap,
                arch.Object,
                new Mock <IPlatform>().Object);
            var sr   = new ScanResults();
            var addr = Address.Ptr32(0x00123400);

            Given_String(mem, addr, "Hello");

            var dsc = new DataScanner(program, sr, new FakeDecompilerEventListener());

            dsc.EnqueueUserGlobalData(addr, StringType.NullTerminated(PrimitiveType.Char), "sHello");
            dsc.ProcessQueue();

            var item = program.ImageMap.Items[addr];

            Assert.AreEqual(6, item.Size);
        }
Beispiel #11
0
        private Task RunScanner(ScanResults results, IPassiveScanner passiveScanner, HttpResponseMessage response)
        {
            var result = passiveScanner.Run(response);

            results.Results.AddOrUpdate(passiveScanner.Name(), result, (key, oldVal) => result);
            return(Task.CompletedTask);
        }
Beispiel #12
0
        public void WriteOutput_ScanResultsMultipleErrors_TwoPatterns_TwoProperties_VerbosityIsVerbose_WritesBannerAndSummaryAndDetails()
        {
            SetOptions(verbosityLevel: VerbosityLevel.Verbose);
            WriteCall[] expectedCalls =
            {
                new WriteCall(AppTitleStart,                     WriteSource.WriteLineOneParam),
                new WriteCall(ErrorCountGeneralStart,            WriteSource.WriteLineOneParam),
                new WriteCall(ErrorVerboseCountStart,            WriteSource.WriteLineTwoParams),
                new WriteCall(ErrorVerbosePropertiesHeaderStart, WriteSource.WriteLineStringOnly),
                new WriteCall(ErrorVerbosePropertyPairStart,     WriteSource.WriteLineTwoParams),
                new WriteCall(ErrorVerbosePropertyPairStart,     WriteSource.WriteLineTwoParams),
                new WriteCall(ErrorVerbosePatternsHeaderStart,   WriteSource.WriteLineStringOnly),
                new WriteCall(ErrorVerbosePatternIndex,          WriteSource.WriteLineOneParam),
                new WriteCall(ErrorVerbosePatternIndex,          WriteSource.WriteLineOneParam),
                new WriteCall(ErrorVerboseSeparatorStart,        WriteSource.WriteLineStringOnly),
                new WriteCall(ErrorVerboseCountStart,            WriteSource.WriteLineTwoParams),
                new WriteCall(ErrorVerbosePropertiesHeaderStart, WriteSource.WriteLineStringOnly),
                new WriteCall(ErrorVerbosePropertyPairStart,     WriteSource.WriteLineTwoParams),
                new WriteCall(ErrorVerbosePropertyPairStart,     WriteSource.WriteLineTwoParams),
                new WriteCall(ErrorVerbosePatternsHeaderStart,   WriteSource.WriteLineStringOnly),
                new WriteCall(ErrorVerbosePatternIndex,          WriteSource.WriteLineOneParam),
                new WriteCall(ErrorVerbosePatternIndex,          WriteSource.WriteLineOneParam),
                new WriteCall(ErrorVerboseSeparatorStart,        WriteSource.WriteLineStringOnly),
                new WriteCall(OutputFileStart,                   WriteSource.WriteLineOneParam),
            };
            TextWriterVerifier textWriterVerifier = new TextWriterVerifier(_writerMock, expectedCalls);
            IOutputGenerator   generator          = new OutputGenerator(_writerMock.Object);
            ScanResults        scanResults        = BuildTestScanResults(errorCount: 2, a11yTestFile: TestA11yTestFile,
                                                                         patternCount: 2, propertyCount: 2);

            generator.WriteOutput(_optionsMock.Object, scanResults, null);

            textWriterVerifier.VerifyAll();
            VerifyAllMocks();
        }
Beispiel #13
0
        public void Execute_NullOutputFileHelper_ThrowsException()
        {
            _scanToolsMock.Setup(x => x.TargetElementLocator).Returns(_targetElementLocatorMock.Object);
            _scanToolsMock.Setup(x => x.Actions).Returns(_actionsMock.Object);
            _scanToolsMock.Setup(x => x.NativeMethods).Returns(_nativeMethodsMock.Object);
            _scanToolsMock.Setup(x => x.ResultsAssembler).Returns(_resultsAssemblerMock.Object);
            _scanToolsMock.Setup(x => x.OutputFileHelper).Returns <IOutputFileHelper>(null);

            _targetElementLocatorMock.Setup(x => x.LocateRootElement(It.IsAny <int>())).Returns(new A11yElement());

            var expectedResults = new ScanResults();

            expectedResults.ErrorCount = 1;
            InitResultsCallback(expectedResults);

            var action = new Action(() => SnapshotCommand.Execute(_minimalConfig, _scanToolsMock.Object));
            var ex     = Assert.ThrowsException <AxeWindowsAutomationException>(action);

            Assert.IsInstanceOfType(ex.InnerException, typeof(ArgumentException));
            Assert.IsTrue(ex.Message.Contains("OutputFileHelper"));

            _scanToolsMock.VerifyAll();
            _nativeMethodsMock.VerifyAll();
            _targetElementLocatorMock.VerifyAll();
            _actionsMock.VerifyAll();
            _resultsAssemblerMock.VerifyAll();
        }
Beispiel #14
0
        public ScanResults GetScannerResultInstance()
        {
            var srs = new ScanResults();

            this.ScanResults = srs;

            return(srs);
        }
Beispiel #15
0
 public void Scan(object sender, EventArgs e)
 {
     _ui.scanning   = true;
     Cursor.Current = Cursors.WaitCursor;
     _items         = new ScanResults(_game.CalculateStatLocations(_process), _process, _game);
     _ui.scanning   = false;
     Cursor.Current = Cursors.Default;
     updateItems();
 }
        public void WriteOutput_ScanResultsWithErrors_VerbosityIsQuiet_IsSilent()
        {
            _optionsMock.Setup(x => x.VerbosityLevel).Returns(VerbosityLevel.Quiet);
            ScanResults scanResults = BuildTestScanResults(errorCount: 1, a11yTestFile: TestA11yTestFile);

            _testSubject.WriteOutput(_optionsMock.Object, scanResults, null);

            VerifyAllMocks();
        }
Beispiel #17
0
        private DataScanner CreateDataScanner(Program program)
        {
            this.program = program;
            var sr = new ScanResults()
            {
                KnownProcedures = new HashSet <Address>(),
            };

            return(new DataScanner(program, sr, eventListener));
        }
Beispiel #18
0
        public void WriteOutput_ScanResultsNoErrors_VerbosityIsQuiet_IsSilent()
        {
            _optionsMock.Setup(x => x.VerbosityLevel).Returns(VerbosityLevel.Quiet);
            IOutputGenerator generator   = new OutputGenerator(_writerMock.Object);
            ScanResults      scanResults = BuildTestScanResults();

            generator.WriteOutput(_optionsMock.Object, scanResults, null);

            VerifyAllMocks();
        }
Beispiel #19
0
 public void Setup()
 {
     this.sr = new ScanResults
     {
         FlatInstructions        = new SortedList <Address, ScanResults.instr>(),
         FlatEdges               = new List <ScanResults.link>(),
         KnownProcedures         = new HashSet <Address>(),
         DirectlyCalledAddresses = new Dictionary <Address, int>(),
     };
 }
        public void AddPath(string path)
        {
            var date = _fileReader.GetLastWriteTimeUtc(path);

            if (!_dateCache.ContainsKey(path) || date <= _dateCache[path])
            {
                _results     = _scanner.ScanCode(_fileReader.ReadAll(path), _results, path);
                _haveChanges = true;
            }
        }
Beispiel #21
0
        private void InitResultsCallback(ScanResults results)
        {
            _resultsAssemblerMock.Setup(x => x.AssembleScanResultsFromElement(It.IsAny <A11yElement>())).Returns(results);

            ScanResults tempResults = null;

            _actionsMock.Setup(x => x.Scan(It.IsAny <A11yElement>(), It.IsAny <ScanActionCallback <ScanResults> >()))
            .Callback <A11yElement, ScanActionCallback <ScanResults> >((e, cb) => tempResults = cb(e, Guid.Empty))
            .Returns(() => tempResults);
        }
Beispiel #22
0
 private void WriteErrorCount(ScanResults scanResults)
 {
     if (scanResults.ErrorCount == 1)
     {
         _writer.WriteLine(DisplayStrings.ScanResultsSingleError);
     }
     else
     {
         _writer.WriteLine(DisplayStrings.ScanResultsMultipleErrorsFormat, scanResults.ErrorCount);
     }
 }
 private void ButtonsOpacityTo0_Completed(object sender, EventArgs e)
 {
     if (State == MyStates.ResultsDisplaying)
     {
         ScanResults.BeginAnimation(Border.HeightProperty, CloseButtonBarMove);
     }
     else if (State == MyStates.IpListDisplaying)
     {
         IpList.BeginAnimation(Border.HeightProperty, CloseIpListButtonBarMove);
     }
 }
 private void WriteErrorCount(ScanResults scanResults)
 {
     if (scanResults.ErrorCount == 1)
     {
         _writer.WriteLine("1 error was found");
     }
     else
     {
         _writer.WriteLine("{0} errors were found", scanResults.ErrorCount);
     }
 }
Beispiel #25
0
 public void Setup()
 {
     this.mr   = new MockRepository();
     this.host = mr.Stub <IRewriterHost>();
     this.sr   = new ScanResults();
     this.sr.FlatInstructions        = new SortedList <Address, ScanResults.instr>();
     this.sr.FlatEdges               = new List <ScanResults.link>();
     this.sr.KnownProcedures         = new HashSet <Address>();
     this.sr.DirectlyCalledAddresses = new Dictionary <Address, int>();
     this.eventListener              = new FakeDecompilerEventListener();
 }
Beispiel #26
0
 public void Setup()
 {
     sr = new ScanResults
     {
         ICFG = new DiGraph <RtlBlock>(),
         DirectlyCalledAddresses = new Dictionary <Address, int>(),
         KnownProcedures         = new HashSet <Address>(),
     };
     this.program    = new Program();
     this.listener   = new FakeDecompilerEventListener();
     this.mpIntBlock = new Dictionary <uint, RtlBlock>();
 }
Beispiel #27
0
        private void WriteVerboseResults(ScanResults scanResults)
        {
            int errorCount = 0;

            foreach (ScanResult scanResult in scanResults.Errors)
            {
                _writer.WriteLine(DisplayStrings.ScanResultDetailHeader, ++errorCount, scanResult.Rule.Description);
                WriteProperties(scanResult);
                WritePatterns(scanResult);
                _writer.WriteLine(DisplayStrings.ScanResultDetailFooter);
            }
        }
        private void WriteVerboseResults(ScanResults scanResults)
        {
            int errorCount = 0;

            foreach (ScanResult scanResult in scanResults.Errors)
            {
                _writer.WriteLine("Error {0}: {1}", ++errorCount, scanResult.Rule.Description);
                WriteProperties(scanResult);
                WritePatterns(scanResult);
                _writer.WriteLine("----------------------------------------------------------------------");
            }
        }
        public List <TestClass> GetTests()
        {
            if (!_haveChanges)
            {
                return(_tests);
            }

            var foundClasses = new List <SqlSchema>();

            foreach (var clazz in
                     _results.FoundClasses.Where(
                         p =>
                         _results.FoundPotentialTests.Any(
                             e => string.Equals(p.Name, e.Name.Schema, StringComparison.OrdinalIgnoreCase))))
            {
                if (foundClasses.All(p => p.Name != clazz.Name))
                {
                    foundClasses.Add(clazz);
                }
            }

            var foundTests =
                _results.FoundPotentialTests.Where(
                    p =>
                    _results.FoundPotentialTests.Any(
                        s => string.Equals(s.Name.Schema, p.Name.Schema, StringComparison.OrdinalIgnoreCase)));

            _tests.Clear();

            foreach (var cls in foundClasses)
            {
                var testClass = new TestClass();
                testClass.Name = cls.Name;
                testClass.Path = cls.Path;

                foreach (var test in foundTests.Where(p => string.Equals(p.Name.Schema, cls.Name, StringComparison.OrdinalIgnoreCase)))
                {
                    testClass.Tests.Add(new Test {
                        Name = test.Name.Object, Path = test.Path, Line = test.StartLine
                    });
                }

                if (testClass.Tests.Count > 0)
                {
                    _tests.Add(testClass);
                }
            }

            _results     = new ScanResults();
            _haveChanges = false;

            return(_tests);
        }
Beispiel #30
0
 public void Setup()
 {
     this.host = new Mock <IRewriterHost>();
     this.sr   = new ScanResults
     {
         FlatInstructions        = new Dictionary <ulong, ScanResults.instr>(),
         FlatEdges               = new List <ScanResults.link>(),
         KnownProcedures         = new HashSet <Address>(),
         DirectlyCalledAddresses = new Dictionary <Address, int>()
     };
     this.eventListener = new FakeDecompilerEventListener();
 }
 //将数据转换为扫描结果的struct
 public static ScanResults[] getScanResults(LogResult log)
 {
     ScanResults[] scanResultsArray = new ScanResults[log.scanResultList.Count];
     for (int i = 0; i < scanResultsArray.Length; i++)
     {
         //先按照空格把数据分割开
         String[] result = log.scanResultList[i].Split(' ');
         if (result.Length == 4)
         {
             scanResultsArray[i].BSSID = result[0].Substring(result[0].IndexOf('=')+1);
             scanResultsArray[i].SSID = result[1].Substring(result[1].IndexOf('=')+1);
             scanResultsArray[i].freq = Convert.ToInt32(result[2].Substring(result[2].IndexOf('=') + 1));
             scanResultsArray[i].level = result[3].Substring(result[3].IndexOf('=')+1);
         }
     }
     return scanResultsArray;
 }