@@ -936,6 +936,43 @@ def test_sts_new_session(self):
936
936
# Assert
937
937
mock_generate_sts_session_token .assert_called_once ()
938
938
939
+ def test_sts_new_session_with_buffer_time (self ):
940
+ # Arrange
941
+ sts_token_timeout = 900
942
+ sts_token_buffer_time = 60
943
+ connection = Connection (transport = SQS .Transport , transport_options = {
944
+ 'predefined_queues' : example_predefined_queues ,
945
+ 'sts_role_arn' : 'test::arn' ,
946
+ 'sts_token_timeout' : sts_token_timeout ,
947
+ 'sts_token_buffer_time' : sts_token_buffer_time ,
948
+ })
949
+ channel = connection .channel ()
950
+ sqs = SQS_Channel_sqs .__get__ (channel , SQS .Channel )
951
+ queue_name = 'queue-1'
952
+
953
+ mock_generate_sts_session_token = Mock ()
954
+ mock_new_sqs_client = Mock ()
955
+ channel .new_sqs_client = mock_new_sqs_client
956
+
957
+ expiration_time = datetime .utcnow () + timedelta (seconds = sts_token_timeout )
958
+
959
+ mock_generate_sts_session_token .side_effect = [
960
+ {
961
+ 'Expiration' : expiration_time ,
962
+ 'SessionToken' : 123 ,
963
+ 'AccessKeyId' : 123 ,
964
+ 'SecretAccessKey' : 123
965
+ }
966
+ ]
967
+ channel .generate_sts_session_token = mock_generate_sts_session_token
968
+
969
+ # Act
970
+ sqs (queue = queue_name )
971
+
972
+ # Assert
973
+ mock_generate_sts_session_token .assert_called_once ()
974
+ assert channel .sts_expiration == expiration_time - timedelta (seconds = sts_token_buffer_time )
975
+
939
976
def test_sts_session_expired (self ):
940
977
# Arrange
941
978
connection = Connection (transport = SQS .Transport , transport_options = {
@@ -966,6 +1003,44 @@ def test_sts_session_expired(self):
966
1003
# Assert
967
1004
mock_generate_sts_session_token .assert_called_once ()
968
1005
1006
+ def test_sts_session_expired_with_buffer_time (self ):
1007
+ # Arrange
1008
+ sts_token_timeout = 900
1009
+ sts_token_buffer_time = 60
1010
+ connection = Connection (transport = SQS .Transport , transport_options = {
1011
+ 'predefined_queues' : example_predefined_queues ,
1012
+ 'sts_role_arn' : 'test::arn' ,
1013
+ 'sts_token_timeout' : sts_token_timeout ,
1014
+ 'sts_token_buffer_time' : sts_token_buffer_time ,
1015
+ })
1016
+ channel = connection .channel ()
1017
+ sqs = SQS_Channel_sqs .__get__ (channel , SQS .Channel )
1018
+ channel .sts_expiration = datetime .utcnow () - timedelta (days = 1 )
1019
+ queue_name = 'queue-1'
1020
+
1021
+ mock_generate_sts_session_token = Mock ()
1022
+ mock_new_sqs_client = Mock ()
1023
+ channel .new_sqs_client = mock_new_sqs_client
1024
+
1025
+ expiration_time = datetime .utcnow () + timedelta (seconds = sts_token_timeout )
1026
+
1027
+ mock_generate_sts_session_token .side_effect = [
1028
+ {
1029
+ 'Expiration' : expiration_time ,
1030
+ 'SessionToken' : 123 ,
1031
+ 'AccessKeyId' : 123 ,
1032
+ 'SecretAccessKey' : 123
1033
+ }
1034
+ ]
1035
+ channel .generate_sts_session_token = mock_generate_sts_session_token
1036
+
1037
+ # Act
1038
+ sqs (queue = queue_name )
1039
+
1040
+ # Assert
1041
+ mock_generate_sts_session_token .assert_called_once ()
1042
+ assert channel .sts_expiration == expiration_time - timedelta (seconds = sts_token_buffer_time )
1043
+
969
1044
def test_sts_session_not_expired (self ):
970
1045
# Arrange
971
1046
connection = Connection (transport = SQS .Transport , transport_options = {
0 commit comments