# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

###############################################################################
# curl command tests for templeton
#
#

#use Yahoo::Miners::Test::PigSetup;

#PigSetup::setup();

#my $me = `whoami`;
#chomp $me;

$cfg = 
{
 'driver' => 'Curl',

 'groups' => 
 [

##=============================================================================================================
  {
   'name' => 'DB_OPS',
   'tests' => 
   [
    {
     #check if db created by UNAME_OTHER is visible for user UNAME
     'num' => 1,

     'setup' => [
                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_a',
                  'user_name' => ':UNAME_OTHER:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{"comment":"Hello there", "properties":{"a":"b"}}'],
                 }
                ],
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/',
     'user_name' => ':UNAME:',

     'format_header' => 'Content-Type: application/json',
     'json_field_substr_match' => {'databases' => 'hcatperms_a'},

     'status_code' => 200,
    },


    {

     #check if group id is set as per spec
     'num' => 2,
     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_b',
                  'user_name' => ':UNAME:',
                 },
                 {
                  'method' => 'PUT',
                  'post_options' => [
                               '{"permissions" : "rwxrwxrwx", 
                                  "group" : ":UGROUP:"
                                }'
                                            ],
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_b',
                  'user_name' => ':UNAME:',
                 },

                ],


     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_b',
     'user_name' => ':UNAME:',
     'format_header' => 'Content-Type: application/json',
     'json_field_substr_match' => {'location_perms' => 'rwxrwxrwx', 'location_group' => ':UGROUP:'},
     'status_code' => 200,
    },
    {

     #check if group id is set as per spec
     'num' => 3,
     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_c',
                  'user_name' => ':UNAME:',
                 },
                 {
                  'method' => 'PUT',
                  'post_options' => [
                               '{"permissions" : "rwxr-x---", 
                                  "group" : ":UGROUP:"
                                }'
                                    ],
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_c',
                  'user_name' => ':UNAME:',
                 },

                ],


     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_c',
     'user_name' => ':UNAME:',
     'format_header' => 'Content-Type: application/json',
     'json_field_substr_match' => {'location_perms' => 'rwxr-x---', 'location_group' => ':UGROUP:'},
     'status_code' => 200,
    },

    {

     #check if user belonging to same group is able to access
     'num' => 4,

     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_d',
                  'user_name' => ':UNAME:',
                 },

                 {
                  'method' => 'PUT',
                  'post_options' => [
                                     '{
                                     "permissions" : "rwxr-x---", 
                                     "group" : ":UGROUP:"
                                      }'
                                    ],
               
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_d',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                 }
                ],



     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_d',
     'user_name' => ':UNAME_GROUP:',
     'format_header' => 'Content-Type: application/json',
     'json_field_substr_match' => {'location_perms' => 'rwxr-x---', 'location_group' => ':UGROUP:'},
     'status_code' => 200,
    },

    {

     #check default db permissions 
     #the default group is currently the group of parent dir

     'num' => 5,

     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_e',
                  'user_name' => ':UNAME:',
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_e',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{}']

                 }
                ],



     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_e',
     'user_name' => ':UNAME:',
     'format_header' => 'Content-Type: application/json',
     'json_field_substr_match' => {'location_perms' => 'rwx------'},
     'status_code' => 200,
    },

    {

     #check if user can delete db
     'num' => 6,

     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_f',
                  'user_name' => ':UNAME:',
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_f',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{}']

                 }
                ],



     'method' => 'DELETE',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_f',
     'user_name' => ':UNAME:',
     'format_header' => 'Content-Type: application/json',
     'status_code' => 200,
    },

    {

     #check if user belonging to group can delete table 
     'num' => 7,

     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwxrwx---", "group" : ":UGROUP:" }']

                 }
                ],



     'method' => 'DELETE',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
     'user_name' => ':UNAME_GROUP:',
     'format_header' => 'Content-Type: application/json',
     'status_code' => 200,
    },
    {

     #check if user belonging to group is unable to delete table  
     'num' => 8,
     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwx------", "group" : ":UGROUP:" }']

                 }
                ],


     'method' => 'DELETE',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
     'user_name' => ':UNAME_GROUP:',
     'format_header' => 'Content-Type: application/json',
     'status_code' => 500,
    },

    {

     #check if user belonging to 'other' is unable to delete table  
     'num' => 10,
     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwx------", "group" : ":UGROUP:" }']

                 }
                ],


     'method' => 'DELETE',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
     'user_name' => ':UNAME_OTHER:',
     'format_header' => 'Content-Type: application/json',
     'status_code' => 500,
    },


    {

     #check if user is able to create table
     'num' => 11,
     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwx------" }']

                 },

                ],


      'method' => 'PUT',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/permstable_:TNUM:',
      'format_header' => 'Content-Type: application/json', 
      'post_options' => ['{
              "columns": [
                      { "name" : "i", "type" : "int" },
                      { "name" : "j", "type" : "bigint", "comment" : "some comment" }
              ], 
  	          "format" : {  "storedAs" : "rcfile"} 
          }'],
      'user_name' => ':UNAME:',
      'status_code' => 200,

    },

    {

     #check if group user is able to create table
     'num' => 12,
     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwxrwx---" , "group" : ":UGROUP:"} ']

                 },

                ],


      'method' => 'PUT',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/permstable_:TNUM:',
      'format_header' => 'Content-Type: application/json', 
      'post_options' => ['{
              "columns": [
                      { "name" : "i", "type" : "int" },
                      { "name" : "j", "type" : "bigint", "comment" : "some comment" }
              ], 
  	          "format" : {  "storedAs" : "rcfile"} 
          }'],
      'user_name' => ':UNAME_GROUP:',
      'status_code' => 200,

    },

    {

     #check if group user is unable to create table without permissions
     'num' => 13,
     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwx------", "group" : ":UGROUP:" }']

                 },

                ],

     
      'method' => 'PUT',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/permstable_:TNUM:',
      'format_header' => 'Content-Type: application/json', 
      'post_options' => ['{
              "columns": [
                      { "name" : "i", "type" : "int" },
                      { "name" : "j", "type" : "bigint", "comment" : "some comment" }
              ], 
  	          "format" : {  "storedAs" : "rcfile"} 
          }'],
      'user_name' => ':UNAME_GROUP:',
      'status_code' => 500,

    },

    {

     #check if other user is unable to create table without permissions
     'num' => 14,
     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwxrwx---", "group" : ":UGROUP:" }'],
                  'status_code' => 200,
                 },

                ],

     
      'method' => 'PUT',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/permstable_:TNUM:',
      'format_header' => 'Content-Type: application/json', 
      'post_options' => ['{
              "columns": [
                      { "name" : "i", "type" : "int" },
                      { "name" : "j", "type" : "bigint", "comment" : "some comment" }
              ], 
  	          "format" : {  "storedAs" : "rcfile"} 
          }'],
      'user_name' => ':UNAME_OTHER:',
      'status_code' => 500,

    },

    {

     #show table allowed for user
     'num' => 15,
     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwxrwx---", "group" : ":UGROUP:" }'],
                  'status_code' => 200,
                 },
                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{
              "columns": [
                      { "name" : "i", "type" : "int" }
              ], 
  	          "format" : {  "storedAs" : "rcfile"} 
          }'],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     
      'method' => 'GET',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/',
      'format_header' => 'Content-Type: application/json', 
      'user_name' => ':UNAME:',
      'status_code' => 200,
     'json_field_substr_match' => {'tables' => 'permstable_:TNUM:'},


    },


    {

     #show table allowed for group
     'num' => 16,
     'setup' => [
                 {
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwxrwx---", "group" : ":UGROUP:" }'],
                  'status_code' => 200,
                 },
                 {
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{
              "columns": [
                      { "name" : "i", "type" : "int" }
              ], 
  	          "format" : {  "storedAs" : "rcfile"} 
          }'],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     
      'method' => 'GET',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/',
      'format_header' => 'Content-Type: application/json', 
      'user_name' => ':UNAME_GROUP:',
      'status_code' => 200,
     'json_field_substr_match' => {'tables' => 'permstable_:TNUM:'},


    },

    {

     #show table not allowed for group user without permissions
     'num' => 17,
     'setup' => [
                 { #drop db cascade
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  #create db
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwx------", "group" : ":UGROUP:" }'],
                  'status_code' => 200,
                 },
                 {
                  #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{
              "columns": [
                      { "name" : "i", "type" : "int" }
              ], 
  	          "format" : {  "storedAs" : "rcfile"} 
          }'],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     
      'method' => 'GET',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/',
      'format_header' => 'Content-Type: application/json', 
      'user_name' => ':UNAME_GROUP:',
      'status_code' => 500,


    },

    {
     #show table not allowed for other  user without permissions
     'num' => 18,
     'setup' => [
                 { #drop db cascade
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  #create db
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwx------", "group" : ":UGROUP:" }'],
                  'status_code' => 200,
                 },
                 {
                  #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{
              "columns": [
                      { "name" : "i", "type" : "int" }
              ], 
  	          "format" : {  "storedAs" : "rcfile"} 
          }'],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     
      'method' => 'GET',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/',
      'format_header' => 'Content-Type: application/json', 
      'user_name' => ':UNAME_OTHER:',
      'status_code' => 500,
     'json_field_substr_match' => {'error' => 'unable to show tables'},


    },


    {

     #describe db - by user
     'num' => 19,
     'setup' => [
                 { #drop db cascade
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  #create db
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwxrwx---" }'],
                  'status_code' => 200,
                 },

                ],

     
      'method' => 'GET',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
      'format_header' => 'Content-Type: application/json', 
      'user_name' => ':UNAME:',
      'status_code' => 200,
     'json_field_substr_match' => {'database' => 'hcatperms_:TNUM:', 
                                   'location' => 'hcatperms_:TNUM:'},


    },

    {

     #describe db - by group user
     'num' => 20,
     'setup' => [
                 { #drop db cascade
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  #create db
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwxrwx---", "group" : ":UGROUP:" }'],
                  'status_code' => 200,
                 },

                ],

     
      'method' => 'GET',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
      'format_header' => 'Content-Type: application/json', 
      'user_name' => ':UNAME_GROUP:',
      'status_code' => 200,
     'json_field_substr_match' => {'database' => 'hcatperms_:TNUM:', 
                                   'location' => 'hcatperms_:TNUM:'},


    },

    {

     #describe db - by group user without permissions
     'num' => 21,
     'setup' => [
                 { #drop db cascade
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  #create db
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwx------", "group" : ":UGROUP:" }'],
                  'status_code' => 200,
                 },

                ],

     
      'method' => 'GET',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
      'format_header' => 'Content-Type: application/json', 
      'user_name' => ':UNAME_GROUP:',
      'status_code' => 500,

    },

    {

     #describe db - by other user without permissions
     'num' => 22,
     'setup' => [
                 { #drop db cascade
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:?ifExists=true&option=cascade',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },

                 {
                  #create db
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
                  'user_name' => ':UNAME:',
                  'format_header' => 'Content-Type: application/json',
                  'post_options' => ['{ "permissions" : "rwx------", "group" : ":UGROUP:" }'],
                  'status_code' => 200,
                 },

                ],

     
      'method' => 'GET',
      'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:',
      'format_header' => 'Content-Type: application/json', 
      'user_name' => ':UNAME_OTHER:',
      'status_code' => 500,

    },

   ]
  },

##=============================================================================================================

  {
   'name' => 'TABLE_OPS',
   'tests' => 
   [
    {
     #test if the permissions and group for table are set correctly 
     'num' => 1,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],"format" : {  "storedAs" : "rcfile"},
                          "permissions" : "rwxr-xr-x", "group" : ":UGROUP:" }'],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?format=extended',
     'format_header' => 'Content-Type: application/json', 
     'user_name' => ':UNAME:',
     'status_code' => 200,
     'json_field_substr_match' => {'location_perms' => 'rwxr-xr-x', 'location_group' => ':UGROUP:'},

    },

    {
     #check default permissions 
     #the default group is currently the group of parent dir
     'num' => 2,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],"format" : {  "storedAs" : "rcfile"} }'],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?format=extended',
     'format_header' => 'Content-Type: application/json', 
     'user_name' => ':UNAME:',
     'status_code' => 200,
     'json_field_substr_match' => {'location_perms' => 'rwx------', 'location_owner' => ':UNAME:'},

    },

    {
     #alter table permissions for user
     'num' => 3,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],"format" : {  "storedAs" : "rcfile"} }'],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     #alter table add column j
     'method' => 'PUT',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:/column/j',
     'format_header' => 'Content-Type: application/json', 
     'post_options' => ['{"type": "string", "comment": "The 2nd col"}'],
     'user_name' => ':UNAME:',
     'status_code' => 200,
    },

    {
     #alter table for group user - with permissions
     'num' => 4,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],
                          "format" : {  "storedAs" : "rcfile"}, 
                          "permissions" : "rwxrwxr-x", "group" : ":UGROUP:" }' ],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     #alter table add column j
     'method' => 'PUT',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:/column/j',
     'format_header' => 'Content-Type: application/json', 
     'post_options' => ['{"type": "string", "comment": "The 2nd col"}'],
     'user_name' => ':UNAME_GROUP:',
     'status_code' => 200,
    },

    {
     #alter table for group user -without permissions
     'num' => 5,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],
                          "format" : {  "storedAs" : "rcfile"}, 
                          "permissions" : "rwxr-xr-x", "group" : ":UGROUP:" }' ],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     #alter table add column j
     'method' => 'PUT',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:/column/j',
     'format_header' => 'Content-Type: application/json', 
     'post_options' => ['{"type": "string", "comment": "The 2nd col"}'],
     'user_name' => ':UNAME_GROUP:',
     'status_code' => 500,
    },

    {
     #alter table for other user -without permissions
     'num' => 6,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],
                          "format" : {  "storedAs" : "rcfile"}, 
                          "permissions" : "rwxr-xr-x", "group" : ":UGROUP:" }' ],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     #alter table add column j
     'method' => 'PUT',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:/column/j',
     'format_header' => 'Content-Type: application/json', 
     'post_options' => ['{"type": "string", "comment": "The 2nd col"}'],
     'user_name' => ':UNAME_OTHER:',
     'status_code' => 500,
    },

    {
     #drop table by user
     'num' => 7,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],
                          "format" : {  "storedAs" : "rcfile"}, 
                          "permissions" : "rwxr-xr-x", "group" : ":UGROUP:" }' ],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

                   #drop table
     'method' => 'DELETE',
     'format_header' => 'Content-Type: application/json',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
     'user_name' => ':UNAME:',
     'status_code' => 200,
    },

    {
     #drop table by group user with permissions
     'num' => 8,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],
                          "format" : {  "storedAs" : "rcfile"}, 
                          "permissions" : "rwxrwx---", "group" : ":UGROUP:" }' ],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

                   #drop table
     'method' => 'DELETE',
     'format_header' => 'Content-Type: application/json',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
     'user_name' => ':UNAME_GROUP:',
     'status_code' => 200,
    },

    {
     #drop table by group user without permissions
     'num' => 9,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],
                          "format" : {  "storedAs" : "rcfile"}, 
                          "permissions" : "rwx------", "group" : ":UGROUP:" }' ],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

                   #drop table
     'method' => 'DELETE',
     'format_header' => 'Content-Type: application/json',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
     'user_name' => ':UNAME_GROUP:',
     'status_code' => 500,
    },

    {
     #drop table by other user without permissions
     'num' => 10,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],
                          "format" : {  "storedAs" : "rcfile"}, 
                          "permissions" : "rwx------", "group" : ":UGROUP:" }' ],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

                   #drop table
     'method' => 'DELETE',
     'format_header' => 'Content-Type: application/json',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
     'user_name' => ':UNAME_OTHER:',
     'status_code' => 500,
    },


    {
     #show table allowed for user
     'num' => 11,
     'setup' => [
                  {
                   'method' => 'DELETE',
                   'format_header' => 'Content-Type: application/json',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:?ifExists=true&option=cascade',
                   'user_name' => ':UNAME:',
                   'status_code' => 200,
                  },

                  {
                   'method' => 'PUT',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:',
                   'user_name' => ':UNAME:',
                   'format_header' => 'Content-Type: application/json',
                   'post_options' => ['{ "permissions" : "rwxrwx---" }'],
                   'status_code' => 200,
                  },
                  {
                   'method' => 'PUT',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:/table/permstable_:TNUM:',
                   'format_header' => 'Content-Type: application/json', 
                   'post_options' => ['{
              "columns": [
                      { "name" : "i", "type" : "int" }
              ], 
  	          "format" : {  "storedAs" : "rcfile"} 
          }'],
                   'user_name' => ':UNAME:',
                   'status_code' => 200,
                  }

                 ],

     
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:/table/',
     'format_header' => 'Content-Type: application/json', 
     'user_name' => ':UNAME:',
     'status_code' => 200,
     'json_field_substr_match' => {'tables' => 'permstable_:TNUM:'},

    },

    {
     #show table allowed for group  user with permissions
     'num' => 12,
     'setup' => [
                  {
                   'method' => 'DELETE',
                   'format_header' => 'Content-Type: application/json',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:?ifExists=true&option=cascade',
                   'user_name' => ':UNAME:',
                   'status_code' => 200,
                  },

                  {
                   'method' => 'PUT',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:',
                   'user_name' => ':UNAME:',
                   'format_header' => 'Content-Type: application/json',
                   'post_options' => ['{ "permissions" : "rwxrwx---",  "group" : ":UGROUP:" }'],
                   'status_code' => 200,
                  },
                  {
                   'method' => 'PUT',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:/table/permstable_:TNUM:',
                   'format_header' => 'Content-Type: application/json', 
                   'post_options' => ['{
                        "columns": [ { "name" : "i", "type" : "int" }], "permissions" : "rwxrwx---", "group" : ":UGROUP:" }
  	                  "format" : {  "storedAs" : "rcfile"} 
                    }'],
                   'user_name' => ':UNAME:',
                   'status_code' => 200,
                  }

                 ],

     
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:/table/',
     'format_header' => 'Content-Type: application/json', 
     'user_name' => ':UNAME_GROUP:',
     'status_code' => 200,
     'json_field_substr_match' => {'tables' => 'permstable_:TNUM:'},

    },

    {
     #show table not allowed for group user without permissions
     'num' => 13,
     'ignore' => 'HIVE-3009',
     'setup' => [
                  {
                   'method' => 'DELETE',
                   'format_header' => 'Content-Type: application/json',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:?ifExists=true&option=cascade',
                   'user_name' => ':UNAME:',
                   'status_code' => 200,
                  },

                  {
                   'method' => 'PUT',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:',
                   'user_name' => ':UNAME:',
                   'format_header' => 'Content-Type: application/json',
                   'post_options' => ['{ "permissions" : "rwxrwx---" }'],
                   'status_code' => 200,
                  },
                  {
                   'method' => 'PUT',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:/table/permstable_:TNUM:',
                   'format_header' => 'Content-Type: application/json', 
                   'post_options' => ['{
                        "columns": [ { "name" : "i", "type" : "int" }], "permissions" : "rwx------", "group" : ":UGROUP:" }
  	                  "format" : {  "storedAs" : "rcfile"} 
                    }'],
                   'user_name' => ':UNAME:',
                   'status_code' => 200,
                  }

                 ],

     
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:/table/',
     'format_header' => 'Content-Type: application/json', 
     'user_name' => ':UNAME_GROUP:',
     'status_code' => 500,
     'json_field_substr_match' => {'error' => 'unable to show tables'},

    },

    {
     #show table not allowed for other user without permissions
     'num' => 14,
     'ignore' => 'HIVE-3009',
     'setup' => [
                  {
                   'method' => 'DELETE',
                   'format_header' => 'Content-Type: application/json',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:?ifExists=true&option=cascade',
                   'user_name' => ':UNAME:',
                   'status_code' => 200,
                  },

                  {
                   'method' => 'PUT',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:',
                   'user_name' => ':UNAME:',
                   'format_header' => 'Content-Type: application/json',
                   'post_options' => ['{ "permissions" : "rwxrwxrwx" }'],
                   'status_code' => 200,
                  },
                  {
                   'method' => 'PUT',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:/table/permstable_:TNUM:',
                   'format_header' => 'Content-Type: application/json', 
                   'post_options' => ['{
                        "columns": [ { "name" : "i", "type" : "int" }], "permissions" : "rwx------", "group" : ":UGROUP:" }
  	                  "format" : {  "storedAs" : "rcfile"} 
                    }'],
                   'user_name' => ':UNAME:',
                   'status_code' => 200,
                  }

                 ],

     
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:/table/',
     'format_header' => 'Content-Type: application/json', 
     'user_name' => ':UNAME_OTHER:',
     'status_code' => 500,
     'json_field_substr_match' => {'error' => 'unable to show tables'},

    },

    {
     #show table not allowed for other user without permissions
     'num' => 15,
     'ignore' => 'see HIVE-3009',
     'setup' => [
                  {
                   'method' => 'DELETE',
                   'format_header' => 'Content-Type: application/json',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:?ifExists=true&option=cascade',
                   'user_name' => ':UNAME:',
                   'status_code' => 200,
                  },

                  {
                   'method' => 'PUT',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:',
                   'user_name' => ':UNAME:',
                   'format_header' => 'Content-Type: application/json',
                   'post_options' => ['{ "permissions" : "rwxrwxrwx" }'],
                   'status_code' => 200,
                  },
                  {
                   'method' => 'PUT',
                   'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:/table/permstable_:TNUM:',
                   'format_header' => 'Content-Type: application/json', 
                   'post_options' => ['{
                        "columns": [ { "name" : "i", "type" : "int" }], "permissions" : "rwx------", "group" : ":UGROUP:" }
  	                  "format" : {  "storedAs" : "rcfile"} 
                    }'],
                   'user_name' => ':UNAME:',
                   'status_code' => 200,
                  }

                 ],

     
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/tabpermsdb:TNUM:/table/',
     'format_header' => 'Content-Type: application/json', 
     'user_name' => ':UNAME_OTHER:',
     'status_code' => 500,
     'json_field_substr_match' => {'error' => 'unable to show tables'},

    },

    {
     #describe table test for user done as part of permissions check test
     #describe table by group user
     'num' => 16,
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],"format" : {  "storedAs" : "rcfile"},
                          "permissions" : "rwxr-x---", "group" : ":UGROUP:" }'],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?format=extended',
     'format_header' => 'Content-Type: application/json', 
     'user_name' => ':UNAME_GROUP:',
     'status_code' => 200,
     'json_field_substr_match' => {'location_perms' => 'rwxr-x---', 'location_group' => ':UGROUP:'},

    },

    {
     #describe extended, table by group user without permission
     'num' => 17,
     'ignore' => 'see HIVE-3009',
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],"format" : {  "storedAs" : "rcfile"},
                          "permissions" : "rwx------", "group" : ":UGROUP:" }'],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?format=extended',
     'format_header' => 'Content-Type: application/json', 
     'user_name' => ':UNAME_GROUP:',
     'status_code' => 500,

    },

    {
     #describe extended, table by other user without permission
     'num' => 18,
     'ignore' => 'see HIVE-3009',
     'setup' => [
                 {              #drop table
                  'method' => 'DELETE',
                  'format_header' => 'Content-Type: application/json',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?ifExists=true',
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 },
                 {              #create table
                  'method' => 'PUT',
                  'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:',
                  'format_header' => 'Content-Type: application/json', 
                  'post_options' => ['{ "columns": [ { "name" : "i", "type" : "int" } ],"format" : {  "storedAs" : "rcfile"},
                          "permissions" : "rwx------", "group" : ":UGROUP:" }'],
                  'user_name' => ':UNAME:',
                  'status_code' => 200,
                 }

                ],

     
     'method' => 'GET',
     'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/permstable_:TNUM:?format=extended',
     'format_header' => 'Content-Type: application/json', 
     'user_name' => ':UNAME_OTHER:',
     'status_code' => 500,

    },



   ] }


 ]
},
  ;

