"""Tests for Unsafe Handlers.""" import application from oto import response from pytest_mock import MockerFixture from owsrequest import context as owsrequest_context from owsrequest.context import RequestContext from product_digital import config from product_digital import unsafe_handlers from product_digital.logic import unsafe_methods def test_UNSAFE_delete_product_by_upc_with_matching_identity(mocker: MockerFixture) -> None: """Test delete upc succeeds when identity is valid.""" mock_request_context = mocker.MagicMock(spec=RequestContext) mock_request_context.jwt_identity_id = config.DELETE_PRODUCT_IDENTITY mocker.patch.object( owsrequest_context, "get_request_context_from_headers", return_value=mock_request_context ) mocker.patch.object( unsafe_methods, "UNSAFE_hard_delete_product", return_value=response.Response(status=200) ) with application.app.test_request_context(): handler_response = unsafe_handlers.UNSAFE_delete_product_by_upc("1234") assert handler_response.status_code == 200 def test_UNSAFE_delete_product_by_upc_with_mismatched_identity(mocker: MockerFixture) -> None: """Test delete upc fails when identity is invalid.""" mock_request_context = mocker.MagicMock(spec=RequestContext) mock_request_context.jwt_identity_id = "40d22456-d75f-4ca9-bb0f-015108fb57b5" mocker.patch.object( owsrequest_context, "get_request_context_from_headers", return_value=mock_request_context ) with application.app.test_request_context(): handler_response = unsafe_handlers.UNSAFE_delete_product_by_upc("1234") assert handler_response.status_code == 403 def test_UNSAFE_update_product_display_upc_with_matching_identity(mocker: MockerFixture) -> None: """Test update display_upc succeeds when identity is valid.""" mock_request_context = mocker.MagicMock(spec=RequestContext) mock_request_context.jwt_identity_id = config.UPDATE_DISPLAY_UPC_DDEX_IDENTITY mocker.patch.object( owsrequest_context, "get_request_context_from_headers", return_value=mock_request_context ) mocker.patch.object( unsafe_methods, "UNSAFE_update_display_upc", return_value=response.Response(status=200) ) with application.app.test_request_context(json={'display_upc': 1234567}): handler_response = unsafe_handlers.UNSAFE_update_display_upc(5555) assert handler_response.status_code == 200 def test_UNSAFE_update_product_display_upc_with_mismatched_identity(mocker: MockerFixture) -> None: """Test update display_upc fails when identity is invalid.""" mock_request_context = mocker.MagicMock(spec=RequestContext) mock_request_context.jwt_identity_id = "40d22456-d75f-4ca9-bb0f-015108fb57b5" mocker.patch.object( owsrequest_context, "get_request_context_from_headers", return_value=mock_request_context ) with application.app.test_request_context(): handler_response = unsafe_handlers.UNSAFE_update_display_upc(5555) assert handler_response.status_code == 403 def test_UNSAFE_soft_delete_with_matching_identity(mocker: MockerFixture) -> None: """Test soft_delete succeeds when identity is valid.""" mock_request_context = mocker.MagicMock(spec=RequestContext) mock_request_context.jwt_identity_id = config.PRODUCT_SOFT_DELETE_IDENTITY mocker.patch.object( owsrequest_context, "get_request_context_from_headers", return_value=mock_request_context ) mocker.patch.object( unsafe_methods, "UNSAFE_soft_delete", return_value=response.Response(status=200) ) with application.app.test_request_context(): handler_response = unsafe_handlers.UNSAFE_soft_delete(1234) assert handler_response.status_code == 200 def test_UNSAFE_soft_delete_with_mismatched_identity(mocker: MockerFixture) -> None: """Test soft_delete fails when identity is invalid.""" mock_request_context = mocker.MagicMock(spec=RequestContext) mock_request_context.jwt_identity_id = "40d22456-d75f-4ca9-bb0f-015108fb57b5" mocker.patch.object( owsrequest_context, "get_request_context_from_headers", return_value=mock_request_context ) with application.app.test_request_context(): handler_response = unsafe_handlers.UNSAFE_soft_delete(1234) assert handler_response.status_code == 403