from unittest.mock import patch def test_n8n_webhook_flow(client, user_headers): # Criar lead via import-selected with patch('app.services.geocoding_service.GeocodingService.get_location_by_cep') as mock_geo: mock_geo.return_value = { 'cep': '01310100', 'logradouro': 'Rua Teste', 'bairro': 'Centro', 'cidade': 'São Paulo', 'uf': 'SP', 'formatted_cep': '01310-100' } client.post('/api/v1/leads/import-selected', headers=user_headers, json={ 'cep': '01310-100', 'ramo': 'Supermercado', 'selected_leads': [{'nome_empresa': 'Supermercado Teste', 'telefone': '(11) 99999-0000'}] }) leads = client.get('/api/v1/leads', headers=user_headers).get_json()['leads'] assert len(leads) > 0 lead_id = leads[0]['id'] # Disparar webhook n8n webhook_res = client.post('/api/v1/webhooks/n8n', json={ 'lead_id': lead_id, 'event_type': 'mensagem_enviada', 'new_status': 'respondeu', 'mensagem': 'Cliente respondeu via WhatsApp demonstrando interesse.' }) assert webhook_res.status_code == 200 assert webhook_res.get_json()['data']['status_atual'] == 'respondeu'