0

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)

Zin Yosrim
  • 1,602
  • 1
  • 22
  • 40

0 Answers0