I'm testing Python code which creates Azure key vaults and secrets. I've written a wrapper class for basic Azure keyvault functions, to create and delete keyvaults.
When running my unittests I get following warning:
./opt/homebrew/Cellar/python@3.9/3.9.16/Frameworks/Python.framework/Versions/3.9/lib/python3.9/unittest/suite.py:107: ResourceWarning: unclosed <ssl.SSLSocket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.34', 57154), raddr=('51.116.150.70', 443)>
for index, test in enumerate(self):
ResourceWarning: Enable tracemalloc to get the object allocation traceback
./opt/homebrew/Cellar/python@3.9/3.9.16/Frameworks/Python.framework/Versions/3.9/lib/python3.9/unittest/suite.py:84: ResourceWarning: unclosed <ssl.SSLSocket fd=8, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.34', 57183), raddr=('51.116.150.70', 443)>
return self.run(*args, **kwds)
ResourceWarning: Enable tracemalloc to get the object allocation traceback
----------------------------------------------------------------------
Ran 2 tests in 35.453s
OK
The tests run successfully, but why do I get this warning?
When testing the classes with an ordinary main() function instead with the testing framework, I don't get any warnings. So it seems to be an unittest issue.
Here's the test code:
# Testing creation an deletion of an azure keyvault
import unittest
import random
import string
from azure_keyvault import Keyvault, keyvault_client #wrapper
class TestAzureKeyvault(unittest.TestCase):
"""Test creation an deletion of an azure keyvault
Args:
unittest (_type_): _description_
"""
def setUp(self):
# create a random name for the keyvault
rand_str = "".join(random.choices(string.ascii_lowercase, k=10))
self.tresor_name = f"test-kv-{rand_str}"
# create keyvault_client and keyvault objects
self.kv_client = keyvault_client()
self.kv = Keyvault(tresor_name=self.tresor_name, keyvault_client=self.kv_client)
def test_keyvault_create(self):
# create keyvault and check if it is contained in the list of azure keyvaults
self.kv.create()
kv_list = [kv.name for kv in self.kv_client.vaults.list()]
self.assertIn(self.tresor_name, kv_list)
def test_keyvault_delete(self):
# delete previsously created keyvault and check if it's missing in the list of the azure keyvaults
kv = Keyvault(tresor_name=self.tresor_name, keyvault_client=self.kv_client)
kv.delete()
kv_list = [kv.name for kv in self.kv_client.vaults.list()]
self.assertNotIn(self.tresor_name, kv_list)