25
25
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26
26
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
27
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
- from unittest .mock import AsyncMock
29
28
import urllib .parse
30
29
31
30
import pytest
@@ -48,14 +47,6 @@ def mock_downloader(**args):
48
47
open ("/tmp/foo/test.txt" , "wb" ).write (b"\x01 " * 10 )
49
48
50
49
51
- @fixture
52
- def download_patch ():
53
- import aioboto3 .s3 .inject
54
-
55
- aioboto3 .s3 .inject .download_file = AsyncMock (side_effect = mock_downloader )
56
- return aioboto3 .s3 .inject .download_file
57
-
58
-
59
50
@fixture
60
51
def minio_adapter (moto_services , moto_patch_session ) -> MinioAdapter :
61
52
urlinfo = urllib .parse .urlparse (moto_services ["s3" ])
@@ -64,7 +55,7 @@ def minio_adapter(moto_services, moto_patch_session) -> MinioAdapter:
64
55
)
65
56
66
57
67
- @fixture
58
+ @fixture ( scope = "function" )
68
59
async def populate_bucket (request , minio_adapter ):
69
60
async with minio_adapter .minio .client (
70
61
"s3" , endpoint_url = minio_adapter .endpoint_host
@@ -173,16 +164,6 @@ async def test_download_short_filename_change(minio_adapter, populate_bucket):
173
164
result .unlink () # it should exist, from above ...
174
165
175
166
176
- @pytest .mark .parametrize ("populate_bucket" , ["test.txt" ], indirect = True )
177
- @pytest .mark .asyncio
178
- async def test_download_file_retry (download_patch , minio_adapter , populate_bucket ):
179
- result = await minio_adapter .download_file ("test.txt" , local_dir = "/tmp/foo" )
180
- assert str (result ).endswith ("test.txt" )
181
- assert result .exists ()
182
- assert len (download_patch .call_args_list ) == 3
183
- result .unlink ()
184
-
185
-
186
167
@pytest .mark .parametrize ("populate_bucket" , ["test2.txt" ], indirect = True )
187
168
@pytest .mark .asyncio
188
169
async def test_download_repeat (minio_adapter , populate_bucket ):
@@ -202,7 +183,21 @@ async def test_download_repeat(minio_adapter, populate_bucket):
202
183
result .unlink () # it should exist, from above ...
203
184
204
185
186
+ @pytest .mark .parametrize ("populate_bucket" , ["test.txt" ], indirect = True )
205
187
@pytest .mark .asyncio
206
- async def test_get_signed_url (minio_adapter , moto_services ):
188
+ async def test_get_signed_url (minio_adapter , moto_services , populate_bucket ):
207
189
result = await minio_adapter .get_signed_url ("test.txt" )
208
190
assert result .startswith (moto_services ["s3" ])
191
+
192
+
193
+ @pytest .mark .parametrize ("populate_bucket" , ["test.txt" ], indirect = True )
194
+ @pytest .mark .asyncio
195
+ async def test_download_file_retry (minio_adapter , populate_bucket , mocker ):
196
+ download_patch = mocker .patch (
197
+ "aioboto3.s3.inject.download_file" , side_effect = mock_downloader
198
+ )
199
+ result = await minio_adapter .download_file ("test.txt" , local_dir = "/tmp/foo" )
200
+ assert str (result ).endswith ("test.txt" )
201
+ assert result .exists ()
202
+ assert download_patch .call_count == 3
203
+ result .unlink ()
0 commit comments