@@ -745,3 +745,42 @@ def test_plaintext_logs_stream(caplog, capsys, plaintext_length, frame_size):
745
745
746
746
_look_in_logs (caplog , plaintext )
747
747
_error_check (capsys )
748
+
749
+
750
+ class NothingButRead (object ):
751
+ def __init__ (self , data ):
752
+ self ._data = io .BytesIO (data )
753
+
754
+ def read (self , size = - 1 ):
755
+ return self ._data .read (size )
756
+
757
+
758
+ @pytest .mark .parametrize ("frame_length" , (0 , 1024 ))
759
+ def test_cycle_nothing_but_read (frame_length ):
760
+ raw_plaintext = exact_length_plaintext (100 )
761
+ plaintext = NothingButRead (raw_plaintext )
762
+ key_provider = fake_kms_key_provider ()
763
+ raw_ciphertext , _encrypt_header = aws_encryption_sdk .encrypt (source = plaintext , key_provider = key_provider , frame_length = frame_length )
764
+ ciphertext = NothingButRead (raw_ciphertext )
765
+ decrypted , _decrypt_header = aws_encryption_sdk .decrypt (source = ciphertext , key_provider = key_provider )
766
+ assert raw_plaintext == decrypted
767
+
768
+
769
+ @pytest .mark .parametrize ("frame_length" , (0 , 1024 ))
770
+ def test_encrypt_nothing_but_read (frame_length ):
771
+ raw_plaintext = exact_length_plaintext (100 )
772
+ plaintext = NothingButRead (raw_plaintext )
773
+ key_provider = fake_kms_key_provider ()
774
+ ciphertext , _encrypt_header = aws_encryption_sdk .encrypt (source = plaintext , key_provider = key_provider , frame_length = frame_length )
775
+ decrypted , _decrypt_header = aws_encryption_sdk .decrypt (source = ciphertext , key_provider = key_provider )
776
+ assert raw_plaintext == decrypted
777
+
778
+
779
+ @pytest .mark .parametrize ("frame_length" , (0 , 1024 ))
780
+ def test_decrypt_nothing_but_read (frame_length ):
781
+ plaintext = exact_length_plaintext (100 )
782
+ key_provider = fake_kms_key_provider ()
783
+ raw_ciphertext , _encrypt_header = aws_encryption_sdk .encrypt (source = plaintext , key_provider = key_provider , frame_length = frame_length )
784
+ ciphertext = NothingButRead (raw_ciphertext )
785
+ decrypted , _decrypt_header = aws_encryption_sdk .decrypt (source = ciphertext , key_provider = key_provider )
786
+ assert plaintext == decrypted
0 commit comments