public void testReadProperties() throws IOException {
    // create tmp couchapp with default couchdb entries
    File tmpDir = generateCouchApp();
    File couchapprc = new File(tmpDir, ICouchAppUtil.COUCHAPPRC);
    InputStream inAnd = CouchAppUtilTest.class.getResourceAsStream("sample_couchapprc.json");
    FileOutputStream OutBurger = new FileOutputStream(couchapprc);
    IOUtils.copy(inAnd, OutBurger);

    Map<String, Object> properties = couchAppUtil.readProperties(tmpDir);
    assertNotNull(properties);
    assertEquals(4, properties.size());

    String couchAppName = (String) properties.get(ICouchAppUtil.PROP_COUCHAPP_NAME);
    assertNotNull(couchAppName);
    assertEquals("Name of your CouchApp", couchAppName);

    String couchAppDescription = (String) properties.get(ICouchAppUtil.PROP_COUCHAPP_DESCRIPTION);
    assertNotNull(couchAppDescription);
    assertEquals("CouchApp", couchAppDescription);

    String designDocId = (String) properties.get(ICouchAppUtil.PROP_DESIGN_DOC_ID);
    assertNotNull(designDocId);
    assertEquals("_design/" + tmpDir.getName(), designDocId);

    List<CouchDbServer> couchDbServers =
        (List<CouchDbServer>) properties.get(ICouchAppUtil.PROP_COUCHDB_SERVERS);
    assertNotNull("no list of CouchDbServers", couchDbServers);
    assertEquals("expected 2 entries", 2, couchDbServers.size());

    CouchDbServer first = couchDbServers.get(0);
    assertEquals("expected default as name of first server", "default", first.getName());
    assertEquals(
        "expected different URL of first server", "http://localhost:5984/mydb", first.getServer());

    CouchDbServer second = couchDbServers.get(1);
    assertEquals("expected prod as name of second server", "prod", second.getName());
    assertEquals(
        "expected different URL of second server",
        "http://localhost:5984/mydb_prod",
        second.getServer());
  }