public void addDescription(String path, String description)
      throws IOException, InvalidTokenException {
    Map<String, String[]> tags = new LinkedHashMap<>();
    tags.put("description", new String[] {description});
    Map<String, Object> body = new LinkedHashMap<>();
    body.put("tags", tags);

    String url;
    try {
      url =
          getUriBuilder()
              .setPath(API_PATH_PREFIX + "/mounts/primary/files/tags/add")
              .setParameter("path", path)
              .build()
              .toString();
    } catch (URISyntaxException e) {
      throw new IllegalStateException("Could not produce url.", e);
    }

    Request.Builder requestBuilder = getRequestBuilder(url);
    requestBuilder.post(
        RequestBody.create(
            MediaType.parse("application/json"), objectMapper.writeValueAsString(body)));

    try (Response response = getResponse(requestBuilder)) {
      int code = response.code();
      if ((code < 200 || code > 299) && code != 409) {
        throw new KoofrClientIOException(response);
      }
    }
  }
@Test
  public void testAddDescriptionError() {
    server.enqueue(new MockResponse().setResponseCode(500).setBody("Internal error"));

    Exception caughtExc =
        assertThrows(
            KoofrClientIOException.class,
            () -> client.addDescription("/path/to/folder", "Test description"));

    assertNotNull(caughtExc);
    assertEquals(
        "Got error code: 500 message: Server Error body: Internal error", caughtExc.getMessage());

    assertEquals(1, server.getRequestCount());
  }