def testCollectsChromeInternetExplorerAndSafariArtifacts(self): with mock.patch.object(collectors, "ArtifactCollectorFlow", MockArtifactCollectorFlow): flow_id, results, progress = self._RunCollectBrowserHistory( browsers=[ webhistory.Browser.CHROME, webhistory.Browser. INTERNET_EXPLORER, webhistory.Browser.SAFARI ]) # MockArtifactCollectorFlow will produce a single stat entry with a # pathspec /home/foo/<artifact name> for each artifact scheduled for # collection. Hence, by looking at results we can make sure that # all artifacts were scheduled for collection. pathspecs = [r.stat_entry.pathspec for r in results] self.assertCountEqual( ["ChromeHistory", "InternetExplorerHistory", "SafariHistory"], [p.Basename() for p in pathspecs]) # Check that tags for all browsers are present in the results set. self.assertCountEqual( flow_test_lib.GetFlowResultsByTag(self.client_id, flow_id).keys(), ["CHROME", "INTERNET_EXPLORER", "SAFARI"]) self.assertLen(progress.browsers, 3) self.assertCountEqual([ webhistory.Browser.CHROME, webhistory.Browser.INTERNET_EXPLORER, webhistory.Browser.SAFARI ], [bp.browser for bp in progress.browsers]) for bp in progress.browsers: self.assertEqual(bp.status, webhistory.BrowserProgress.Status.SUCCESS) self.assertEqual(bp.num_collected_files, 1)
def testCollectsChromeArtifacts(self): with mock.patch.object(collectors, "ArtifactCollectorFlow", MockArtifactCollectorFlow): flow_id, results, progress = self._RunCollectBrowserHistory( browsers=[webhistory.Browser.CHROME]) self.assertLen(results, 1) self.assertEqual(results[0].browser, webhistory.Browser.CHROME) self.assertEqual(["/home/foo/ChromeHistory"], [r.stat_entry.pathspec.path for r in results]) self.assertEqual( list(flow_test_lib.GetFlowResultsByTag(self.client_id, flow_id).keys()), ["CHROME"]) self.assertLen(progress.browsers, 1) self.assertEqual(progress.browsers[0].browser, webhistory.Browser.CHROME) self.assertEqual(progress.browsers[0].status, webhistory.BrowserProgress.Status.SUCCESS) self.assertEqual(progress.browsers[0].num_collected_files, 1)
def testRunGrrClientActionArtifactSplit(self): """Test that artifacts get split into separate collections.""" client_id = self.SetupClient(0, system="Linux") with utils.Stubber(psutil, "process_iter", ProcessIter): client_mock = action_mocks.ActionMock(standard.ListProcesses) coll1 = rdf_artifacts.ArtifactSource( type=rdf_artifacts.ArtifactSource.SourceType.GRR_CLIENT_ACTION, attributes={"client_action": standard.ListProcesses.__name__}) self.fakeartifact.sources.append(coll1) self.fakeartifact2.sources.append(coll1) artifact_list = ["FakeArtifact", "FakeArtifact2"] session_id = flow_test_lib.TestFlowHelper( collectors.ArtifactCollectorFlow.__name__, client_mock, artifact_list=artifact_list, token=self.token, client_id=client_id, split_output_by_artifact=True) results_by_tag = flow_test_lib.GetFlowResultsByTag(client_id, session_id) self.assertCountEqual(results_by_tag.keys(), ["artifact:FakeArtifact", "artifact:FakeArtifact2"])