aboutsummaryrefslogtreecommitdiffstats
path: root/controller-api/src/main
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@vespa.ai>2023-10-27 15:01:20 +0200
committerBjørn Christian Seime <bjorncs@vespa.ai>2023-10-27 15:02:50 +0200
commit173ca3509b0b60f6fffe8056a605f3ddec81cb53 (patch)
tree5435399279d29d13e0e8313cd87909ae0e79dc88 /controller-api/src/main
parent026305ca0de9f2b446e62d85c153df6324e0a0ff (diff)
Validate tax-id on update in `/application/v4`
Diffstat (limited to 'controller-api/src/main')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java4
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java10
2 files changed, 14 insertions, 0 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java
index e3b303c38d8..8b48c72f88e 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.vespa.hosted.controller.tenant.TaxId;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -132,4 +133,7 @@ public interface BillingController {
/** Get the list of countries that are accepted */
AcceptedCountries getAcceptedCountries();
+ /** Validation of tax id */
+ void validateTaxId(TaxId id) throws IllegalArgumentException;
+
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java
index af33992a093..18dd339b4a1 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.vespa.hosted.controller.tenant.TaxId;
import java.math.BigDecimal;
import java.time.Clock;
@@ -218,6 +219,15 @@ public class MockBillingController implements BillingController {
));
}
+ @Override
+ public void validateTaxId(TaxId id) throws IllegalArgumentException {
+ if (id.isEmpty() || id.isLegacy()) return;
+ if (!List.of("eu_vat", "no_vat").contains(id.type().value()))
+ throw new IllegalArgumentException("Unknown tax id type '%s'".formatted(id.type().value()));
+ if (!id.code().value().matches("\\w+"))
+ throw new IllegalArgumentException("Invalid tax id code '%s'".formatted(id.code().value()));
+ }
+
public void setTenants(List<TenantName> tenants) {
this.tenants = tenants;