"""Lambda test module.""" import datetime from unittest.mock import patch import zoneinfo import pytest import config from src.utils import jira @pytest.fixture() def mock_jira_issue(): """Provide a Jira issue number.""" return 'DEVEX-123' @pytest.fixture() def mock_user(): """Return a test user.""" return 'test_user' @pytest.fixture() def mock_account_id(): """Return a test account.""" return '123456789012' @patch('src.utils.jira.JIRA', autospec=True) def test_comment_on_jira_issue(mock_JIRA, mock_jira_issue, mock_user, mock_account_id): # noqa: E501 """Test comment_on_jira_issue function.""" mock_jira = mock_JIRA() mock_jira.add_comment.return_value.created = '2022-01-01-01:00:00' mock_jira.add_comment.return_value.status_code = 200 comment_created = jira.comment_on_jira_issue(mock_jira_issue, mock_user, mock_account_id) # noqa: E501 assert comment_created == '2022-01-01-01:00:00' @patch('src.utils.jira.JIRA', autospec=True) def test_verify_jira_issue(mock_JIRA, mock_jira_issue): """Test verify_jira_issue function.""" mock_jira = mock_JIRA() mock_jira.issue.return_value.permalink.return_value = \ config.JIRA_BASE_URL + mock_jira_issue # Set created, labels, and status fields to valid values mock_jira.issue.return_value.fields.created = \ datetime.datetime.now(tz=zoneinfo.ZoneInfo( 'America/New_York')).strftime('%Y-%m-%dT%H:%M:%S.%f%z') mock_jira.issue.return_value.fields.status.statusCategory.name = 'To Do' mock_jira.issue.return_value.status_code = 200 issue_url = jira.verify_jira_issue(mock_jira_issue) assert issue_url == mock_jira.issue.return_value.permalink.return_value mock_jira.issue.assert_called_with(mock_jira_issue) @patch('src.utils.jira.JIRA', autospec=True) def test_verify_jira_invalid_date_issue(mock_JIRA, mock_jira_issue): """Test verify_jira_issue function.""" mock_jira = mock_JIRA() mock_jira.issue.return_value.fields.created = \ '2022-01-01T10:00:00.000000-04:00' with pytest.raises(ValueError, match='Jira issue greater ' 'than validity period.'): jira.verify_jira_issue(mock_jira_issue) @patch('src.utils.jira.JIRA', autospec=True) def test_verify_jira_invalid_status_category(mock_JIRA, mock_jira_issue): """Test verify_jira_issue function.""" mock_jira = mock_JIRA() # Set created to valid value mock_jira.issue.return_value.fields.created = \ datetime.datetime.now(tz=zoneinfo.ZoneInfo( 'America/New_York')).strftime('%Y-%m-%dT%H:%M:%S.%f%z') # Set status category to invalid value mock_jira.issue.return_value.fields.status.statusCategory.name = 'Done' with pytest.raises( ValueError, match='Jira issue status category is not valid.'): jira.verify_jira_issue(mock_jira_issue)