cvmfs_test_name="Overwrite tarball with unaccessible directories owned by root"
cvmfs_test_autofs_on_startup=false
cvmfs_test_suites="quick"

CVMFS_TEST666_ROOT_DIR=

cleanup() {
  if [ "x$CVMFS_TEST666_ROOT_DIR" != "x" ]; then
    sudo rm -rf $CVMFS_TEST666_ROOT_DIR
  fi
}

cvmfs_run_test() {
  logfile=$1
  local scratch_dir=$(pwd)

  echo "*** create tarball with a mode 000 directory owned by root"
  mkdir tarball
  mkdir tarball/secret
  touch tarball/secret/file
  sudo chown root:root tarball/secret || return 1
  sudo chmod 000 tarball/secret || return 2
  CVMFS_TEST666_ROOT_DIR="$PWD/tarball"
  trap cleanup EXIT HUP INT TERM

  sudo tar cf tarball.tar tarball || return 5

  local dir=tar_dir
  local repo_dir=/cvmfs/$CVMFS_TEST_REPO

  echo "*** create a fresh repository named $CVMFS_TEST_REPO with user $CVMFS_TEST_USER"
  create_empty_repo $CVMFS_TEST_REPO $USER || return $?

  echo "*** ingesting the tarball in the directory $dir"
  cat tarball.tar | cvmfs_server ingest --base_dir $dir --tar_file - $CVMFS_TEST_REPO || return 10

  echo "*** check catalog and data integrity"
  check_repository $CVMFS_TEST_REPO -i || return 11

  echo "*** ingesting the tarball again in the directory $dir"
  cat tarball.tar | cvmfs_server ingest --base_dir $dir --tar_file - $CVMFS_TEST_REPO || return 20

  echo "*** check catalog and data integrity"
  check_repository $CVMFS_TEST_REPO -i || return 21

  ls -lah $repo_dir/$dir/tarball/secret && return 30
  sudo ls -lah $repo_dir/$dir/tarball/secret || return 31

  return 0
}
