"""Functional tests for subscribing to application webhooks events.""" from unittest.mock import MagicMock, patch from tests.testutils import db, mock_auth, transferwise_batch_fixtures from tests.testutils import transferwise_fixtures as fixtures @patch("collaborator.models.transferwise.requests") @patch("collaborator.logic.transferwise.send_email_to_master_contact") @db.test_schema_default_seed def test_create_batch_payment( send_email_mock, mock_transferwise, auth_client, mocker, mock_account, mock_identity, ): """Test create payment.""" mock_auth(mocker, mock_account.id) first_response = MagicMock() first_response.status_code = 200 first_response.json.return_value = fixtures.BATCH_RESPONSE second_response = MagicMock() second_response.status_code = 200 second_response.json.return_value = fixtures.BATCH_TRANSFER_RESPONSE third_response = MagicMock() third_response.status_code = 200 third_response.json.return_value = fixtures.BATCH_RESPONSE_INFO fourth_response = MagicMock() fourth_response.status_code = 200 fourth_response.json.return_value = fixtures.BATCH_COMPLETED_RESPONSE get_quote_response = MagicMock() get_quote_response.status_code = 200 get_quote_response.json.return_value = fixtures.QUOTE_RESPONSE mock_transferwise.post.side_effect = [first_response, second_response] mock_transferwise.get.side_effect = [get_quote_response, third_response] mock_transferwise.patch.side_effect = [fourth_response] payload = { "profile_id": 4497, "vendor_id": mock_account.id, "sourceCurrency": "USD", "targetCurrency": "USD", "name": "Batch 666", "transfers": [ { "targetAccount": 11112222, "collaborator_id": 1, "quoteUuid": "81b5e5b0-e7d8-4112-aad9-b9189d53dcb2", "details": { "reference": "13926297", "transferPurpose": "Other", "sourceOfFunds": "Salary", }, } ], } result = auth_client.post("/transferwise/batch-payment", json=payload) assert result.status_code == 200 json = result.json.copy() json["created_date"] = "2020-11-19T16:39:10.769971" assert json == transferwise_batch_fixtures.TRANSFERWISE_BATCH send_email_mock.assert_called_with( mock_account, mock_identity, "PAYMENT", ) @patch("collaborator.models.transferwise.requests") @db.test_schema_default_seed def test_create_payment_error(mocker, auth_client): """Test create payment bad params.""" mock_auth(mocker, 24601) result = auth_client.post("/transferwise/batch-payment", json={}) assert result.status_code == 400