"""Functional tests for creating a TW Profile.""" from unittest.mock import MagicMock, patch from collaborator import config from tests.testutils import db, mock_auth @patch("collaborator.models.ows.ows_account.request") @patch("collaborator.models.ows.ows_abacus_account.request") @patch("collaborator.models.transferwise.requests") @db.test_schema_default_seed def test_create_transferwise_profile( mock_transferwise, mock_ows_abacus_account, mock_ows_account, mocker, mock_account, auth_client, ): """Test create TransferWise profile handler.""" mock_auth(mocker, mock_account.id) oauth_response = MagicMock() oauth_response.status_code = 200 oauth_response.json.return_value = { "access_token": "abcd-efg", "refresh_token": "123-bdfs", } profile_response = MagicMock() profile_response.status_code = 200 profile_response.json.return_value = { "routes": [{"current_status": "verified", "source_currency": "NZD"}] } transferwise_api_responses = { "oauth/token": oauth_response, "v3/profiles/76/verification-status/bank-transfer" "?source_currencies=NZD": profile_response, } def transferwise_side_effect(request_url, **_): return transferwise_api_responses[ request_url.replace(config.TRANSFERWISE_BASE_URL, "") ] mock_transferwise.post.side_effect = transferwise_side_effect abacus_account_metadata_response = MagicMock() abacus_account_metadata_response.status_code = 200 abacus_account_metadata_response.json.return_value = {"currency_code": "NZD"} mock_ows_abacus_account.get.return_value = abacus_account_metadata_response account_metadata_reponse = MagicMock() account_metadata_reponse.status_code = 200 account_metadata_reponse.json.return_value = {"company_brand": "theorchard"} mock_ows_account.get.return_value = account_metadata_reponse payload = {"profile_id": 76, "code": "abcdef", "vendor_id": mock_account.id} result = auth_client.post("/transferwise/profile?app=orchard_suite", json=payload) assert result.status_code == 200 @patch("collaborator.models.transferwise.requests") def test_create_transferwise_profile_error(mock_transferwise, auth_client, mocker): """Test create TransferWise profile handler with error.""" mock_auth(mocker, 123) mock_response = MagicMock() mock_response.status_code = 500 mock_transferwise.post.return_value = mock_response payload = {"profile_id": 76, "code": "abcef", "vendor_id": 123} result = auth_client.post("/transferwise/profile", json=payload) assert result.status_code == 500 @patch("collaborator.models.transferwise.requests") @db.test_schema_default_seed def test_create_transferwise_profile_bad_params(mock_transferwise, auth_client, mocker): """Test create profile handler with bad params.""" mock_auth(mocker, 123) mock_response = MagicMock() mock_response.status_code = 500 mock_transferwise.post.return_value = mock_response payload = {} result = auth_client.post("/transferwise/profile", json=payload) assert result.status_code == 400