import json from unittest.mock import Mock import pytest from db_schema.postgres.connection import aws_credentials_loader from db_schema.schemas import slz def test_db_connector(db, unit_of_work_stubs): with db as session: session_1_id = id(session) session.add(slz.UnitOfWork(**unit_of_work_stubs[1])) session.commit() assert session.query(slz.UnitOfWork).count() == 1 with db as session: session_2_id = id(session) assert session.query(slz.UnitOfWork).count() == 1 with db as session: session_3_id = id(session) session.add(slz.UnitOfWork(**unit_of_work_stubs[2])) session.commit() assert session.query(slz.UnitOfWork).count() == 2 assert session_1_id != session_2_id != session_3_id db.disconnect() # should reconnect(re-create engine and session) with db as session: assert session.query(slz.UnitOfWork).count() == 2 @pytest.mark.parametrize( 'readonly, input_str, expected', [ ( True, {'host': 'http', 'active_endpoint': 'test'}, {'host': 'http', 'active_endpoint': 'test'}, ), ( True, {'host': 'http'}, {'host': 'http'}, ), ( True, {'host': 'http', 'active_endpoint': 'test', 'active_endpoint_ro': 'test'}, {'host': 'http', 'active_endpoint': 'test', 'active_endpoint_ro': 'test'}, ), ( True, {'host': 'http', 'active_endpoint': 'test', 'active_endpoint_ro': 'test2'}, {'host': 'http', 'active_endpoint': 'test2', 'active_endpoint_ro': 'test2'}, ), ( False, {'host': 'http', 'active_endpoint': 'test', 'active_endpoint_ro': 'test2'}, {'host': 'http', 'active_endpoint': 'test', 'active_endpoint_ro': 'test2'}, ), ] ) def test_secrets_loader(readonly, input_str, expected): client = Mock() client.get_secret_value.return_value = {'SecretString': json.dumps(input_str)} result = aws_credentials_loader(secrets_client=client, key='123', readonly=readonly)() assert result == expected