1
- from common import get_value_from_path
1
+ from common import get_value_from_path , is_request_performed , decode_retry_after_header
2
+ from sharepoint_constants import SharePointConstants
2
3
import pytest
3
4
4
5
6
+ class MockResponse :
7
+ def __init__ (self , status_code , headers ):
8
+ self .status_code = status_code
9
+ self .headers = headers
10
+
11
+
5
12
class TestCommonMethods :
6
13
def setup_class (self ):
7
14
self .dictionary_to_search = {
@@ -15,6 +22,14 @@ def setup_class(self):
15
22
self .ok_path_1 = ["a" , "b" , "c" ]
16
23
self .ok_path_2 = ["a" , "d" ]
17
24
self .ko_path = ["a" , "c" ]
25
+ self .mock_response_none = None
26
+ self .mock_response_http_200 = MockResponse (200 , {"Retry-After" : "1" })
27
+ self .mock_response_http_429_digit_1s = MockResponse (429 , {"Retry-After" : "1" })
28
+ self .mock_response_http_429_no_header = MockResponse (429 , {})
29
+ self .mock_response_http_503_digit_1s = MockResponse (503 , {"Retry-After" : "1" })
30
+ self .mock_response_http_429_date_in_past = MockResponse (429 , {"Retry-After" : "Wed, 21 Oct 2015 07:28:00 GMT" })
31
+ self .mock_response_http_429_date_in_future = MockResponse (429 , {"Retry-After" : "Wed, 21 Oct 9999 07:28:00 GMT" })
32
+ self .mock_response_http_429_garbage = MockResponse (429 , {"Retry-After" : "blablablabla" })
18
33
19
34
def test_get_value_from_path_long_path (self ):
20
35
key = get_value_from_path (self .dictionary_to_search , self .ok_path_1 )
@@ -31,3 +46,40 @@ def test_get_value_from_path_wrong_path(self):
31
46
def test_get_value_from_path_wrong_path_custom_reply (self ):
32
47
key = get_value_from_path (self .dictionary_to_search , self .ko_path , default_reply = "ko" )
33
48
assert key == "ko"
49
+
50
+ def test_is_request_performed_none (self ):
51
+ mock_response = None
52
+ response = is_request_performed (mock_response )
53
+ assert response is False
54
+
55
+ def test_is_request_performed_error_200 (self ):
56
+ response = is_request_performed (self .mock_response_http_200 )
57
+ assert response is True
58
+
59
+ def test_is_request_performed_error_429 (self ):
60
+ response = is_request_performed (self .mock_response_http_429_digit_1s )
61
+ assert response is False
62
+
63
+ def test_is_request_performed_error_503 (self ):
64
+ response = is_request_performed (self .mock_response_http_503_digit_1s )
65
+ assert response is False
66
+
67
+ def test_decode_retry_after_header_seconds (self ):
68
+ seconds_before_retry = decode_retry_after_header (self .mock_response_http_429_digit_1s )
69
+ assert seconds_before_retry == 1
70
+
71
+ def test_decode_retry_after_header_future_date (self ):
72
+ seconds_before_retry = decode_retry_after_header (self .mock_response_http_429_date_in_future )
73
+ assert seconds_before_retry >= 4000
74
+
75
+ def test_decode_retry_after_header_past_date (self ):
76
+ seconds_before_retry = decode_retry_after_header (self .mock_response_http_429_date_in_past )
77
+ assert seconds_before_retry == SharePointConstants .DEFAULT_WAIT_BEFORE_RETRY
78
+
79
+ def test_decode_retry_after_header_garbage (self ):
80
+ seconds_before_retry = decode_retry_after_header (self .mock_response_http_429_garbage )
81
+ assert seconds_before_retry == SharePointConstants .DEFAULT_WAIT_BEFORE_RETRY
82
+
83
+ def test_decode_retry_after_header_no_header (self ):
84
+ seconds_before_retry = decode_retry_after_header (self .mock_response_http_429_no_header )
85
+ assert seconds_before_retry == SharePointConstants .DEFAULT_WAIT_BEFORE_RETRY
0 commit comments