"""Tests against the DynamoDB model.""" import time from unittest.mock import MagicMock from botocore.exceptions import ClientError import pytest from owsrequest.config import logger def create_mock_authorization(item): """Create authorization in a new mocked DynamoDB table.""" from owsrequest.connectors import dynamodb try: table = dynamodb.create_table( TableName='qa-ows-request-authorization', KeySchema=[ { 'AttributeName': 'authorization', 'KeyType': 'HASH' # Partition key } ], AttributeDefinitions=[ { 'AttributeName': 'authorization', 'AttributeType': 'S' } ], ProvisionedThroughput={ 'ReadCapacityUnits': 10, 'WriteCapacityUnits': 10}) table.put_item(Item=item) except ClientError: pass @pytest.fixture def mock_authorization(): """Return fake authorization dynamo data.""" return { 'authorization': 'ows-lyrics:randomhmac123', 'created_at': 1580458555, 'secret': 'randomsecret123', 'sender': 'ows-track' } def test_get_authorization_logging(mock_authorization, monkeypatch, mocker): """Test getting an authorization.""" create_mock_authorization(mock_authorization) monkeypatch.setattr( time, 'time', MagicMock(return_value=1580458555)) from owsrequest import model monkeypatch.setattr( model, 'request_latency', MagicMock(return_value=True)) mocker.patch.object(logger, 'info', return_value='') response = model.get_authorization( 'qa', 'ows-track/ows-lyrics:randomhmac123') assert response == mock_authorization assert logger.info.called def test_save_authorization_logging(mock_authorization, monkeypatch, mocker): """Test saving an authorization.""" create_mock_authorization(mock_authorization) monkeypatch.setattr( time, 'time', MagicMock(return_value=1580458555)) from owsrequest import model monkeypatch.setattr( model, 'request_latency', MagicMock(return_value=True)) mocker.patch.object(logger, 'info', return_value='') model.save_authorization( 'qa', 'randomhmac123', mock_authorization['sender'], 'ows-lyrics', mock_authorization['secret'] ) assert logger.info.called