if not self.override_asn:
# check not necessary in case no ASN gets set
return
- # Validate the range is above zero and less than int32 max
+ # Validate the range is above zero and less than uint32_t max
# otherwise, Whoosh can't handle it in the index
- if self.override_asn < 0 or self.override_asn > 2_147_483_647:
+ if self.override_asn < 0 or self.override_asn > 0xFF_FF_FF_FF:
self._fail(
MESSAGE_ASN_RANGE,
f"Not consuming {self.filename}: "
- "Given ASN is out of range [0, 2147483647]",
+ f"Given ASN {self.override_asn} is out of range [0, 4,294,967,295]",
)
if Document.objects.filter(archive_serial_number=self.override_asn).exists():
self._fail(
from django.test import TestCase
from documents import barcodes
from documents import tasks
+from documents.consumer import ConsumerError
from documents.tests.utils import DirectoriesMixin
from PIL import Image
args, kwargs = mocked_call.call_args
self.assertEqual(kwargs["override_asn"], 123)
+
+ @override_settings(CONSUMER_ENABLE_ASN_BARCODE=True)
+ def test_asn_too_large(self):
+
+ src = os.path.join(
+ os.path.dirname(__file__),
+ "samples",
+ "barcodes",
+ "barcode-128-asn-too-large.pdf",
+ )
+ dst = os.path.join(self.dirs.scratch_dir, "barcode-128-asn-too-large.pdf")
+ shutil.copy(src, dst)
+
+ with mock.patch("documents.consumer.Consumer._send_progress"):
+ self.assertRaisesMessage(
+ ConsumerError,
+ "Given ASN 4294967296 is out of range [0, 4,294,967,295]",
+ tasks.consume_file,
+ dst,
+ )