Ejemplo n.º 1
0
  def testDisplaysDownloadButtonAndArgs(self):
    flow_args = rdf_read_low_level.ReadLowLevelArgs(
        path="/path", length="789", offset="987")

    flow_id = flow_test_lib.StartFlow(
        read_low_level.ReadLowLevel,
        creator=self.test_username,
        client_id=self.client_id,
        flow_args=flow_args)
    print("flow_id", flow_id)

    self.Open(f"/v2/clients/{self.client_id}")

    self.WaitUntil(self.IsElementPresent,
                   f"css=.flow-id span:contains('{flow_id}')")

    self.ScrollToBottom()
    self.WaitUntil(self.IsElementPresent,
                   "css=result-accordion .title:contains('/path')")
    self.WaitUntil(self.IsElementPresent,
                   "css=result-accordion .title:contains('789')")
    self.WaitUntil(self.IsElementPresent,
                   "css=result-accordion .title:contains('987')")

    self.WaitUntilNot(self.IsElementPresent,
                      "css=a[mat-stroked-button]:contains('Download')")
    flow_test_lib.MarkFlowAsFinished(client_id=self.client_id, flow_id=flow_id)
    with flow_test_lib.FlowResultMetadataOverride(
        read_low_level.ReadLowLevel,
        rdf_flow_objects.FlowResultMetadata(
            is_metadata_set=True,
            num_results_per_type_tag=[
                rdf_flow_objects.FlowResultCount(
                    type=rdf_read_low_level.ReadLowLevelFlowResult.__name__,
                    count=1)
            ])):
      self.WaitUntil(self.IsElementPresent,
                     "css=a[mat-stroked-button]:contains('Download')")

    self.WaitUntil(
        self.IsElementPresent,
        f"css=a[href='/api/v2/clients/{self.client_id}/vfs-blob/temp/"
        f"{self.client_id}_{flow_id}_path']")

    self.Click("css=result-accordion .title:contains('/path')")

    self.WaitUntil(self.IsElementPresent,
                   "css=result-accordion:contains('Path: /path')")
    self.WaitUntil(self.IsElementPresent,
                   "css=result-accordion:contains('Length: 789')")
    self.WaitUntil(self.IsElementPresent,
                   "css=result-accordion:contains('Offset: 987')")
Ejemplo n.º 2
0
    def testShowsDownloadButtonOnFlowCompletion(self):
        flow_args = webhistory.CollectBrowserHistoryArgs(
            browsers=[webhistory.CollectBrowserHistoryArgs.Browser.CHROME])
        flow_id = flow_test_lib.StartFlow(webhistory.CollectBrowserHistory,
                                          creator=self.test_username,
                                          client_id=self.client_id,
                                          flow_args=flow_args)

        with flow_test_lib.FlowProgressOverride(
                webhistory.CollectBrowserHistory,
                webhistory.CollectBrowserHistoryProgress(browsers=[
                    webhistory.BrowserProgress(
                        browser=webhistory.Browser.CHROME,
                        status=webhistory.BrowserProgress.Status.IN_PROGRESS,
                        num_collected_files=0,
                    ),
                ])):
            self.Open(f"/v2/clients/{self.client_id}")
            # Make sure that the flow panel is already displayed...
            self.WaitUntil(self.IsElementPresent,
                           "css=.flow-title:contains('Browser History')")
            # ...and then check for the presence of the 'Download all' button.
            self.WaitUntilNot(
                self.IsElementPresent,
                "css=a[mat-stroked-button]:contains('Download all')")

        flow_test_lib.MarkFlowAsFinished(self.client_id, flow_id)

        with flow_test_lib.FlowProgressOverride(
                webhistory.CollectBrowserHistory,
                webhistory.CollectBrowserHistoryProgress(browsers=[
                    webhistory.BrowserProgress(
                        browser=webhistory.Browser.CHROME,
                        status=webhistory.BrowserProgress.Status.IN_PROGRESS,
                        num_collected_files=1,
                    ),
                ])):
            with flow_test_lib.FlowResultMetadataOverride(
                    webhistory.CollectBrowserHistory,
                    rdf_flow_objects.FlowResultMetadata(
                        is_metadata_set=True,
                        num_results_per_type_tag=[
                            rdf_flow_objects.FlowResultCount(
                                type=webhistory.CollectBrowserHistoryResult.
                                __name__,
                                count=1)
                        ])):
                # The flow details view should get updated automatically.
                self.WaitUntil(
                    self.IsElementPresent,
                    "css=a[mat-stroked-button]:contains('Download')")
