Source code for tests.unit.test_hcp
"""
Unit tests for the HCP client.
"""
import json
import logging
import os
import unittest
from unittest import IsolatedAsyncioTestCase
from unittest.mock import patch
import pytest
from hcp_vault_secrets_client.hcp import HcpClient
logger = logging.getLogger(__name__)
def _set_mock_vars():
os.environ["HCP_ORGANIZATION_ID"] = "ORG_ID"
os.environ["HCP_PROJECT_NAME"] = "PROJECT_NAME"
os.environ["HCP_PROJECT_ID"] = "PROJECT_ID"
os.environ["HCP_ACCESS_TOKEN"] = "ACCESS_TOKEN"
[docs]
class MockResponse:
def __init__(self, text, status):
"""Initialize mock response"""
self._text = text
self.status = status
[docs]
async def text(self):
"""Mock response text"""
return self._text
async def __aexit__(self, exc_type, exc, tb):
"""Mock response __aexit__"""
pass
async def __aenter__(self):
"""Mock response __aenter__"""
return self
[docs]
async def json(self):
"""Mock response json"""
return json.loads(self._text)
[docs]
class HcpClientTests(IsolatedAsyncioTestCase):
[docs]
def setUp(self):
"""Set up test environment"""
_set_mock_vars()
[docs]
@patch("aiohttp.ClientSession")
async def test_create_app_secret(self, mock_session):
"""Unit test for create_app_secret"""
pytest.logger.info("Starting test_a_create_app_secret")
# Arrange
expected = {"id": "unit_test_secret"}
mock_session.post.return_value = MockResponse(
'{"secret":{"id":"unit_test_secret"}}', 200
)
# Act
actual = await HcpClient().create_app_secret(
mock_session, "unit_test_secret", "abc123"
)
# Assert
assert actual == expected
[docs]
@patch("aiohttp.ClientSession")
async def test_get_app_secret(self, mock_session):
"""Unit test for get_app_secret"""
pytest.logger.info("Starting test_b_get_app_secret")
# Arrange
expected = "abc123"
mock_session.get.return_value = MockResponse(
'{"secret":{"version":{"value": "abc123"}}}', 200
)
# Act
actual = await HcpClient().get_app_secret(mock_session, "unit_test_secret")
# Assert
assert actual == expected
[docs]
@patch("aiohttp.ClientSession")
async def test_delete_app_secret(self, mock_session):
"""Unit test for delete_app_secret"""
pytest.logger.info("Starting test_c_delete_app_secret")
# Arrange
expected = {}
mock_session.delete.return_value = MockResponse("{}", 200)
# Act
actual = await HcpClient().delete_app_secret(mock_session, "unit_test_secret")
# Assert
assert actual == expected
if __name__ == "__main__":
unittest.main()