@Test
  public void testCreateAndGetApplication()
      throws ParseException, IllegalArgumentException, ClientProtocolException, IOException {
    // Define application attributes
    String friendlyName, voiceCallerIdLookup, rcmlUrl, kind;

    // Test create application via POST
    MultivaluedMap<String, String> applicationParams = new MultivaluedMapImpl();
    applicationParams.add("FriendlyName", friendlyName = "APPCreateGet");
    applicationParams.add("VoiceCallerIdLookup", voiceCallerIdLookup = "true");
    applicationParams.add("RcmlUrl", rcmlUrl = "/restcomm/rcmlurl/test");
    applicationParams.add("Kind", kind = "voice");
    JsonObject applicationJson =
        RestcommApplicationsTool.getInstance()
            .createApplication(
                deploymentUrl.toString(),
                adminAccountSid,
                adminUsername,
                adminAuthToken,
                applicationParams);
    Sid applicationSid = new Sid(applicationJson.get("sid").getAsString());

    // Test asserts via GET to a single application
    applicationJson =
        RestcommApplicationsTool.getInstance()
            .getApplication(
                deploymentUrl.toString(),
                adminUsername,
                adminAuthToken,
                adminAccountSid,
                applicationSid.toString());

    SimpleDateFormat df = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US);
    assertTrue(df.parse(applicationJson.get("date_created").getAsString()) != null);
    assertTrue(df.parse(applicationJson.get("date_updated").getAsString()) != null);
    assertTrue(applicationJson.get("friendly_name").getAsString().equals(friendlyName));
    assertTrue(applicationJson.get("account_sid").getAsString().equals(adminAccountSid));
    assertTrue(applicationJson.get("api_version").getAsString().equals("2012-04-24"));
    assertTrue(
        applicationJson.get("voice_caller_id_lookup").getAsString().equals(voiceCallerIdLookup));
    assertTrue(applicationJson.get("rcml_url").getAsString().equals(rcmlUrl));
    assertTrue(applicationJson.get("kind").getAsString().equals(kind));

    // Test asserts via GET to a application list
    JsonArray applicationsListJson =
        RestcommApplicationsTool.getInstance()
            .getApplications(
                deploymentUrl.toString(), adminUsername, adminAuthToken, adminAccountSid);
    applicationJson = applicationsListJson.get(0).getAsJsonObject();
    assertTrue(df.parse(applicationJson.get("date_created").getAsString()) != null);
    assertTrue(df.parse(applicationJson.get("date_updated").getAsString()) != null);
    assertTrue(applicationJson.get("friendly_name").getAsString().equals(friendlyName));
    assertTrue(applicationJson.get("account_sid").getAsString().equals(adminAccountSid));
    assertTrue(applicationJson.get("api_version").getAsString().equals("2012-04-24"));
    assertTrue(
        applicationJson.get("voice_caller_id_lookup").getAsString().equals(voiceCallerIdLookup));
    assertTrue(applicationJson.get("rcml_url").getAsString().equals(rcmlUrl));
    assertTrue(applicationJson.get("kind").getAsString().equals(kind));
  }
  @Test
  public void testDeleteApplication()
      throws IllegalArgumentException, ClientProtocolException, IOException {
    // Create application
    MultivaluedMap<String, String> applicationParams = new MultivaluedMapImpl();
    applicationParams.add("FriendlyName", "APPDelete");
    applicationParams.add("VoiceCallerIdLookup", "true");
    applicationParams.add("RcmlUrl", "/restcomm/rcmlurl/test");
    applicationParams.add("Kind", "voice");
    JsonObject applicationJson =
        RestcommApplicationsTool.getInstance()
            .createApplication(
                deploymentUrl.toString(),
                adminAccountSid,
                adminUsername,
                adminAuthToken,
                applicationParams);
    Sid applicationSid = new Sid(applicationJson.get("sid").getAsString());

    // Delete application
    RestcommApplicationsTool.getInstance()
        .deleteApplication(
            deploymentUrl.toString(),
            adminUsername,
            adminAuthToken,
            adminAccountSid,
            applicationSid.toString());

    // Check if it was removed
    applicationJson =
        RestcommApplicationsTool.getInstance()
            .getApplication(
                deploymentUrl.toString(),
                adminUsername,
                adminAuthToken,
                adminAccountSid,
                applicationSid.toString());

    assertTrue(applicationJson == null);
  }