Ejemplo n.º 3
0
    def testShowsDownloadButtonOnFlowCompletion(self):
        flow_args = webhistory.CollectBrowserHistoryArgs(
            browsers=[webhistory.CollectBrowserHistoryArgs.Browser.CHROME])
        flow_id = flow_test_lib.StartFlow(webhistory.CollectBrowserHistory,
                                          creator=self.token.username,
                                          client_id=self.client_id,
                                          flow_args=flow_args)

        with flow_test_lib.FlowProgressOverride(
                webhistory.CollectBrowserHistory,
                webhistory.CollectBrowserHistoryProgress(browsers=[
                    webhistory.BrowserProgress(
                        browser=webhistory.Browser.CHROME,
                        status=webhistory.BrowserProgress.Status.IN_PROGRESS,
                        num_collected_files=0,
                    ),
                ])):
            self.Open(f"/v2/clients/{self.client_id}")
            # Make sure that the flow panel is already displayed...
            self.WaitUntil(self.IsElementPresent,
                           "css=.flow-title:contains('Browser History')")
            # ...and then check for the presence of the 'Download all' button.
            self.WaitUntilNot(self.IsElementPresent,
                              "css=button:contains('Download all')")

        flow_test_lib.MarkFlowAsFinished(self.client_id, flow_id)

        with flow_test_lib.FlowProgressOverride(
                webhistory.CollectBrowserHistory,
                webhistory.CollectBrowserHistoryProgress(browsers=[
                    webhistory.BrowserProgress(
                        browser=webhistory.Browser.CHROME,
                        status=webhistory.BrowserProgress.Status.IN_PROGRESS,
                        num_collected_files=1,
                    ),
                ])):
            # The flow details view should get updated automatically.
            self.WaitUntil(self.IsElementPresent,
                           "css=button:contains('Download all')")
Ejemplo n.º 4
0
    def testDownloadButtonFlowFinished(self):
        flow_args = rdf_file_finder.CollectFilesByKnownPathArgs(
            paths=["/file0"])
        flow_id = flow_test_lib.StartFlow(file.CollectFilesByKnownPath,
                                          creator=self.test_username,
                                          client_id=self.client_id,
                                          flow_args=flow_args)

        flow_test_lib.MarkFlowAsFinished(self.client_id, flow_id)

        with flow_test_lib.FlowResultMetadataOverride(
                file.CollectFilesByKnownPath,
                rdf_flow_objects.FlowResultMetadata(
                    is_metadata_set=True,
                    num_results_per_type_tag=[
                        rdf_flow_objects.FlowResultCount(
                            type=rdf_file_finder.CollectFilesByKnownPathResult.
                            __name__,
                            count=1)
                    ])):
            self.Open(f"/v2/clients/{self.client_id}")
            self.WaitUntil(self.IsElementPresent,
                           "css=a[mat-stroked-button]:contains('Download')")
Ejemplo n.º 5
0
    def testCorrectlyDisplaysDownloadButtonOnSuccess(self):
        flow_args = rdf_file_finder.CollectSingleFileArgs(path="/etc/hosts")
        flow_id = flow_test_lib.StartFlow(file.CollectSingleFile,
                                          creator=self.test_username,
                                          client_id=self.client_id,
                                          flow_args=flow_args)

        self.Open(f"/v2/clients/{self.client_id}")
        self.WaitUntil(
            self.IsElementPresent,
            "css=collect-single-file-details .requested-path:contains('/etc/hosts')"
        )
        self.WaitUntilNot(self.IsElementPresent,
                          "css=a[mat-stroked-button]:contains('Download')")

        flow_test_lib.MarkFlowAsFinished(self.client_id, flow_id)

        with flow_test_lib.FlowProgressOverride(
                file.CollectSingleFile,
                rdf_file_finder.CollectSingleFileProgress(
                    status=rdf_file_finder.CollectSingleFileProgress.Status.
                    COLLECTED,
                    result=self._GenSampleResult())):
            with flow_test_lib.FlowResultMetadataOverride(
                    file.CollectSingleFile,
                    rdf_flow_objects.FlowResultMetadata(
                        is_metadata_set=True,
                        num_results_per_type_tag=[
                            rdf_flow_objects.FlowResultCount(
                                type=rdf_file_finder.CollectSingleFileResult.
                                __name__,
                                count=1)
                        ])):
                self.WaitUntil(
                    self.IsElementPresent,
                    "css=a[mat-stroked-button]:contains('Download')")