"""Lambda test module.""" import json from unittest.mock import patch from content_utils.exceptions import InvalidMessageException import pytest from src import app def test_approval_success(request_engine, mock_approve_event): """Test handling an approval event with a successful response.""" review_queue_id = mock_approve_event['review_queue_id'] request_engine['ows-product-review'].add_spec( 'POST', f'/approve/{review_queue_id}', status=200, response={} ) app.handler(mock_approve_event, None) def test_ineligible_event(request_engine, mock_approve_event): """Test handling an already approved review queue item.""" review_queue_id = mock_approve_event['review_queue_id'] response = { 'code': 'review_queue_item_status_not_new', 'message': 'Review queue item status is not new.' } request_engine['ows-product-review'].add_spec( 'POST', f'/approve/{review_queue_id}', status=400, response={ 'code': 'review_queue_item_status_not_new', 'message': 'Review queue item status is not new.' } ) with pytest.raises(InvalidMessageException) as e: app.handler(mock_approve_event, None) assert e.value.args[0] == json.dumps(response) @patch('src.logic.process_event') def test_logic_raises(mock_process): """Test exception handling.""" class MockException(Exception): pass mock_process.side_effect = MockException('foo') with pytest.raises(MockException) as e: app.handler({}, None) assert e.value.args[0] == 'foo' @patch('src.logic.USER_UUID', 'uuid_56789') @patch('src.logic.save_in_ows') def test_correct_args_to_ows(mock_ows, mock_approve_event): """Test that the correct data is sent to the ows.""" app.handler(mock_approve_event, None) mock_ows.assert_called_with( 10, { 'user_id': 'uuid_56789', 'note': mock_approve_event['note'] } )