"""Lambda test module.""" from unittest.mock import MagicMock import pytest from src import app as index from src.app import BadRequest from src.app import RedeemException VALID_EVENT = { 'voucher_code': 'awal', 'voucher_code_owner': 'buvarov1@theorchard.com', 'email': 'test@test.com', 'source_id': 'wefo312312rf' } def test_handler_invalid_input(): """Test handler function if there is a malformed event.""" with pytest.raises(BadRequest): index._send_message = MagicMock() index.requests.post = MagicMock() index.handler({'dummy': 'input'}, None) def test_handler_voucherify_not_returns_200(): """Test handler function if Voucherify API returns not 200.""" with pytest.raises(RedeemException): index._send_message = MagicMock() response_mock = MagicMock() response_mock.status_code = 400 index.requests.post = MagicMock(return_value=response_mock) index.handler(VALID_EVENT, None) def test_handler_redeem_status_is_not_success(): """Test handler function if Voucherify returns not SUCCESS.""" with pytest.raises(RedeemException): index._send_message = MagicMock() response_mock = MagicMock() response_mock.status_code = 200 response_mock.json.return_value = {'result': 'NOT SUCCESS'} index.requests.post = MagicMock(return_value=response_mock) index.handler(VALID_EVENT, None) def test_handler_valid_input(): """Test handler function if happy path.""" index._send_message = MagicMock() response_mock = MagicMock() response_mock.status_code = 200 response_mock.json.return_value = {'result': 'SUCCESS'} index.requests.post = MagicMock(return_value=response_mock) result = index.handler(VALID_EVENT, {}) assert result is None assert index._send_message.call_count == 1