"""Current multi-gigabyte SDK response sizes remain recoverable through the real curl transport."""
from pathlib import Path
import tempfile
import unittest

import test_flutter_archive as archive_fixture
from flutter_manifest_fixture import tls_origin


class ArchiveSizeTests(unittest.TestCase):
    def test_advertised_sdk_size_above_two_gib_does_not_prevent_recovery(self):
        with tempfile.TemporaryDirectory() as directory:
            root = Path(directory)
            with tls_origin(root, ["large_partial", "range"], archive_fixture.ARCHIVE) as (server, cert):
                result = archive_fixture.ArchiveRecoveryTests().invoke(root, server, cert)
                self.assertEqual((result.returncode, result.stdout), (0, archive_fixture.ARCHIVE))
                self.assertEqual(server.ranges, ["", "bytes=31-"])

    def test_archive_size_limit_still_refuses_oversized_transfers(self):
        with tempfile.TemporaryDirectory() as directory:
            root = Path(directory)
            with tls_origin(root, ["too_large"], archive_fixture.ARCHIVE) as (server, cert):
                result = archive_fixture.ArchiveRecoveryTests().invoke(root, server, cert)
                self.assertEqual((result.returncode, result.stdout, server.connects), (63, b"", 1))


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