1#!/bin/bash 2#better run in an empty folder 3 4GET=mega-get 5RM=mega-rm 6CD=mega-cd 7LCD=mega-lcd 8EXPORT=mega-export 9MKDIR=mega-mkdir 10IMPORT=mega-import 11ABSPWD=`pwd` 12 13if [ "x$VERBOSE" == "x" ]; then 14VERBOSE=0 15fi 16 17if [ "x$MEGACMDSHELL" != "x" ]; then 18GET="executeinMEGASHELL get" 19CMDSHELL=1 20fi 21 22 23function executeinMEGASHELL() 24{ 25 command=$1 26 shift; 27 echo lcd "$PWD" > /tmp/shellin 28 echo $command "$@" >> /tmp/shellin 29 #~ echo $command "$@" > /tmp/shellin 30 31 $MEGACMDSHELL < /tmp/shellin | sed "s#^.*\[K##g" | grep $MEGA_EMAIL -A 1000 | grep -v $MEGA_EMAIL 32} 33 34 35function clean_all() { 36 if [[ $(mega-whoami) != *"$MEGA_EMAIL" ]]; then 37 mega-logout || : 38 mega-login $MEGA_EMAIL $MEGA_PWD || exit -1 39 fi 40 $RM -rf "*" > /dev/null 41 $RM -rf "//bin/*" > /dev/null 42 if [ -e origin ]; then rm -r origin; fi 43 if [ -e megaDls ]; then rm -r megaDls; fi 44 if [ -e localDls ]; then rm -r localDls; fi 45} 46 47function clear_dls() { 48 rm -r megaDls/* 2>/dev/null 49 rm -r localDls/* 2>/dev/null 50} 51 52currentTest=1 53 54function compare_and_clear() { 55if [ "$VERBOSE" == "1" ]; then 56 echo "test $currentTest" 57 echo "megaDls:" 58 find megaDls 59 echo 60 echo "localDls:" 61 find localDls 62 echo 63fi 64 65if diff megaDls localDls 2>/dev/null >/dev/null; then 66 echo "test $currentTest succesful!" 67else 68 echo "test $currentTest failed!" 69 cd $ABSPWD 70 exit 1 71fi 72 73clear_dls 74currentTest=$((currentTest+1)) 75$CD / 76} 77 78function check_failed_and_clear() { 79if [ "$?" != "0" ]; then 80 echo "test $currentTest succesful!" 81else 82 echo "test $currentTest failed!" 83 cd $ABSPWD 84 exit 1 85fi 86 87clear_dls 88currentTest=$((currentTest+1)) 89$CD / 90} 91 92function initialize_contents() { 93 94if [[ $(mega-whoami) != *"$MEGA_EMAIL_AUX" ]]; then 95mega-logout || : 96mega-login $MEGA_EMAIL_AUX $MEGA_PWD_AUX || exit -1 97fi 98 99 100if [ "$(ls -A .)" ]; then 101 echo "initialization folder not empty!" 102 cd $ABSPWD 103 exit 1 104fi 105mkdir -p cloud0{1,2}/c0{1,2}s0{1,2} 106mkdir -p foreign/sub0{1,2} 107mkdir -p bin0{1,2}/c0{1,2}s0{1,2} 108for i in `find *`; do echo $i > $i/fileat`basename $i`.txt; done 109 110mega-put foreign / 111mega-share foreign -a --with=$MEGA_EMAIL 112URIFOREIGNEXPORTEDFOLDER=`$EXPORT foreign/sub01 -a | awk '{print $NF}'` 113URIFOREIGNEXPORTEDFILE=`$EXPORT foreign/sub02/fileatsub02.txt -a | awk '{print $NF}'` 114 115mega-logout 116 117mega-login $MEGA_EMAIL $MEGA_PWD 118mega-ipc -a $MEGA_EMAIL_AUX >/dev/null 119 120mega-put cloud0* / 121mega-put bin0* //bin 122URIEXPORTEDFOLDER=`$EXPORT cloud01/c01s01 -a | awk '{print $NF}'` 123URIEXPORTEDFILE=`$EXPORT cloud02/fileatcloud02.txt -a | awk '{print $NF}'` 124 125} 126 127if [ "$MEGA_EMAIL" == "" ] || [ "$MEGA_PWD" == "" ] || [ "$MEGA_EMAIL_AUX" == "" ] || [ "$MEGA_PWD_AUX" == "" ]; then 128 echo "You must define variables MEGA_EMAIL MEGA_PWD MEGA_EMAIL_AUX MEGA_PWD_AUX. WARNING: Use an empty account for $MEGA_EMAIL" 129 cd $ABSPWD 130 exit 1 131fi 132 133#INITIALIZATION 134clean_all 135mkdir origin 136pushd origin > /dev/null 137initialize_contents 138popd > /dev/null 139 140mkdir -p megaDls 141mkdir -p localDls 142 143ABSMEGADLFOLDER=$PWD/megaDls 144 145URIEXPORTEDFOLDER=`mega-export cloud01/c01s01 -a | awk '{print $NF}'` 146URIEXPORTEDFILE=`mega-export cloud02/fileatcloud02.txt -a | awk '{print $NF}'` 147 148clear_dls 149 150#Test 01 151$GET /cloud01/fileatcloud01.txt $ABSMEGADLFOLDER/ 152cp origin/cloud01/fileatcloud01.txt localDls/ 153compare_and_clear 154 155#Test 02 156$GET //bin/bin01/fileatbin01.txt $ABSMEGADLFOLDER 157cp origin/bin01/fileatbin01.txt localDls/ 158compare_and_clear 159 160#Test 03 161$GET //bin/bin01/fileatbin01.txt $ABSMEGADLFOLDER/ 162cp origin/bin01/fileatbin01.txt localDls/ 163compare_and_clear 164 165#Test 04 166$GET $MEGA_EMAIL_AUX:foreign/fileatforeign.txt $ABSMEGADLFOLDER/ 167cp origin/foreign/fileatforeign.txt localDls/ 168compare_and_clear 169 170#Test 05 171$GET $MEGA_EMAIL_AUX:foreign/fileatforeign.txt $ABSMEGADLFOLDER/ 172cp origin/foreign/fileatforeign.txt localDls/ 173compare_and_clear 174 175#Test 06 176$CD cloud01 177$GET "*.txt" $ABSMEGADLFOLDER 178cp origin/cloud01/*.txt localDls/ 179compare_and_clear 180 181#Test 07 182$CD //bin/bin01 183$GET "*.txt" $ABSMEGADLFOLDER 184cp origin/bin01/*.txt localDls/ 185compare_and_clear 186 187#Test 08 188$CD $MEGA_EMAIL_AUX:foreign 189$GET "*.txt" $ABSMEGADLFOLDER 190cp origin/foreign/*.txt localDls/ 191compare_and_clear 192 193#Test 09 194$GET cloud01/c01s01 $ABSMEGADLFOLDER 195cp -r origin/cloud01/c01s01 localDls/ 196compare_and_clear 197 198#Test 10 199$GET cloud01/c01s01 $ABSMEGADLFOLDER/ 200cp -r origin/cloud01/c01s01 localDls/ 201compare_and_clear 202 203#Test 11 204$GET cloud01/c01s01 $ABSMEGADLFOLDER -m 205rsync -r origin/cloud01/c01s01/ localDls/ 206compare_and_clear 207 208#Test 12 209$GET cloud01/c01s01 $ABSMEGADLFOLDER/ -m 210rsync -r origin/cloud01/c01s01/ localDls/ 211compare_and_clear 212 213#Test 13 214$GET "$URIEXPORTEDFOLDER" $ABSMEGADLFOLDER 215cp -r origin/cloud01/c01s01 localDls/ 216compare_and_clear 217 218#Test 14 219$GET "$URIEXPORTEDFILE" $ABSMEGADLFOLDER 220cp origin/cloud02/fileatcloud02.txt localDls/ 221compare_and_clear 222 223#Test 15 224$GET "$URIEXPORTEDFOLDER" $ABSMEGADLFOLDER -m 225rsync -r origin/cloud01/c01s01/ localDls/ 226compare_and_clear 227 228#Test 16 229$CD /cloud01/c01s01 230$GET . $ABSMEGADLFOLDER 231cp -r origin/cloud01/c01s01 localDls/ 232compare_and_clear 233 234#Test 17 235$CD /cloud01/c01s01 236$GET . $ABSMEGADLFOLDER -m 237rsync -r origin/cloud01/c01s01/ localDls/ 238compare_and_clear 239 240#Test 18 241$CD /cloud01/c01s01 242$GET ./ $ABSMEGADLFOLDER 243cp -r origin/cloud01/c01s01 localDls/ 244compare_and_clear 245 246#Test 19 247$CD /cloud01/c01s01 248$GET ./ $ABSMEGADLFOLDER -m 249rsync -r origin/cloud01/c01s01/ localDls/ 250compare_and_clear 251 252#Test 20 253$CD /cloud01/c01s01 254$GET .. $ABSMEGADLFOLDER -m 255rsync -r origin/cloud01/ localDls/ 256compare_and_clear 257 258#Test 21 259$CD /cloud01/c01s01 260$GET ../ $ABSMEGADLFOLDER 261cp -r origin/cloud01 localDls/ 262compare_and_clear 263 264#Test 22 265echo "existing" > $ABSMEGADLFOLDER/existing 266$GET /cloud01/fileatcloud01.txt $ABSMEGADLFOLDER/existing 267cp origin/cloud01/fileatcloud01.txt "localDls/existing (1)" 268echo "existing" > localDls/existing 269compare_and_clear 270 271#Test 23 272echo "existing" > megaDls/existing 273$GET /cloud01/fileatcloud01.txt megaDls/existing 274cp origin/cloud01/fileatcloud01.txt "localDls/existing (1)" 275echo "existing" > localDls/existing 276compare_and_clear 277 278#Test 24 279$GET cloud01/c01s01 megaDls 280cp -r origin/cloud01/c01s01 localDls/ 281compare_and_clear 282 283#Test 25 284$GET cloud01/fileatcloud01.txt megaDls 285cp -r origin/cloud01/fileatcloud01.txt localDls/ 286compare_and_clear 287 288if [ "x$CMDSHELL" != "x1" ]; then #TODO: currently there is no way to know last CMSHELL status code 289 #Test 26 290 $GET cloud01/fileatcloud01.txt /no/where > /dev/null 291 check_failed_and_clear 292 293 #Test 27 294 $GET /cloud01/cloud01/fileatcloud01.txt /no/where > /dev/null 295 check_failed_and_clear 296fi 297 298currentTest=28 299 300#Test 28 301$GET /cloud01/fileatcloud01.txt $ABSMEGADLFOLDER/newfile 302cp origin/cloud01/fileatcloud01.txt localDls/newfile 303compare_and_clear 304 305#Test 29 306pushd $ABSMEGADLFOLDER > /dev/null 307$GET /cloud01/fileatcloud01.txt . 308popd > /dev/null 309cp origin/cloud01/fileatcloud01.txt localDls/ 310compare_and_clear 311 312#Test 30 313pushd $ABSMEGADLFOLDER > /dev/null 314$GET /cloud01/fileatcloud01.txt ./ 315popd > /dev/null 316cp origin/cloud01/fileatcloud01.txt localDls/ 317compare_and_clear 318 319#Test 31 320mkdir $ABSMEGADLFOLDER/newfol 321pushd $ABSMEGADLFOLDER/newfol > /dev/null 322$GET /cloud01/fileatcloud01.txt .. 323popd > /dev/null 324mkdir localDls/newfol 325cp origin/cloud01/fileatcloud01.txt localDls/ 326compare_and_clear 327 328#Test 32 329mkdir $ABSMEGADLFOLDER/newfol 330pushd $ABSMEGADLFOLDER/newfol > /dev/null 331$GET /cloud01/fileatcloud01.txt ../ 332popd > /dev/null 333mkdir localDls/newfol 334cp origin/cloud01/fileatcloud01.txt localDls/ 335compare_and_clear 336 337if [ "x$CMDSHELL" != "x1" ]; then #TODO: currently there is no way to know last CMSHELL status code 338#Test 33 339$GET path/to/nowhere $ABSMEGADLFOLDER > /dev/null 340check_failed_and_clear 341 342#Test 34 343$GET /path/to/nowhere $ABSMEGADLFOLDER > /dev/null 344check_failed_and_clear 345fi 346 347currentTest=35 348 349#Test 35 350pushd $ABSMEGADLFOLDER > /dev/null 351$GET /cloud01/fileatcloud01.txt 352popd > /dev/null 353cp origin/cloud01/fileatcloud01.txt localDls/ 354compare_and_clear 355 356currentTest=36 357 358#Test 36 # imported stuff (to test import folder) 359$RM -rf /imported 2>&1 >/dev/null || : 360$MKDIR -p /imported 361$IMPORT $URIFOREIGNEXPORTEDFOLDER /imported > /dev/null 362$GET /imported/* $ABSMEGADLFOLDER 363cp -r origin/foreign/sub01 localDls/ 364compare_and_clear 365 366#Test 37 # imported stuff (to test import file) 367$RM -rf /imported 2>&1 >/dev/null || : 368$MKDIR -p /imported 369$IMPORT $URIFOREIGNEXPORTEDFILE /imported/ > /dev/null 370$GET /imported/fileatsub02.txt $ABSMEGADLFOLDER 371cp origin/foreign/sub02/fileatsub02.txt localDls/ 372compare_and_clear 373 374# Clean all 375clean_all 376