private void updateContainersAndVerify(Account account, Container... containers) throws Exception {
    byte[] containersUpdateJson = AccountCollectionSerde.serializeContainersInJson(Arrays.asList(containers));
    String accountName = account.getName();
    HttpHeaders headers = new DefaultHttpHeaders();
    headers.add(RestUtils.Headers.TARGET_ACCOUNT_NAME, accountName);
    FullHttpRequest request =
        buildRequest(HttpMethod.POST, Operations.ACCOUNTS_CONTAINERS, headers, ByteBuffer.wrap(containersUpdateJson));
    ResponseParts responseParts = nettyClient.sendRequest(request, null, null).get();
    HttpResponse response = getHttpResponse(responseParts);
    assertEquals("Unexpected response status", HttpResponseStatus.OK, response.status());
    // verify regular response header
    assertEquals("Unexpected account id in response header", account.getId(),
        Short.parseShort(response.headers().get(RestUtils.Headers.TARGET_ACCOUNT_ID)));
    assertEquals("Unexpected content type in response header", RestUtils.JSON_CONTENT_TYPE,
        response.headers().get(RestUtils.Headers.CONTENT_TYPE));
    verifyTrackingHeaders(response);
    ByteBuffer content = getContent(responseParts.queue, HttpUtil.getContentLength(response));
    Collection<Container> outputContainers =
        AccountCollectionSerde.containersFromInputStreamInJson(new ByteArrayInputStream(content.array()),
            account.getId());

    for (Container container : outputContainers) {
      assertEquals("Update not reflected in AccountService", container,
          ACCOUNT_SERVICE.getContainerByName(accountName, container.getName()));
    }
  }
Call the {@code POST /accounts/updateContainers} API to update account metadata and verify that the update succeeded.
@param account the account in which to update containers.
@param containers the containers to update.
ambry-frontend/src/integration-test/java/com/github/ambry/frontend/FrontendIntegrationTest.java