"""Pruebas contra Internet: se saltan si no hay salida. Solo revisan protocolos, nunca tiempos."""
import subprocess
import unittest

import internet

SITE = internet.DEFAULT_SITE
PATH = internet.DEFAULT_PATH


def online():
    done = subprocess.run(["curl", "-s", "-o", "/dev/null", "--max-time", "6", f"https://{SITE}{PATH}"],
                          capture_output=True)
    return done.returncode == 0


@unittest.skipUnless(online(), f"sin salida a {SITE}")
class RealSite(unittest.TestCase):
    def test_http2_and_http3_answer(self):
        self.assertEqual(internet.sample("--http2", SITE, PATH)[0], "2")
        self.assertEqual(internet.sample("--http3-only", SITE, PATH)[0], "3")

    def test_the_site_speaks_tls13(self):
        done = subprocess.run(["openssl", "s_client", "-connect", f"{SITE}:443", "-servername", SITE, "-tls1_3"],
                              input="", capture_output=True, text=True, timeout=20)
        self.assertIn("TLSv1.3", done.stdout)
        self.assertIn("Verification: OK", done.stdout)


if __name__ == "__main__":
    unittest.main()
