diff options
author | smorgrav <smorgrav@verizonmedia.com> | 2020-11-05 14:11:31 +0100 |
---|---|---|
committer | smorgrav <smorgrav@verizonmedia.com> | 2020-11-05 14:11:31 +0100 |
commit | e1232b322f9634e6dec40730254406e442cf05e5 (patch) | |
tree | 6febb6c5d4dbe2c679bf330ccda3184d7f74170a /controller-server | |
parent | b72f91cde801d4408db4869285d4e08f95325776 (diff) |
Move this to a PUT and complete the unit test
Diffstat (limited to 'controller-server')
2 files changed, 26 insertions, 11 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 128c6093913..7b1b0f2f36e 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 @@ -259,6 +259,7 @@ public class ApplicationApiHandler extends LoggingRequestHandler { private HttpResponse handlePUT(Path path, HttpRequest request) { if (path.matches("/application/v4/tenant/{tenant}")) return updateTenant(path.get("tenant"), request); + if (path.matches("/application/v4/tenant/{tenant}/info")) return updateTenantInfo(path.get("tenant"), request); if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/global-rotation/override")) return setGlobalRotationOverride(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), false, request); if (path.matches("/application/v4/tenant/{tenant}/application/{application}/environment/{environment}/region/{region}/instance/{instance}/global-rotation/override")) return setGlobalRotationOverride(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), false, request); return ErrorResponse.notFoundError("Nothing at " + path); @@ -266,7 +267,6 @@ public class ApplicationApiHandler extends LoggingRequestHandler { private HttpResponse handlePOST(Path path, HttpRequest request) { if (path.matches("/application/v4/tenant/{tenant}")) return createTenant(path.get("tenant"), request); - if (path.matches("/application/v4/tenant/{tenant}/info")) return updateTenantInfo(path.get("tenant"), request); if (path.matches("/application/v4/tenant/{tenant}/key")) return addDeveloperKey(path.get("tenant"), request); if (path.matches("/application/v4/tenant/{tenant}/application/{application}")) return createApplication(path.get("tenant"), path.get("application"), request); if (path.matches("/application/v4/tenant/{tenant}/application/{application}/deploying/platform")) return deployPlatform(path.get("tenant"), path.get("application"), "default", false, request); 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 2b738226485..06d6bfc5321 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 @@ -6,7 +6,6 @@ import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.TenantName; import com.yahoo.vespa.flags.Flags; import com.yahoo.vespa.flags.InMemoryFlagSource; -import com.yahoo.vespa.hosted.controller.api.integration.user.User; import com.yahoo.vespa.hosted.controller.ControllerTester; import com.yahoo.vespa.hosted.controller.api.role.Role; import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId; @@ -24,6 +23,7 @@ import java.util.Collections; import java.util.Set; import static com.yahoo.application.container.handler.Request.Method.GET; +import static com.yahoo.application.container.handler.Request.Method.PUT; import static com.yahoo.application.container.handler.Request.Method.POST; import static com.yahoo.vespa.hosted.controller.restapi.application.ApplicationApiTest.createApplicationSubmissionData; @@ -36,7 +36,6 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest { private static final TenantName tenantName = TenantName.from("scoober"); private static final ApplicationName applicationName = ApplicationName.from("albums"); - private static final User developerUser = new User("developer", "Joe Developer", "", ""); @Before public void before() { @@ -63,20 +62,36 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest { } @Test - public void get_empty_tenant_info() { + public void tenant_info_workflow() { var infoRequest = request("/application/v4/tenant/scoober/info", GET) .roles(Set.of(Role.reader(tenantName))); tester.assertResponse(infoRequest, "{}", 200); - } - @Test - public void post_partial_tenant_info() { - var infoRequest = - request("/application/v4/tenant/scoober/info", POST) - .data("{\"name\":\"newName\", \"billingContact\":{\"name\":\"billingName\"}}") + String partialInfo = "{\"name\":\"newName\", \"billingContact\":{\"name\":\"billingName\"}}"; + + var postPartial = + request("/application/v4/tenant/scoober/info", PUT) + .data(partialInfo) .roles(Set.of(Role.administrator(tenantName))); - tester.assertResponse(infoRequest, "{}", 200); + tester.assertResponse(postPartial, "{\"message\":\"Tenant info updated\"}", 200); + + // Read back the updated info + tester.assertResponse(infoRequest, "{\"name\":\"newName\",\"email\":\"\",\"website\":\"\",\"invoiceEmail\":\"\",\"contactName\":\"\",\"contactEmail\":\"\",\"billingContact\":{\"name\":\"billingName\",\"email\":\"\",\"phone\":\"\"}}", 200); + + String fullAddress = "{\"addressLines\":\"addressLines\",\"postalCodeOrZip\":\"postalCodeOrZip\",\"city\":\"city\",\"stateRegionProvince\":\"stateRegionProvince\",\"country\":\"country\"}"; + String fullBillingContact = "{\"name\":\"name\",\"email\":\"email\",\"phone\":\"phone\",\"address\":" + fullAddress + "}"; + String fullInfo = "{\"name\":\"name\",\"email\":\"email\",\"website\":\"webSite\",\"invoiceEmail\":\"invoiceEmail\",\"contactName\":\"contactName\",\"contactEmail\":\"contanctEmail\",\"address\":" + fullAddress + ",\"billingContact\":" + fullBillingContact + "}"; + + // Now set all fields + var postFull = + request("/application/v4/tenant/scoober/info", PUT) + .data(fullInfo) + .roles(Set.of(Role.administrator(tenantName))); + tester.assertResponse(postFull, "{\"message\":\"Tenant info updated\"}", 200); + + // Now compare the updated info with the full info we sent + tester.assertResponse(infoRequest, fullInfo, 200); } private ApplicationPackageBuilder prodBuilder() { |