You've already forked keep-it-secret
v1.1.0
This commit is contained in:
12
tests/ext/aws/conftest.py
Normal file
12
tests/ext/aws/conftest.py
Normal file
@@ -0,0 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# type: ignore
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from .fixtures import TestingAWSSecrets
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def testing_aws_secrets() -> TestingAWSSecrets:
|
||||
return TestingAWSSecrets()
|
||||
10
tests/ext/aws/fixtures.py
Normal file
10
tests/ext/aws/fixtures.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import annotations
|
||||
|
||||
from keep_it_secret.ext.aws import AWSSecrets
|
||||
from keep_it_secret.fields import SecretsField
|
||||
from keep_it_secret.secrets import Secrets
|
||||
|
||||
|
||||
class TestingAWSSecrets(Secrets):
|
||||
aws = SecretsField.new(AWSSecrets)
|
||||
@@ -5,8 +5,31 @@ from __future__ import annotations
|
||||
import os
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
from pytest_mock import MockerFixture
|
||||
|
||||
from keep_it_secret.ext import aws
|
||||
|
||||
from .fixtures import TestingAWSSecrets
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_boto3_client(mocker: MockerFixture) -> mock.Mock:
|
||||
return mocker.patch.object(aws.boto3, 'client')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def aws_secrets_manager_client() -> mock.Mock:
|
||||
return mock.Mock()
|
||||
|
||||
|
||||
def test_init():
|
||||
# When
|
||||
result = aws.AWSSecrets()
|
||||
|
||||
# Then
|
||||
result.client is None
|
||||
|
||||
|
||||
@mock.patch.dict(
|
||||
os.environ,
|
||||
@@ -43,3 +66,40 @@ def test_as_boto3_client_kwargs_empty():
|
||||
|
||||
# Then
|
||||
assert result == {}
|
||||
|
||||
|
||||
def test_get_client_cache_miss(mock_boto3_client: mock.Mock,
|
||||
aws_secrets_manager_client: mock.Mock,
|
||||
testing_aws_secrets: TestingAWSSecrets):
|
||||
# Given
|
||||
mock_boto3_client.return_value = aws_secrets_manager_client
|
||||
|
||||
field = aws.AWSSecrets()
|
||||
|
||||
# When
|
||||
result = field.get_client()
|
||||
|
||||
# Then
|
||||
assert result == aws_secrets_manager_client
|
||||
|
||||
assert field.client == aws_secrets_manager_client
|
||||
|
||||
mock_boto3_client.assert_called_once_with(
|
||||
'secretsmanager', **testing_aws_secrets.aws.as_boto3_client_kwargs(),
|
||||
)
|
||||
|
||||
|
||||
def test_get_client_cache_hit(mock_boto3_client: mock.Mock,
|
||||
aws_secrets_manager_client: mock.Mock,
|
||||
testing_aws_secrets: TestingAWSSecrets):
|
||||
# Given
|
||||
field = aws.AWSSecrets()
|
||||
field.client = aws_secrets_manager_client
|
||||
|
||||
# When
|
||||
result = field.get_client()
|
||||
|
||||
# Then
|
||||
assert result == aws_secrets_manager_client
|
||||
|
||||
mock_boto3_client.assert_not_called()
|
||||
|
||||
@@ -4,7 +4,6 @@ from __future__ import annotations
|
||||
|
||||
import datetime
|
||||
import json
|
||||
from unittest import mock
|
||||
|
||||
import boto3
|
||||
import moto
|
||||
@@ -15,25 +14,6 @@ from keep_it_secret.ext import aws
|
||||
from keep_it_secret.secrets import Secrets
|
||||
|
||||
|
||||
class TestingAWSSecrets(Secrets):
|
||||
aws = aws.AWSSecrets()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def aws_secrets_manager_client() -> mock.Mock:
|
||||
return mock.Mock(spec=['get_secret_value'])
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_boto3_client(mocker: MockerFixture) -> mock.Mock:
|
||||
return mocker.patch.object(aws.boto3, 'client')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def testing_aws_secrets() -> TestingAWSSecrets:
|
||||
return TestingAWSSecrets()
|
||||
|
||||
|
||||
def test_init():
|
||||
# When
|
||||
result = aws.AWSSecretsManagerField('keep_it_secret/tests/spam')
|
||||
@@ -42,7 +22,6 @@ def test_init():
|
||||
assert result.secret_id == 'keep_it_secret/tests/spam'
|
||||
assert result.default is None
|
||||
assert result.decoder == json.loads
|
||||
assert result.client is None
|
||||
|
||||
|
||||
def test_init_with_default():
|
||||
@@ -107,53 +86,11 @@ def test_new(mocker: MockerFixture):
|
||||
)
|
||||
|
||||
|
||||
def test_get_client_cache_miss(mock_boto3_client: mock.Mock,
|
||||
aws_secrets_manager_client: mock.Mock,
|
||||
testing_aws_secrets: TestingAWSSecrets):
|
||||
# Given
|
||||
mock_boto3_client.return_value = aws_secrets_manager_client
|
||||
|
||||
field = aws.AWSSecretsManagerField('keep_it_secret/tests/spam')
|
||||
|
||||
# When
|
||||
result = field.get_client(testing_aws_secrets)
|
||||
|
||||
# Then
|
||||
assert result == aws_secrets_manager_client
|
||||
|
||||
assert field.client == aws_secrets_manager_client
|
||||
|
||||
mock_boto3_client.assert_called_once_with(
|
||||
'secretsmanager', **testing_aws_secrets.aws.as_boto3_client_kwargs(),
|
||||
)
|
||||
|
||||
|
||||
def test_get_client_cache_hit(mock_boto3_client: mock.Mock,
|
||||
aws_secrets_manager_client: mock.Mock,
|
||||
testing_aws_secrets: TestingAWSSecrets):
|
||||
# Given
|
||||
field = aws.AWSSecretsManagerField('keep_it_secret/tests/spam')
|
||||
field.client = aws_secrets_manager_client
|
||||
|
||||
# When
|
||||
result = field.get_client(testing_aws_secrets)
|
||||
|
||||
# Then
|
||||
assert result == aws_secrets_manager_client
|
||||
|
||||
mock_boto3_client.assert_not_called()
|
||||
|
||||
|
||||
def test_get_value_aws_dependency_missing(mocker: MockerFixture,
|
||||
aws_secrets_manager_client: mock.Mock,
|
||||
testing_secrets: Secrets):
|
||||
# Given
|
||||
field = aws.AWSSecretsManagerField('keep_it_secret/tests/spam')
|
||||
|
||||
mock_field_get_client = mocker.patch.object(
|
||||
field, 'get_client', return_value=aws_secrets_manager_client,
|
||||
)
|
||||
|
||||
with pytest.raises(field.DependencyMissing) as exception_info:
|
||||
# When
|
||||
_ = field(testing_secrets)
|
||||
@@ -161,10 +98,6 @@ def test_get_value_aws_dependency_missing(mocker: MockerFixture,
|
||||
# Then
|
||||
assert exception_info.value.args[0] == 'aws'
|
||||
|
||||
mock_field_get_client.assert_not_called()
|
||||
|
||||
aws_secrets_manager_client.get_secret_value.assert_not_called()
|
||||
|
||||
|
||||
@moto.mock_secretsmanager
|
||||
def test_get_value_required_value_not_found(testing_aws_secrets: Secrets):
|
||||
|
||||
Reference in New Issue
Block a user