@Test
public void testGetTableSchemaWithPtnColsApi() throws IOException {

  // Check the schema of a table with one field & no partition keys.
  StorageDescriptor sd = new StorageDescriptor(
      Lists.newArrayList(new FieldSchema("username", serdeConstants.STRING_TYPE_NAME, null)),
      "location", "org.apache.hadoop.mapred.TextInputFormat",
      "org.apache.hadoop.mapred.TextOutputFormat", false, -1, new SerDeInfo(),
      new ArrayList<String>(), new ArrayList<Order>(), new HashMap<String, String>());
  org.apache.hadoop.hive.metastore.api.Table apiTable =
      new org.apache.hadoop.hive.metastore.api.Table("test_tblname", "test_dbname", "test_owner",
          0, 0, 0, sd, new ArrayList<FieldSchema>(), new HashMap<String, String>(),
          "viewOriginalText", "viewExpandedText", TableType.EXTERNAL_TABLE.name());
  Table table = new Table(apiTable);
  List<HCatFieldSchema> expectedHCatSchema =
      Lists.newArrayList(new HCatFieldSchema("username", HCatFieldSchema.Type.STRING, null));
  Assert.assertEquals(new HCatSchema(expectedHCatSchema),
      HCatUtil.getTableSchemaWithPtnCols(table));
  // Add a partition key & ensure its reflected in the schema.
  List<FieldSchema> partitionKeys =
      Lists.newArrayList(new FieldSchema("dt", serdeConstants.STRING_TYPE_NAME, null));
  table.getTTable().setPartitionKeys(partitionKeys);
  expectedHCatSchema.add(new HCatFieldSchema("dt", HCatFieldSchema.Type.STRING, null));
  Assert.assertEquals(new HCatSchema(expectedHCatSchema),
      HCatUtil.getTableSchemaWithPtnCols(table));
}