def test_upload_to_s3_success(self, mock_boto_resource): """Test upload_to_s3 method with mock s3.""" bucket_name = "my_bucket" s3_client = Mock() s3_client.Bucket.create.return_value = Mock() s3_client.Bucket.return_value.upload_file.return_value = Mock() mock_boto_resource.return_value = s3_client s3_client = boto3.resource("s3") s3_client.Bucket(bucket_name).create() with NamedTemporaryFile(delete=False) as t_file: success = upload_to_s3(bucket_name, "/file.txt", t_file.name) self.assertTrue(success) os.remove(t_file.name)
def test_put_key(self): s3_session = Mock() value = Mock() bucket_name = "bucket" key = "key" self.bucket_service.put_key(s3_session, bucket_name, key, value) self.assertTrue(value.encode.called_with("utf-8")) self.assertTrue(s3_session.Bucket.called_with(bucket_name)) self.assertTrue( s3_session.Bucket(bucket_name).put_object.called_with(value.encode(), key) )
def test_upload_failure(self, mock_boto_resource): """Test upload_to_s3 method with mock s3.""" bucket_name = 'my_bucket' s3_client = Mock() s3_client.Bucket.create.return_value = Mock() s3_client.Bucket.return_value.upload_file.side_effect = ClientError( {'Error': {}}, 'Create') mock_boto_resource.return_value = s3_client s3_client = boto3.resource('s3') s3_client.Bucket(bucket_name).create() t_file = NamedTemporaryFile(delete=False) success = upload_to_s3(bucket_name, '/file.txt', t_file.name) self.assertFalse(success) os.remove(t_file.name)
def test_s3_bucket_update(self): mock_url = "http://www.meo.pt" con = Mock() s3 = Mock() string_io = Mock() responses.add(responses.POST, mock_url, json=json.loads(constants.example_json), status=200) string_io.getvalue.return_value = "test_value" fetch_meo.fetch_and_parse_MEO(mock_url, con, s3, string_io) s3.Bucket.assert_called_with('www.cinefilopobre.com') s3.Bucket('www.cinefilopobre.com').put_object.assert_called_with( Key='out.csv', Body="test_value")