Skip to content

Commit 378318f

Browse files
committed
add get response status codes
1 parent 1708997 commit 378318f

File tree

2 files changed

+66
-1
lines changed

2 files changed

+66
-1
lines changed

src/msgraph_core/requests/batch_response_content.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def get_response_stream_by_id(self, request_id: str) -> Optional[BytesIO]:
6464
:param request_id: The request ID of the response to get
6565
:type request_id: str
6666
:return: The response Body as a stream
67-
:rtype: io.BytesIO
67+
:rtype: BytesIO
6868
"""
6969
response_item = self.get_response_by_id(request_id)
7070
if response_item is None or response_item.body is None:
@@ -74,6 +74,22 @@ def get_response_stream_by_id(self, request_id: str) -> Optional[BytesIO]:
7474
return response_item.body
7575
return BytesIO(response_item.body)
7676

77+
def get_response_status_codes(self) -> Dict[str, int]:
78+
"""
79+
Go through responses and for each, append {'request-id': status_code} to a dictionary.
80+
:return: A dictionary with request_id as keys and status_code as values.
81+
:rtype: dict
82+
"""
83+
status_codes: Dict[str, int] = {}
84+
if self._responses is None:
85+
return status_codes
86+
87+
for request_id, response_item in self._responses.items():
88+
if response_item is not None and response_item.status is not None:
89+
status_codes[request_id] = response_item.status
90+
91+
return status_codes
92+
7793
def response_body(self, request_id: str, type: Type[T]) -> Optional[T]:
7894
"""
7995
Get the body of a response by its request ID from the collection

tests/requests/test_batch_response_content.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,55 @@ def test_response_method(batch_response_content):
2929
assert batch_response_content.get_response_by_id("12345") == response_item
3030

3131

32+
def test_get_response_stream_by_id_none(batch_response_content):
33+
batch_response_content.get_response_by_id = Mock(return_value=None)
34+
result = batch_response_content.get_response_stream_by_id('1')
35+
assert result is None
36+
37+
38+
def test_get_response_stream_by_id_body_none(batch_response_content):
39+
batch_response_content.get_response_by_id = Mock(return_value=Mock(body=None))
40+
result = batch_response_content.get_response_stream_by_id('1')
41+
assert result is None
42+
43+
44+
def test_get_response_stream_by_id_bytesio(batch_response_content):
45+
batch_response_content.get_response_by_id = Mock(
46+
return_value=Mock(body=BytesIO(b'Hello, world!'))
47+
)
48+
result = batch_response_content.get_response_stream_by_id('2')
49+
assert isinstance(result, BytesIO)
50+
assert result.read() == b'Hello, world!'
51+
52+
53+
def test_get_response_stream_by_id_bytes(batch_response_content):
54+
batch_response_content.get_response_by_id = Mock(return_value=Mock(body=b'Hello, world!'))
55+
result = batch_response_content.get_response_stream_by_id('1')
56+
assert isinstance(result, BytesIO)
57+
assert result.read() == b'Hello, world!'
58+
59+
60+
def test_get_response_status_codes_none(batch_response_content):
61+
batch_response_content._responses = None
62+
result = batch_response_content.get_response_status_codes()
63+
assert result == {}
64+
65+
66+
def test_get_response_status_codes(batch_response_content):
67+
batch_response_content._responses = {
68+
'1': Mock(status=200),
69+
'2': Mock(status=404),
70+
'3': Mock(status=500),
71+
}
72+
result = batch_response_content.get_response_status_codes()
73+
expected = {
74+
'1': 200,
75+
'2': 404,
76+
'3': 500,
77+
}
78+
assert result == expected
79+
80+
3281
def test_response_body_method(batch_response_content):
3382
response_item = Mock(spec=BatchResponseItem)
3483
response_item.request_id = "12345"

0 commit comments

Comments
 (0)