コード例 #1
0
    def test_check_request_fail_request(self, requests_mock,
                                        decode_and_save_data_mock, retry_mock,
                                        get_wt_mock):
        get_wt_mock.return_value = datetime(2007, 1, 2, 13, 30)
        retry_mock.side_effect = Retry

        request_data = "aGVsbG8="
        supplier = {
            "tender_id": "f" * 32,
            "award_id": "c" * 32,
        }
        request_time = TIMEZONE.localize(datetime(2019, 3, 29, 15, 47))
        requests_mock.post.side_effect = requests.exceptions.ConnectionError()

        with patch("fiscal_bot.tasks.working_days_count_since"
                   ) as working_days_count_since_mock:
            working_days_count_since_mock.return_value = 0
            with self.assertRaises(Retry):
                check_for_response_file(request_data=request_data,
                                        supplier=supplier,
                                        request_time=request_time,
                                        requests_reties=0)
        working_days_count_since_mock.assert_called_once_with(
            request_time, working_weekends_enabled=True)
        retry_mock.assert_called_once_with(exc=requests_mock.post.side_effect)
        requests_mock.post.assert_called_once_with(
            '{}/cabinet/public/api/exchange/kvt_by_id'.format(FISCAL_API_HOST),
            data=request_data,
            timeout=(CONNECT_TIMEOUT, READ_TIMEOUT),
            proxies=FISCAL_API_PROXIES,
        )
        decode_and_save_data_mock.delay.assert_not_called()
コード例 #2
0
    def test_check_request_fail_status(self, requests_mock,
                                       decode_and_save_data_mock, retry_mock,
                                       get_wt_mock):
        get_wt_mock.return_value = datetime(2007, 1, 2, 13, 30)
        retry_mock.side_effect = Retry

        request_data = "aGVsbG8="
        supplier = {
            "tender_id": "f" * 32,
            "award_id": "c" * 32,
        }

        requests_mock.post.return_value = Mock(status_code=502,
                                               text="Bad Gateway",
                                               headers={"Retry-After": 10})

        with patch("fiscal_bot.tasks.working_days_count_since",
                   lambda *_, **k: 0):
            with self.assertRaises(Retry):
                check_for_response_file(request_data=request_data,
                                        supplier=supplier,
                                        request_time=TIMEZONE.localize(
                                            datetime(2019, 3, 29, 15, 47)),
                                        requests_reties=0)

        retry_mock.assert_called_once_with(countdown=10)
        requests_mock.post.assert_called_once_with(
            '{}/cabinet/public/api/exchange/kvt_by_id'.format(FISCAL_API_HOST),
            data=request_data,
            timeout=(CONNECT_TIMEOUT, READ_TIMEOUT),
            proxies=FISCAL_API_PROXIES,
        )
        decode_and_save_data_mock.delay.assert_not_called()
コード例 #3
0
    def test_check_on_3rd_wd_3(self, requests_mock,
                               prepare_receipt_request_mock,
                               decode_and_save_data_mock):
        request_data = "aGVsbG8="
        supplier = {
            "tender_id": "f" * 32,
            "award_id": "c" * 32,
        }

        with patch("fiscal_bot.tasks.working_days_count_since",
                   lambda *_, **k: 3):
            check_for_response_file(request_data=request_data,
                                    supplier=supplier,
                                    request_time=TIMEZONE.localize(
                                        datetime(2019, 3, 29, 15, 47)),
                                    requests_reties=REQUEST_MAX_RETRIES)

        requests_mock.post.assert_not_called()
        decode_and_save_data_mock.assert_not_called()
        prepare_receipt_request_mock.delay.assert_not_called()
コード例 #4
0
    def test_check_request_success(self, requests_mock,
                                   decode_and_save_data_mock):
        request_data = "aGVsbG8="
        supplier = {
            "tender_id": "f" * 32,
            "award_id": "c" * 32,
        }

        requests_mock.post.return_value = Mock(
            status_code=200,
            json=lambda: self.response,
        )

        with patch("fiscal_bot.tasks.working_days_count_since",
                   lambda *_, **k: 0):
            check_for_response_file(request_data=request_data,
                                    supplier=supplier,
                                    request_time=TIMEZONE.localize(
                                        datetime(2019, 3, 29, 15, 47)),
                                    requests_reties=0)

        self.assertEqual(requests_mock.post.call_args_list, [
            call(
                '{}/cabinet/public/api/exchange/kvt_by_id'.format(
                    FISCAL_API_HOST),
                data=request_data,
                timeout=(CONNECT_TIMEOUT, READ_TIMEOUT),
                proxies=FISCAL_API_PROXIES,
            )
        ])

        self.assertEqual(decode_and_save_data_mock.delay.call_args_list, [
            call(
                self.response["kvtList"][-1]["kvtFname"],
                self.response["kvtList"][-1]["kvtBase64"],
                supplier["tender_id"],
                supplier["award_id"],
            )
        ])