#!/bin/bash
# Uploads a file, download it back, and check it isn't corrupted
# meta: proxy=true
# meta: preconfig=../../DPM-config

source davlib

REMOTE="${DPNS_HOME}/file.`date +%s`"
LOCAL="/tmp/dav-integrity.tmp"

# Create and get checksum
dd if="/dev/urandom" of="${LOCAL}" bs=1M count=1 &> /dev/null
MD5_ORIGINAL=`md5sum "${LOCAL}" | cut -d ' ' -f 1`
echo "File created with MD5 ${MD5_ORIGINAL}"

# Upload
PUT "${LOCAL}" "${REMOTE}"
if [ $HTTP_CODE -lt 200 ] || [ $HTTP_CODE -gt 299 ]; then
  cat ${DAVLIB_LOG} 
  TEST_FAILED "Could not upload the file"
fi

# Download back
rm -f "${LOCAL}"
GET "${REMOTE}" "${LOCAL}"
if [ $HTTP_CODE -lt 200 ] || [ $HTTP_CODE -gt 299 ]; then
  cat ${DAVLIB_LOG}
  TEST_FAILED "Could not get the file"
fi

# Get checksum
MD5_DOWNLOADED=`md5sum "${LOCAL}" | cut -d ' ' -f 1`
echo "File downloaded with MD5 ${MD5_DOWNLOADED}"
echo

# Remove
DELETE "${REMOTE}"
if [ $HTTP_CODE -lt 200 ] || [ $HTTP_CODE -gt 299 ]; then
  cat ${DAVLIB_LOG}
  echo "Could not clean the remote file!"
fi

# Check checksum
if [ "${MD5_ORIGINAL}" != "${MD5_DOWNLOADED}" ]; then
  TEST_FAILED "The checksums don't match. The file has been corrupted!!"
else
  TEST_PASSED "The checksums match"
fi

