From 65b4741e27c75a30a73e5ae5c69884008bd0f209 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Sun, 14 Aug 2022 21:44:50 +0200 Subject: [PATCH] Fix crash on VAT IDs with missing country prefix --- src/pretix/base/services/tax.py | 4 ++++ src/tests/base/test_vat_id_validation.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/src/pretix/base/services/tax.py b/src/pretix/base/services/tax.py index 07255bfa08..287632d111 100644 --- a/src/pretix/base/services/tax.py +++ b/src/pretix/base/services/tax.py @@ -94,6 +94,10 @@ def _validate_vat_id_NO(vat_id, country_code): def _validate_vat_id_EU(vat_id, country_code): # Inspired by vat_moss library vat_id = vat_moss.id.normalize(vat_id) + + if not vat_id or len(vat_id) < 3: + raise VATIDFinalError(error_messages['invalid']) + number = vat_id[2:] if vat_id[:2] != cc_to_vat_prefix(country_code): diff --git a/src/tests/base/test_vat_id_validation.py b/src/tests/base/test_vat_id_validation.py index de65b87fe6..cd5386ee50 100644 --- a/src/tests/base/test_vat_id_validation.py +++ b/src/tests/base/test_vat_id_validation.py @@ -16,6 +16,12 @@ def test_eu_invalid_format(): validate_vat_id('AT12345', 'AT') +@responses.activate +def test_eu_no_prefix(): + with pytest.raises(VATIDFinalError): + validate_vat_id('12345', 'AT') + + @responses.activate def test_eu_country_mismatch(): with pytest.raises(VATIDFinalError):