diff options
author | Bjørn Christian Seime <bjorncs@vespa.ai> | 2023-10-27 15:01:20 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@vespa.ai> | 2023-10-27 15:02:50 +0200 |
commit | 173ca3509b0b60f6fffe8056a605f3ddec81cb53 (patch) | |
tree | 5435399279d29d13e0e8313cd87909ae0e79dc88 /controller-server | |
parent | 026305ca0de9f2b446e62d85c153df6324e0a0ff (diff) |
Validate tax-id on update in `/application/v4`
Diffstat (limited to 'controller-server')
2 files changed, 8 insertions, 6 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java index e4da2e4e92b..078c27f5d00 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java @@ -716,7 +716,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { var mergedContact = updateBillingContact(inspector.field("contact"), cloudTenant.name(), contact); var mergedAddress = updateTenantInfoAddress(inspector.field("address"), billing.address()); - var mergedTaxId = updateTaxId(inspector.field("taxId"), billing.getTaxId()); + var mergedTaxId = updateAndValidateTaxId(inspector.field("taxId"), billing.getTaxId()); var mergedPurchaseOrder = optional("purchaseOrder", inspector).map(PurchaseOrder::new).orElse(billing.getPurchaseOrder()); var mergedInvoiceEmail = optional("invoiceEmail", inspector).map(mail -> new Email(mail, false)).orElse(billing.getInvoiceEmail()); @@ -922,10 +922,12 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { throw new IllegalArgumentException("All address fields must be set"); } - private TaxId updateTaxId(Inspector insp, TaxId old) { + private TaxId updateAndValidateTaxId(Inspector insp, TaxId old) { if (!insp.valid()) return old; - return new TaxId(getString(insp.field("type"), old.type().value()), + var taxId = new TaxId(getString(insp.field("type"), old.type().value()), getString(insp.field("code"), old.code().value())); + controller.serviceRegistry().billingController().validateTaxId(taxId); + return taxId; } private TenantContact updateBillingContact(Inspector insp, TenantName tenantName, TenantContact oldContact) { @@ -953,7 +955,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { return TenantBilling.empty() .withContact(updateBillingContact(insp, tenantName, oldContact.contact())) .withAddress(updateTenantInfoAddress(insp.field("address"), oldContact.address())) - .withTaxId(updateTaxId(insp.field("taxId"), oldContact.getTaxId())) + .withTaxId(updateAndValidateTaxId(insp.field("taxId"), oldContact.getTaxId())) .withPurchaseOrder(purchaseOrder) .withInvoiceEmail(invoiceEmail); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java index c2c9939c37a..1ad88675169 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java @@ -125,7 +125,7 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest { "email":"foo@example", "phone":"phone" }, - "taxId":{"type": "no_mva", "code": "123456789MVA"}, + "taxId":{"type": "no_vat", "code": "123456789MVA"}, "purchaseOrder":"PO9001", "invoiceEmail":"billing@mycomp.any", "address": { @@ -151,7 +151,7 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest { "phone":"phone" }, "taxId": { - "type": "no_mva", + "type": "no_vat", "code": "123456789MVA" }, "purchaseOrder":"PO9001", |