from django.test import TestCase
from django.urls import reverse

from .models import ThreatScan
from .scanner import scan_content


class ThreatScanWorkflowTests(TestCase):
    def test_scanner_flags_suspicious_url(self):
        result = scan_content("url", "http://paypal-login-security.example.click/account/verify-password")
        self.assertGreaterEqual(result.risk_score, 35)
        self.assertTrue(result.indicators)

    def test_post_scan_creates_privacy_safe_record_and_redirects(self):
        response = self.client.post(reverse("create_scan"), {
            "scan_type": "message",
            "content": "Urgent: verify your password now or your bank account will be suspended. Click https://example.com",
            "store_metadata": "on",
        })
        self.assertEqual(response.status_code, 302)
        scan = ThreatScan.objects.get()
        self.assertNotIn("Urgent:", scan.content_hash)
        self.assertGreater(scan.risk_score, 0)
        self.assertTrue(scan.explanation)
