From 05fae1b29fefda9adb2e30e81dfde336fe49338e Mon Sep 17 00:00:00 2001 From: Minh Nguyen Cong Date: Thu, 18 Jan 2024 12:37:27 +0100 Subject: [PATCH 1/2] fix: Update exception file get download URL --- boxsdk/object/file.py | 6 ++++++ test/unit/object/test_file.py | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/boxsdk/object/file.py b/boxsdk/object/file.py index 53fd17e5..f8c62d40 100644 --- a/boxsdk/object/file.py +++ b/boxsdk/object/file.py @@ -2,6 +2,7 @@ import os from datetime import datetime from typing import TYPE_CHECKING, Optional, Tuple, Union, IO, Iterable, List, Any +from boxsdk.exception import BoxException from boxsdk.util.datetime_formatter import normalize_date_to_rfc3339_format from .item import Item @@ -177,6 +178,11 @@ def get_download_url(self, file_version: Optional['FileVersion'] = None) -> str: expect_json_response=False, allow_redirects=False, ) + if box_response.status_code != 302: + raise BoxException('Unexpected status code {0} when getting download url'.format(box_response.status_code)) + if 'location' not in box_response.headers: + raise BoxException('Download URL is not present in the response.') + return box_response.headers['location'] @api_call diff --git a/test/unit/object/test_file.py b/test/unit/object/test_file.py index 13b56f5d..4449e496 100644 --- a/test/unit/object/test_file.py +++ b/test/unit/object/test_file.py @@ -8,7 +8,7 @@ from pytest_lazyfixture import lazy_fixture from boxsdk.config import API -from boxsdk.exception import BoxAPIException +from boxsdk.exception import BoxAPIException, BoxException from boxsdk.object.comment import Comment from boxsdk.object.file import File from boxsdk.object.file_version import FileVersion @@ -237,6 +237,20 @@ def test_get_download_url(test_file, mock_box_session): assert url == download_url +def test_get_download_url_failed(test_file, mock_box_session): + expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}/content' + mock_box_session.get.return_value.headers = {} + with pytest.raises(BoxException) as exc_info: + test_file.get_download_url() + assert exc_info.value.args[0] == 'Download URL is not present in the response.' + mock_box_session.get.assert_called_once_with( + expected_url, + params=None, + expect_json_response=False, + allow_redirects=False + ) + + def test_get_download_url_file_version(test_file, test_file_version, mock_box_session): expected_url = f'{API.BASE_API_URL}/files/{test_file.object_id}/content' download_url = 'https://dl.boxcloud.com/sdjhfgksdjfgshdbg' From 1e1e34255082fa46fc9eab4e87ee8247d887956c Mon Sep 17 00:00:00 2001 From: Minh Nguyen Cong Date: Thu, 18 Jan 2024 12:43:40 +0100 Subject: [PATCH 2/2] fix: Update exception file get download URL --- boxsdk/object/file.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/boxsdk/object/file.py b/boxsdk/object/file.py index f8c62d40..17eda2cb 100644 --- a/boxsdk/object/file.py +++ b/boxsdk/object/file.py @@ -178,8 +178,6 @@ def get_download_url(self, file_version: Optional['FileVersion'] = None) -> str: expect_json_response=False, allow_redirects=False, ) - if box_response.status_code != 302: - raise BoxException('Unexpected status code {0} when getting download url'.format(box_response.status_code)) if 'location' not in box_response.headers: raise BoxException('Download URL is not present in the response.')