From cddfced1779b2a54c6e56f983b150eefe0d83bbc Mon Sep 17 00:00:00 2001 From: brian Date: Fri, 8 Nov 2024 22:27:58 +0000 Subject: [PATCH] added unittest --- shared/datastore/src/delete.py | 13 ++-- shared/datastore/tests/unit/delete_test.py | 77 ++++++++++++++++++++++ 2 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 shared/datastore/tests/unit/delete_test.py diff --git a/shared/datastore/src/delete.py b/shared/datastore/src/delete.py index f3cd179..6bd926a 100644 --- a/shared/datastore/src/delete.py +++ b/shared/datastore/src/delete.py @@ -1,22 +1,22 @@ """Definition of delete function.""" -from __future__ import annotations - import logging -import os +from traceback import print_exc from minio import Minio def delete( client: Minio, + bucket_name: str, object_name: str, ) -> None: """Delete object from MinIO.""" assert isinstance(client, Minio) - assert isinstance(object_name, str) - bucket_name = os.getenv('MINIO_BUCKET_NAME', default='') + assert isinstance(bucket_name, str) assert len(bucket_name) > 0 + assert isinstance(object_name, str) + assert len(object_name) > 0 # remove object try: client.remove_object( @@ -24,7 +24,8 @@ def delete( object_name=object_name, ) except Exception as exc: - logging.debug(exc) logging.error('failed deleting %s', object_name) + print_exc() + raise exc else: logging.debug('deleted %s', object_name) diff --git a/shared/datastore/tests/unit/delete_test.py b/shared/datastore/tests/unit/delete_test.py new file mode 100644 index 0000000..8471d10 --- /dev/null +++ b/shared/datastore/tests/unit/delete_test.py @@ -0,0 +1,77 @@ +"""Definition of unittests for delete function.""" + +import random +import string +import unittest +from unittest.mock import Mock + +from minio import Minio + +from shared.datastore import delete + + +class TestDelete(unittest.TestCase): + + def setUp(self): + # mock minio client + self.client = Mock(spec=Minio) + # set bucket name + self.bucket_name = 'test-bucket' + # set object name + self.object_name = ''.join( + random.choices( + string.ascii_uppercase + string.digits, + k=24, + ), + ) + + def test_should_fail_on_wrong_input_type_client(self): + with self.assertRaises(AssertionError): + delete( + client='not-minio-type', + bucket_name=self.bucket_name, + object_name=self.object_name, + ) + + def test_should_fail_on_wrong_input_type_bucket_name(self): + with self.assertRaises(AssertionError): + delete( + client=self.client, + bucket_name=0.0, + object_name=self.object_name, + ) + + def test_should_fail_on_wrong_input_length_bucket_name(self): + with self.assertRaises(AssertionError): + delete( + client=self.client, + bucket_name='', + object_name=self.object_name, + ) + + def test_should_fail_on_wrong_input_type_object_name(self): + with self.assertRaises(AssertionError): + delete( + client=self.client, + bucket_name=self.bucket_name, + object_name=0.0, + ) + + def test_should_fail_on_wrong_input_length_object_name(self): + with self.assertRaises(AssertionError): + delete( + client=self.client, + bucket_name=self.bucket_name, + object_name='', + ) + + def test_should_call_client__remove_object(self): + delete( + client=self.client, + bucket_name=self.bucket_name, + object_name=self.object_name, + ) + self.client.remove_object.assert_called_with( + bucket_name=self.bucket_name, + object_name=self.object_name, + )