예제 #1
0
 def test_reply_mode_off_when_script_execution_id_not_set_via_env_var(self):
     with mock.patch(
             'cts_core.commons.replay_controller.ReplayController._read_request_ids_from_database'
     ) as read_ids:
         controller_class = ReplayController().__class__()
         controller_class.initialize()
         self.assertFalse(controller_class.replay_mode_on())
예제 #2
0
    def _do_request(self, kwargs, url, http_method):
        if ReplayController.replay_mode_on():
            response = ReplayController.request(http_method, url, **kwargs)
        else:
            response = None

        if response is None:
            requests_method = {
                HttpMethods.GET: requests.get,
                HttpMethods.PATCH: requests.patch,
                HttpMethods.POST: requests.post,
                HttpMethods.DELETE: requests.delete
            }[http_method]

            try:
                self._suppress_urllib3_error()

                response = requests_method(url, **kwargs)
            except OpenSSL.SSL.Error as ose:
                cts_error("There is a problem with CertFile or KeyFile: {err}",
                          err=' '.join(ose.message[0]))
            except requests.RequestException as err:
                cts_error("{method} {url:id} Error {err:exception}",
                          method=http_method,
                          url=url,
                          err=err)
                return None

        return response
예제 #3
0
 def test_reply_mode_on_when_correct_script_execution_id(self):
     with mock.patch(
             'cts_core.commons.replay_controller.ReplayController._read_request_ids_from_database'
     ) as read_ids:
         controller_class = ReplayController().__class__()
         read_ids.return_value = [22, 33]
         controller_class.initialize()
         self.assertTrue(controller_class.replay_mode_on())
예제 #4
0
 def test_reply_mode_off_when_list_of_registered_requests_is_empty(self):
     with mock.patch(
             'cts_core.commons.replay_controller.ReplayController._read_request_ids_from_database'
     ) as read_ids:
         controller_class = ReplayController().__class__()
         read_ids.return_value = []  #empty list
         controller_class.initialize()
         self.assertFalse(controller_class.replay_mode_on())
예제 #5
0
    def test_retrieve_request_from_database(self):
        with mock.patch('cts_core.commons.replay_controller.ReplayController._read_request_ids_from_database') as read_ids:
            controller_class = ReplayController().__class__()
            read_ids.return_value = [22,33]
            controller_class.initialize()

            with mock.patch('cts_framework.db.dao.http_request_dao.HttpRequestDAO.retrieve') as retrieve:
                retrieve.return_value = ('_method', 'url', '{"anything":"something"}', '_response', '_status_code')
                self.assertEqual('_response', controller_class.request("http_method", "url", anything='something'))
                retrieve.assert_called_with(22)
예제 #6
0
    def before_run(self):
        digest = DirDigest(Constants.DIR_HOME_CTS_TESTS, '.py', DirDigest.LABEL_TESTS)
        if not digest.is_valid() and not getenv('CTS_SKIP', None):
            cts_error("Tests located in {dir} are corrupted or has been tampered. Expected: {expected}, "
                      "Is: {current}", dir=Constants.DIR_HOME_CTS_TESTS, expected=digest.official_digest,
                      current=digest.digest)
            print "MESSAGE::{count} test scripts have been found in {dir}".format(count=len(digest),
                                                                                  dir=Constants.DIR_HOME_CTS_TESTS)

            digest.report_differences()

        self._parse_ignore_types()
        self._parse_map_types()
        self._parse_service_types_override()
        ReplayController.initialize()
예제 #7
0
    def before_run(self):
        digest = DirDigest(Constants.DIR_HOME_CTS_TESTS, '.py',
                           DirDigest.LABEL_TESTS)
        if not digest.is_valid() and not getenv('CTS_SKIP', None):
            cts_error(
                "Tests located in {dir} are corrupted or has been tampered. Expected: {expected}, "
                "Is: {current}",
                dir=Constants.DIR_HOME_CTS_TESTS,
                expected=digest.official_digest,
                current=digest.digest)
            print "MESSAGE::{count} test scripts have been found in {dir}".format(
                count=len(digest), dir=Constants.DIR_HOME_CTS_TESTS)

            digest.report_differences()

        self._parse_ignore_types()
        self._parse_map_types()
        self._parse_service_types_override()
        ReplayController.initialize()
