Beispiel #1
0
    def run(self):
        method = self.http_method
        url = self.full_url_path
        logger.info("Making request %s %s", method, url)

        response = requests.request(
            method,
            url,
            headers=self.headers,
            params=self.params,
            json=self.body,
            allow_redirects=False,
        )

        self.endpoint.vars.update(
            self.spec.get(VARS_KEY, {}),
            extras={"response": response},
            preevaluate=True,
        )

        tests_results = self._run_tests()
        hide_sensitive_info(response)

        return {
            "response": response,
            "tests_results": tests_results,
            "no_failure": all(
                [
                    test_result["status"] == TestStatus.PASSED
                    for test_result in tests_results
                ]
            ),
        }
Beispiel #2
0
    def run(self):
        """Make HTTP requests and generating test results for the given URLs.

        Returns:
            [dict]: HTTP response and test results with request node name,
            to be used by the report template.

        """
        time.sleep(self.delay / 1000)

        method = self.http_method
        url = self.full_url_path
        console.print(f"\n- Making request {method} {url}", highlight=False)

        self.endpoint.spec_vars.update(
            self.spec.get(VARS_KEY, {}),
            extras=dict(self.endpoint.spec_vars),
            filter_responses=True,
        )

        session = session_with_retry(self.retry)
        response = session.request(
            method,
            url,
            headers=self.headers,
            params=self.params,
            json=self.body,
            allow_redirects=False,
            **self.options,
        )

        extras = dict(self.endpoint.spec_vars)
        extras["response"] = response

        self.endpoint.spec_vars.update(
            self.spec.get(VARS_KEY, {}),
            extras=extras,
        )

        tests_results = self._run_tests()
        hide_sensitive_info(response)

        del self.endpoint.spec_vars["response"]

        result = {
            "response":
            response,
            "tests_results":
            tests_results,
            "no_failure":
            all(test_result["status"] == TestStatus.PASSED
                for test_result in tests_results),
            "request_node_name":
            self.name,
        }

        if not settings["no_report"]:
            write_result(result)

        return result
Beispiel #3
0
    def test_calls__hide(
        self,
        settings,
        request_settings,
        response_settings,
        mocker,
        response,
        mock__hide,
    ):
        mocker.patch("scanapi.hide_utils.settings", settings)
        hide_sensitive_info(response)

        calls = [
            mocker.call(response.request, request_settings),
            mocker.call(response, response_settings),
        ]

        mock__hide.assert_has_calls(calls)