aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@verizonmedia.com>2022-03-01 11:24:18 +0100
committerLeandro Alves <leandroalves@yahooinc.com>2022-03-14 11:01:55 +0100
commit6012cf065da30cf9baee97706d67a6ff6e77cb46 (patch)
treedc5ba6fc61e3a6acab5b61d6b22cbf225296e95a /controller-server
parentfed4f6dddba35fe13b9d10dc79485fa7d4d97afb (diff)
Clean up the tenant info classes
There was some repetition in the TenantInfo classes. Created dedicated classes for TenantAddress and TenantContact. Used these throughout the TenantInfo tree. This commit also removes the 'invoiceEmail' field that was never used.
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java53
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java80
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java39
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/SignatureFilterTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-info-after-created.json1
6 files changed, 94 insertions, 87 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
index 1b6a0a6a122..020e9137779 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
@@ -22,8 +22,9 @@ import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant;
import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
+import com.yahoo.vespa.hosted.controller.tenant.TenantAddress;
+import com.yahoo.vespa.hosted.controller.tenant.TenantContact;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfo;
-import com.yahoo.vespa.hosted.controller.tenant.TenantInfoAddress;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfoBillingContact;
import java.net.URI;
@@ -193,33 +194,34 @@ public class TenantSerializer {
}
TenantInfo tenantInfoFromSlime(Inspector infoObject) {
- if (!infoObject.valid()) return TenantInfo.EMPTY;
+ if (!infoObject.valid()) return TenantInfo.empty();
- return TenantInfo.EMPTY
+ return TenantInfo.empty()
.withName(infoObject.field("name").asString())
.withEmail(infoObject.field("email").asString())
.withWebsite(infoObject.field("website").asString())
- .withContactName(infoObject.field("contactName").asString())
- .withContactEmail(infoObject.field("contactEmail").asString())
- .withInvoiceEmail(infoObject.field("invoiceEmail").asString())
+ .withContact(TenantContact.from(
+ infoObject.field("contactName").asString(),
+ infoObject.field("contactEmail").asString()))
.withAddress(tenantInfoAddressFromSlime(infoObject.field("address")))
- .withBillingContact(tenantInfoBillingContactFromSlime(infoObject.field("billingContact")));
+ .withBilling(tenantInfoBillingContactFromSlime(infoObject.field("billingContact")));
}
- private TenantInfoAddress tenantInfoAddressFromSlime(Inspector addressObject) {
- return TenantInfoAddress.EMPTY
- .withAddressLines(addressObject.field("addressLines").asString())
- .withPostalCodeOrZip(addressObject.field("postalCodeOrZip").asString())
+ private TenantAddress tenantInfoAddressFromSlime(Inspector addressObject) {
+ return TenantAddress.empty()
+ .withAddress(addressObject.field("addressLines").asString())
+ .withCode(addressObject.field("postalCodeOrZip").asString())
.withCity(addressObject.field("city").asString())
- .withStateRegionProvince(addressObject.field("stateRegionProvince").asString())
+ .withRegion(addressObject.field("stateRegionProvince").asString())
.withCountry(addressObject.field("country").asString());
}
private TenantInfoBillingContact tenantInfoBillingContactFromSlime(Inspector billingObject) {
- return TenantInfoBillingContact.EMPTY
- .withName(billingObject.field("name").asString())
- .withEmail(billingObject.field("email").asString())
- .withPhone(billingObject.field("phone").asString())
+ return TenantInfoBillingContact.empty()
+ .withContact(TenantContact.from(
+ billingObject.field("name").asString(),
+ billingObject.field("email").asString(),
+ billingObject.field("phone").asString()))
.withAddress(tenantInfoAddressFromSlime(billingObject.field("address")));
}
@@ -252,21 +254,20 @@ public class TenantSerializer {
infoCursor.setString("name", info.name());
infoCursor.setString("email", info.email());
infoCursor.setString("website", info.website());
- infoCursor.setString("invoiceEmail", info.invoiceEmail());
- infoCursor.setString("contactName", info.contactName());
- infoCursor.setString("contactEmail", info.contactEmail());
+ infoCursor.setString("contactName", info.contact().name());
+ infoCursor.setString("contactEmail", info.contact().email());
toSlime(info.address(), infoCursor);
toSlime(info.billingContact(), infoCursor);
}
- private void toSlime(TenantInfoAddress address, Cursor parentCursor) {
+ private void toSlime(TenantAddress address, Cursor parentCursor) {
if (address.isEmpty()) return;
Cursor addressCursor = parentCursor.setObject("address");
- addressCursor.setString("addressLines", address.addressLines());
- addressCursor.setString("postalCodeOrZip", address.postalCodeOrZip());
+ addressCursor.setString("addressLines", address.address());
+ addressCursor.setString("postalCodeOrZip", address.code());
addressCursor.setString("city", address.city());
- addressCursor.setString("stateRegionProvince", address.stateRegionProvince());
+ addressCursor.setString("stateRegionProvince", address.region());
addressCursor.setString("country", address.country());
}
@@ -274,9 +275,9 @@ public class TenantSerializer {
if (billingContact.isEmpty()) return;
Cursor addressCursor = parentCursor.setObject("billingContact");
- addressCursor.setString("name", billingContact.name());
- addressCursor.setString("email", billingContact.email());
- addressCursor.setString("phone", billingContact.phone());
+ addressCursor.setString("name", billingContact.contact().name());
+ addressCursor.setString("email", billingContact.contact().email());
+ addressCursor.setString("phone", billingContact.contact().phone());
toSlime(billingContact.address(), addressCursor);
}
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 de8f1ec7ddc..954b5826317 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
@@ -111,8 +111,9 @@ import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant;
import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
+import com.yahoo.vespa.hosted.controller.tenant.TenantAddress;
+import com.yahoo.vespa.hosted.controller.tenant.TenantContact;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfo;
-import com.yahoo.vespa.hosted.controller.tenant.TenantInfoAddress;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfoBillingContact;
import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion;
@@ -503,9 +504,8 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
infoCursor.setString("name", info.name());
infoCursor.setString("email", info.email());
infoCursor.setString("website", info.website());
- infoCursor.setString("invoiceEmail", info.invoiceEmail());
- infoCursor.setString("contactName", info.contactName());
- infoCursor.setString("contactEmail", info.contactEmail());
+ infoCursor.setString("contactName", info.contact().name());
+ infoCursor.setString("contactEmail", info.contact().email());
toSlime(info.address(), infoCursor);
toSlime(info.billingContact(), infoCursor);
}
@@ -513,14 +513,14 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
return new SlimeJsonResponse(slime);
}
- private void toSlime(TenantInfoAddress address, Cursor parentCursor) {
+ private void toSlime(TenantAddress address, Cursor parentCursor) {
if (address.isEmpty()) return;
Cursor addressCursor = parentCursor.setObject("address");
- addressCursor.setString("addressLines", address.addressLines());
- addressCursor.setString("postalCodeOrZip", address.postalCodeOrZip());
+ addressCursor.setString("addressLines", address.address());
+ addressCursor.setString("postalCodeOrZip", address.code());
addressCursor.setString("city", address.city());
- addressCursor.setString("stateRegionProvince", address.stateRegionProvince());
+ addressCursor.setString("stateRegionProvince", address.region());
addressCursor.setString("country", address.country());
}
@@ -528,9 +528,9 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
if (billingContact.isEmpty()) return;
Cursor addressCursor = parentCursor.setObject("billingContact");
- addressCursor.setString("name", billingContact.name());
- addressCursor.setString("email", billingContact.email());
- addressCursor.setString("phone", billingContact.phone());
+ addressCursor.setString("name", billingContact.contact().name());
+ addressCursor.setString("email", billingContact.contact().email());
+ addressCursor.setString("phone", billingContact.contact().phone());
toSlime(billingContact.address(), addressCursor);
}
@@ -550,24 +550,27 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
// Merge info from request with the existing info
Inspector insp = toSlime(request.getData()).get();
- TenantInfo mergedInfo = TenantInfo.EMPTY
+
+ TenantContact mergedContact = TenantContact.empty()
+ .withName(getString(insp.field("contactName"), oldInfo.contact().name()))
+ .withEmail(getString(insp.field("contactEmail"), oldInfo.contact().email()));
+
+ TenantInfo mergedInfo = TenantInfo.empty()
.withName(getString(insp.field("name"), oldInfo.name()))
- .withEmail(getString(insp.field("email"), oldInfo.email()))
- .withWebsite(getString(insp.field("website"), oldInfo.website()))
- .withInvoiceEmail(getString(insp.field("invoiceEmail"), oldInfo.invoiceEmail()))
- .withContactName(getString(insp.field("contactName"), oldInfo.contactName()))
- .withContactEmail(getString(insp.field("contactEmail"), oldInfo.contactEmail()))
+ .withEmail(getString(insp.field("email"), oldInfo.email()))
+ .withWebsite(getString(insp.field("website"), oldInfo.website()))
+ .withContact(mergedContact)
.withAddress(updateTenantInfoAddress(insp.field("address"), oldInfo.address()))
- .withBillingContact(updateTenantInfoBillingContact(insp.field("billingContact"), oldInfo.billingContact()));
+ .withBilling(updateTenantInfoBillingContact(insp.field("billingContact"), oldInfo.billingContact()));
// Assert that we have a valid tenant info
- if (mergedInfo.contactName().isBlank()) {
+ if (mergedInfo.contact().name().isBlank()) {
throw new IllegalArgumentException("'contactName' cannot be empty");
}
- if (mergedInfo.contactEmail().isBlank()) {
+ if (mergedInfo.contact().email().isBlank()) {
throw new IllegalArgumentException("'contactEmail' cannot be empty");
}
- if (! mergedInfo.contactEmail().contains("@")) {
+ if (! mergedInfo.contact().email().contains("@")) {
// email address validation is notoriously hard - we should probably just try to send a
// verification email to this address. checking for @ is a simple best-effort.
throw new IllegalArgumentException("'contactEmail' needs to be an email address");
@@ -589,20 +592,20 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
return new MessageResponse("Tenant info updated");
}
- private TenantInfoAddress updateTenantInfoAddress(Inspector insp, TenantInfoAddress oldAddress) {
+ private TenantAddress updateTenantInfoAddress(Inspector insp, TenantAddress oldAddress) {
if (!insp.valid()) return oldAddress;
- TenantInfoAddress address = TenantInfoAddress.EMPTY
+ TenantAddress address = TenantAddress.empty()
.withCountry(getString(insp.field("country"), oldAddress.country()))
- .withStateRegionProvince(getString(insp.field("stateRegionProvince"), oldAddress.stateRegionProvince()))
+ .withRegion(getString(insp.field("stateRegionProvince"), oldAddress.region()))
.withCity(getString(insp.field("city"), oldAddress.city()))
- .withPostalCodeOrZip(getString(insp.field("postalCodeOrZip"), oldAddress.postalCodeOrZip()))
- .withAddressLines(getString(insp.field("addressLines"), oldAddress.addressLines()));
+ .withCode(getString(insp.field("postalCodeOrZip"), oldAddress.code()))
+ .withAddress(getString(insp.field("addressLines"), oldAddress.address()));
- List<String> fields = List.of(address.addressLines(),
- address.postalCodeOrZip(),
+ List<String> fields = List.of(address.address(),
+ address.code(),
address.country(),
address.city(),
- address.stateRegionProvince());
+ address.region());
if (fields.stream().allMatch(String::isBlank) || fields.stream().noneMatch(String::isBlank))
return address;
@@ -610,7 +613,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
throw new IllegalArgumentException("All address fields must be set");
}
- private TenantInfoBillingContact updateTenantInfoBillingContact(Inspector insp, TenantInfoBillingContact oldContact) {
+ private TenantContact updateTenantInfoContact(Inspector insp, TenantContact oldContact) {
if (!insp.valid()) return oldContact;
String email = getString(insp.field("email"), oldContact.email());
@@ -621,10 +624,17 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
throw new IllegalArgumentException("'email' needs to be an email address");
}
- return TenantInfoBillingContact.EMPTY
+ return TenantContact.empty()
.withName(getString(insp.field("name"), oldContact.name()))
- .withEmail(email)
- .withPhone(getString(insp.field("phone"), oldContact.phone()))
+ .withEmail(getString(insp.field("email"), oldContact.email()))
+ .withPhone(getString(insp.field("phone"), oldContact.phone()));
+ }
+
+ private TenantInfoBillingContact updateTenantInfoBillingContact(Inspector insp, TenantInfoBillingContact oldContact) {
+ if (!insp.valid()) return oldContact;
+
+ return TenantInfoBillingContact.empty()
+ .withContact(updateTenantInfoContact(insp, oldContact.contact()))
.withAddress(updateTenantInfoAddress(insp.field("address"), oldContact.address()));
}
@@ -647,6 +657,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
.forEach(notification -> toSlime(notificationsArray.addObject(), notification, includeTenantFieldInResponse, excludeMessages));
return new SlimeJsonResponse(slime);
}
+
private static <T> boolean propertyEquals(HttpRequest request, String property, Function<String, T> mapper, Optional<T> value) {
return Optional.ofNullable(request.getProperty(property))
.map(propertyValue -> value.isPresent() && mapper.apply(propertyValue).equals(value.get()))
@@ -1851,8 +1862,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
User user = getAttribute(request, User.ATTRIBUTE_NAME, User.class);
TenantInfo info = controller.tenants().require(tenant, CloudTenant.class)
.info()
- .withContactName(user.name())
- .withContactEmail(user.email());
+ .withContact(TenantContact.from(user.name(), user.email()));
// Store changes
controller.tenants().lockOrThrow(tenant, LockedTenant.Cloud.class, lockedTenant -> {
lockedTenant = lockedTenant.withInfo(info);
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java
index 0b986667911..898ef957f32 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java
@@ -16,8 +16,9 @@ import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant;
import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo;
+import com.yahoo.vespa.hosted.controller.tenant.TenantAddress;
+import com.yahoo.vespa.hosted.controller.tenant.TenantContact;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfo;
-import com.yahoo.vespa.hosted.controller.tenant.TenantInfoAddress;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfoBillingContact;
import org.junit.Test;
@@ -97,7 +98,7 @@ public class TenantSerializerTest {
Optional.of(new SimplePrincipal("foobar-user")),
ImmutableBiMap.of(publicKey, new SimplePrincipal("joe"),
otherPublicKey, new SimplePrincipal("jane")),
- TenantInfo.EMPTY,
+ TenantInfo.empty(),
List.of(),
Optional.empty()
);
@@ -116,7 +117,7 @@ public class TenantSerializerTest {
Optional.of(new SimplePrincipal("foobar-user")),
ImmutableBiMap.of(publicKey, new SimplePrincipal("joe"),
otherPublicKey, new SimplePrincipal("jane")),
- TenantInfo.EMPTY.withName("Ofni Tnanet"),
+ TenantInfo.empty().withName("Ofni Tnanet"),
List.of(
new TenantSecretStore("ss1", "123", "role1"),
new TenantSecretStore("ss2", "124", "role2")
@@ -131,39 +132,35 @@ public class TenantSerializerTest {
@Test
public void cloud_tenant_with_tenant_info_partial() {
- TenantInfo partialInfo = TenantInfo.EMPTY
- .withAddress(TenantInfoAddress.EMPTY.withCity("Hønefoss"));
+ TenantInfo partialInfo = TenantInfo.empty()
+ .withAddress(TenantAddress.empty().withCity("Hønefoss"));
Slime slime = new Slime();
Cursor parentObject = slime.setObject();
serializer.toSlime(partialInfo, parentObject);
- assertEquals("{\"info\":{\"name\":\"\",\"email\":\"\",\"website\":\"\",\"invoiceEmail\":\"\",\"contactName\":\"\",\"contactEmail\":\"\",\"address\":{\"addressLines\":\"\",\"postalCodeOrZip\":\"\",\"city\":\"Hønefoss\",\"stateRegionProvince\":\"\",\"country\":\"\"}}}", slime.toString());
+ assertEquals("{\"info\":{\"name\":\"\",\"email\":\"\",\"website\":\"\",\"contactName\":\"\",\"contactEmail\":\"\",\"address\":{\"addressLines\":\"\",\"postalCodeOrZip\":\"\",\"city\":\"Hønefoss\",\"stateRegionProvince\":\"\",\"country\":\"\"}}}", slime.toString());
}
@Test
public void cloud_tenant_with_tenant_info_full() {
- TenantInfo fullInfo = TenantInfo.EMPTY
+ TenantInfo fullInfo = TenantInfo.empty()
.withName("My Company")
.withEmail("email@mycomp.any")
.withWebsite("http://mycomp.any")
- .withContactEmail("ceo@mycomp.any")
- .withContactName("My Name")
- .withInvoiceEmail("invoice@mycomp.any")
- .withAddress(TenantInfoAddress.EMPTY
+ .withContact(TenantContact.from("My Name", "ceo@mycomp.any"))
+ .withAddress(TenantAddress.empty()
.withCity("Hønefoss")
- .withAddressLines("Riperbakken 2")
+ .withAddress("Riperbakken 2")
.withCountry("Norway")
- .withPostalCodeOrZip("3510")
- .withStateRegionProvince("Viken"))
- .withBillingContact(TenantInfoBillingContact.EMPTY
- .withEmail("thomas@sodor.com")
- .withName("Thomas The Tank Engine")
- .withPhone("NA")
- .withAddress(TenantInfoAddress.EMPTY
+ .withCode("3510")
+ .withRegion("Viken"))
+ .withBilling(TenantInfoBillingContact.empty()
+ .withContact(TenantContact.from("Thomas The Tank Engine", "thomas@sodor.com", "NA"))
+ .withAddress(TenantAddress.empty()
.withCity("Suddery")
.withCountry("Sodor")
- .withAddressLines("Central Station")
- .withStateRegionProvince("Irish Sea")));
+ .withAddress("Central Station")
+ .withRegion("Irish Sea")));
Slime slime = new Slime();
Cursor parentCursor = slime.setObject();
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 fa1483fd90f..3c693bf4991 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
@@ -97,11 +97,11 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest {
tester.assertResponse(postPartial, "{\"message\":\"Tenant info updated\"}", 200);
// Read back the updated info
- tester.assertResponse(infoRequest, "{\"name\":\"\",\"email\":\"\",\"website\":\"\",\"invoiceEmail\":\"\",\"contactName\":\"newName\",\"contactEmail\":\"foo@example.com\",\"billingContact\":{\"name\":\"billingName\",\"email\":\"\",\"phone\":\"\"}}", 200);
+ tester.assertResponse(infoRequest, "{\"name\":\"\",\"email\":\"\",\"website\":\"\",\"contactName\":\"newName\",\"contactEmail\":\"foo@example.com\",\"billingContact\":{\"name\":\"billingName\",\"email\":\"\",\"phone\":\"\"}}", 200);
String fullAddress = "{\"addressLines\":\"addressLines\",\"postalCodeOrZip\":\"postalCodeOrZip\",\"city\":\"city\",\"stateRegionProvince\":\"stateRegionProvince\",\"country\":\"country\"}";
String fullBillingContact = "{\"name\":\"name\",\"email\":\"foo@example\",\"phone\":\"phone\",\"address\":" + fullAddress + "}";
- String fullInfo = "{\"name\":\"name\",\"email\":\"foo@example\",\"website\":\"https://yahoo.com\",\"invoiceEmail\":\"invoiceEmail\",\"contactName\":\"contactName\",\"contactEmail\":\"contact@example.com\",\"address\":" + fullAddress + ",\"billingContact\":" + fullBillingContact + "}";
+ String fullInfo = "{\"name\":\"name\",\"email\":\"foo@example\",\"website\":\"https://yahoo.com\",\"contactName\":\"contactName\",\"contactEmail\":\"contact@example.com\",\"address\":" + fullAddress + ",\"billingContact\":" + fullBillingContact + "}";
// Now set all fields
var postFull =
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/SignatureFilterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/SignatureFilterTest.java
index 7f588367819..15c7dbf73ab 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/SignatureFilterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/SignatureFilterTest.java
@@ -74,7 +74,7 @@ public class SignatureFilterTest {
LastLoginInfo.EMPTY,
Optional.empty(),
ImmutableBiMap.of(),
- TenantInfo.EMPTY,
+ TenantInfo.empty(),
List.of(),
Optional.empty()));
tester.curator().writeApplication(new Application(appId, tester.clock().instant()));
@@ -120,7 +120,7 @@ public class SignatureFilterTest {
LastLoginInfo.EMPTY,
Optional.empty(),
ImmutableBiMap.of(publicKey, () -> "user"),
- TenantInfo.EMPTY,
+ TenantInfo.empty(),
List.of(),
Optional.empty()));
verifySecurityContext(requestOf(signer.signed(request.copy(), Method.POST, () -> new ByteArrayInputStream(hiBytes)), hiBytes),
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-info-after-created.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-info-after-created.json
index 942b5c1db45..938037d74df 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-info-after-created.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/tenant-info-after-created.json
@@ -2,7 +2,6 @@
"name": "",
"email": "",
"website":"",
- "invoiceEmail":"",
"contactName": "administrator",
"contactEmail": "administrator@tenant"
} \ No newline at end of file