예제 #8
0
    def test_retrieve_request_from_database(self):
        with mock.patch(
                'cts_core.commons.replay_controller.ReplayController._read_request_ids_from_database'
        ) as read_ids:
            controller_class = ReplayController().__class__()
            read_ids.return_value = [22, 33]
            controller_class.initialize()

            with mock.patch(
                    'cts_framework.db.dao.http_request_dao.HttpRequestDAO.retrieve'
            ) as retrieve:
                retrieve.return_value = ('_method', 'url',
                                         '{"anything":"something"}',
                                         '_response', '_status_code')
                self.assertEqual(
                    '_response',
                    controller_class.request("http_method",
                                             "url",
                                             anything='something'))
                retrieve.assert_called_with(22)
예제 #9
0
    def _do_request(self, kwargs, url, http_method):
        response = None
        if ReplayController.replay_mode_on():
            response = ReplayController.request(http_method, url, **kwargs)

        if response is None:
            requests_method = {HttpMethods.GET: requests.get,
                               HttpMethods.PATCH: requests.patch,
                               HttpMethods.POST: requests.post,
                               HttpMethods.DELETE: requests.delete}[http_method]

            try:
                self._suppress_urllib3_error()
                response = requests_method(url, **kwargs)
            except OpenSSL.SSL.Error as ose:
                cts_error("There is a problem with CertFile or KeyFile: {err}",
                          err=' '.join(ose.message[0]))
                return None, ReturnCodes.INVALID_CERTS
            except requests.HTTPError as err:
                cts_error("{method} {url:id} Error {err:exception}",
                          method=http_method, url=url, err=err)
                return None, ReturnCodes.METHOD_NOT_ALLOWED
            except requests.TooManyRedirects as err:
                cts_error("{method} {url:id} Error {err:exception}",
                          method=http_method, url=url, err=err)
                return None, ReturnCodes.INVALID_FORWARDING
            except requests.Timeout as err:
                cts_error("{method} {url:id} Error {err:exception}",
                          method=http_method, url=url, err=err)
                return None, ReturnCodes.TIMEOUT
            except requests.ConnectionError as err:
                cts_error("{method} {url:id} Error {err:exception}",
                          method=http_method, url=url, err=err)
                return None, ReturnCodes.NOT_FOUND
            except requests.RequestException as err:
                cts_error("{method} {url:id} Error {err:exception}",
                          method=http_method, url=url, err=err)
                return None, ReturnCodes.BAD_REQUEST
        return response, response.status_code
예제 #10
0
    def _do_request(self, kwargs, url, http_method):
        if ReplayController.replay_mode_on():
            response = ReplayController.request(http_method, url, **kwargs)
        else:
            response = None

        if response is None:
            requests_method = {HttpMethods.GET: requests.get, HttpMethods.PATCH: requests.patch,
                               HttpMethods.POST: requests.post,
                               HttpMethods.DELETE: requests.delete}[http_method]

            try:
                self._suppress_urllib3_error()

                response = requests_method(url, **kwargs)
            except OpenSSL.SSL.Error as ose:
                cts_error("There is a problem with CertFile or KeyFile: {err}", err=' '.join(ose.message[0]))
            except requests.RequestException as err:
                cts_error("{method} {url:id} Error {err:exception}",
                          method=http_method, url=url, err=err)
                return None

        return response
예제 #11
0
    def test_request_returns_none_when_replay_mode_is_off(self):
        controller_class = ReplayController().__class__()
        controller_class.initialize()

        self.assertIsNone(controller_class.request("http_method", "url"))
예제 #12
0
 def test_reply_mode_off_when_script_execution_id_not_set_via_env_var(self):
     with mock.patch('cts_core.commons.replay_controller.ReplayController._read_request_ids_from_database') as read_ids:
         controller_class = ReplayController().__class__()
         controller_class.initialize()
         self.assertFalse(controller_class.replay_mode_on())
예제 #13
0
    def test_request_returns_none_when_replay_mode_is_off(self):
        controller_class = ReplayController().__class__()
        controller_class.initialize()

        self.assertIsNone(controller_class.request("http_method", "url"))
예제 #14
0
 def test_reply_mode_on_when_correct_script_execution_id(self):
     with mock.patch('cts_core.commons.replay_controller.ReplayController._read_request_ids_from_database') as read_ids:
         controller_class = ReplayController().__class__()
         read_ids.return_value = [22,33]
         controller_class.initialize()
         self.assertTrue(controller_class.replay_mode_on())
예제 #15
0
 def test_reply_mode_off_when_list_of_registered_requests_is_empty(self):
     with mock.patch('cts_core.commons.replay_controller.ReplayController._read_request_ids_from_database') as read_ids:
         controller_class = ReplayController().__class__()
         read_ids.return_value = [] #empty list
         controller_class.initialize()
         self.assertFalse(controller_class.replay_mode_on())