diff --git a/app/integrations/google_workspace/google_calendar.py b/app/integrations/google_workspace/google_calendar.py index 70c635f9..44cbce1f 100644 --- a/app/integrations/google_workspace/google_calendar.py +++ b/app/integrations/google_workspace/google_calendar.py @@ -82,8 +82,10 @@ def insert_event(start, end, emails, title, incident_document, **kwargs): else: # Optionally handle the case where 'incident_document' is None or empty # For example, remove 'attachments' from 'body' if it shouldn't exist without a valid document - body.pop("attachments", None) # This removes 'attachments' if it exists, does nothing if it doesn't - + body.pop( + "attachments", None + ) # This removes 'attachments' if it exists, does nothing if it doesn't + body.update({convert_string_to_camel_case(k): v for k, v in kwargs.items()}) if "delegated_user_email" in kwargs and kwargs["delegated_user_email"] is not None: delegated_user_email = kwargs["delegated_user_email"] diff --git a/app/tests/integrations/google_workspace/test_google_calendar.py b/app/tests/integrations/google_workspace/test_google_calendar.py index 1b74defb..4401769b 100644 --- a/app/tests/integrations/google_workspace/test_google_calendar.py +++ b/app/tests/integrations/google_workspace/test_google_calendar.py @@ -171,15 +171,15 @@ def test_insert_event_no_kwargs_no_delegated_email( "summary": title, "guestsCanModify": True, "attachments": [ - { - "fileUrl": f"https://docs.google.com/document/d/{document_id}", - "mimeType": "application/vnd.google-apps.document", - "title": "Incident Document", - } + { + "fileUrl": f"https://docs.google.com/document/d/{document_id}", + "mimeType": "application/vnd.google-apps.document", + "title": "Incident Document", + } ], }, calendarId="primary", - supportsAttachments=True + supportsAttachments=True, ) assert not mock_convert_string_to_camel_case.called assert mock_os_environ_get.called_once_with("SRE_BOT_EMAIL") @@ -205,9 +205,17 @@ def test_insert_event_with_kwargs( "description": "Test Description", "delegated_user_email": "test_custom_email", "time_zone": "Magic/Time_Zone", - "attachments": [{"fileUrl": "https://docs.google.com/document/d/test_document_id", "mimeType": "application/vnd.google-apps.document", "title": "Incident Document"}] + "attachments": [ + { + "fileUrl": "https://docs.google.com/document/d/test_document_id", + "mimeType": "application/vnd.google-apps.document", + "title": "Incident Document", + } + ], } - result = google_calendar.insert_event(start, end, emails, title, document_id, **kwargs) + result = google_calendar.insert_event( + start, end, emails, title, document_id, **kwargs + ) assert result == "test_link" mock_execute_google_api_call.assert_called_once_with( "calendar", @@ -225,13 +233,14 @@ def test_insert_event_with_kwargs( **kwargs, }, calendarId="primary", - supportsAttachments=True + supportsAttachments=True, ) for key in kwargs: mock_convert_string_to_camel_case.assert_any_call(key) assert not mock_os_environ_get.called + @patch("os.environ.get", return_value="test_email") @patch("integrations.google_workspace.google_calendar.execute_google_api_call") @patch("integrations.google_workspace.google_calendar.convert_string_to_camel_case") @@ -246,14 +255,16 @@ def test_insert_event_with_no_document( end = start emails = ["test1@test.com", "test2@test.com"] title = "Test Event" - document_id = "" + document_id = "" kwargs = { "location": "Test Location", "description": "Test Description", "delegated_user_email": "test_custom_email", "time_zone": "Magic/Time_Zone", } - result = google_calendar.insert_event(start, end, emails, title, document_id, **kwargs) + result = google_calendar.insert_event( + start, end, emails, title, document_id, **kwargs + ) assert result == "test_link" mock_execute_google_api_call.assert_called_once_with( "calendar", @@ -271,13 +282,14 @@ def test_insert_event_with_no_document( **kwargs, }, calendarId="primary", - supportsAttachments=True + supportsAttachments=True, ) for key in kwargs: mock_convert_string_to_camel_case.assert_any_call(key) assert not mock_os_environ_get.called + @patch("integrations.google_workspace.google_service.handle_google_api_errors") @patch("os.environ.get", return_value="test_email") @patch("integrations.google_workspace.google_calendar.execute_google_api_call") diff --git a/app/tests/modules/incident/test_incident_helper.py b/app/tests/modules/incident/test_incident_helper.py index 6366d7ef..5a4fba01 100644 --- a/app/tests/modules/incident/test_incident_helper.py +++ b/app/tests/modules/incident/test_incident_helper.py @@ -837,7 +837,11 @@ def test_schedule_incident_retro_successful_no_bots(): # Verify the modal payload contains the correct data expected_data = json.dumps( - {"emails": ["user1@example.com", "user2@example.com"], "topic": "Retro Topic", "incident_document": "dummy_document_id"} + { + "emails": ["user1@example.com", "user2@example.com"], + "topic": "Retro Topic", + "incident_document": "dummy_document_id", + } ) assert ( mock_client.views_open.call_args[1]["view"]["private_metadata"] == expected_data @@ -897,7 +901,11 @@ def test_schedule_incident_retro_successful_bots(): # Verify the modal payload contains the correct data expected_data = json.dumps( - {"emails": ["user1@example.com", "user2@example.com"], "topic": "Retro Topic", "incident_document": "dummy_document_id"} + { + "emails": ["user1@example.com", "user2@example.com"], + "topic": "Retro Topic", + "incident_document": "dummy_document_id", + } ) assert ( mock_client.views_open.call_args[1]["view"]["private_metadata"] == expected_data @@ -956,7 +964,11 @@ def test_schedule_incident_retro_successful_security_group(): # Verify the modal payload contains the correct data expected_data = json.dumps( - {"emails": ["user2@example.com"], "topic": "Retro Topic", "incident_document": "dummy_document_id"} + { + "emails": ["user2@example.com"], + "topic": "Retro Topic", + "incident_document": "dummy_document_id", + } ) assert ( mock_client.views_open.call_args[1]["view"]["private_metadata"] == expected_data @@ -1016,7 +1028,11 @@ def test_schedule_incident_retro_successful_no_security_group(): # Verify the modal payload contains the correct data expected_data = json.dumps( - {"emails": ["user1@example.com", "user2@example.com"], "topic": "Retro Topic", "incident_document": "dummy_document_id"} + { + "emails": ["user1@example.com", "user2@example.com"], + "topic": "Retro Topic", + "incident_document": "dummy_document_id", + } ) assert ( mock_client.views_open.call_args[1]["view"]["private_metadata"] == expected_data @@ -1054,7 +1070,9 @@ def test_schedule_incident_retro_with_no_users(): incident_helper.schedule_incident_retro(mock_client, body, mock_ack) # construct the expected data object - expected_data = json.dumps({"emails": [], "topic": "Retro Topic", "incident_document": "dummy_document_id"}) + expected_data = json.dumps( + {"emails": [], "topic": "Retro Topic", "incident_document": "dummy_document_id"} + ) # Assertions to validate behavior when no users are present in the channel assert ( mock_client.views_open.call_args[1]["view"]["private_metadata"] == expected_data @@ -1090,7 +1108,13 @@ def test_schedule_incident_retro_with_no_topic(): incident_helper.schedule_incident_retro(mock_client, body, mock_ack) # construct the expected data object and set the topic to a default one - expected_data = json.dumps({"emails": [], "topic": "Incident Retro", "incident_document": "dummy_document_id"}) + expected_data = json.dumps( + { + "emails": [], + "topic": "Incident Retro", + "incident_document": "dummy_document_id", + } + ) # Assertions to validate behavior when no users are present in the channel assert ( mock_client.views_open.call_args[1]["view"]["private_metadata"] == expected_data