package Ġcom . zi em sky . uploader . test . e 2 e Ċ Ċ import Ġcom . zi em sky . fs structure . Fs Structure .* Ċ import Ġcom . zi em sky . uploader . test . e 2 e . config . E 2 E Test Config Ċ import Ġcom . zi em sky . uploader . test . shared . data . Test Fixtures Ċ import Ġio . kot est . assertions . timing . event ually Ċ import Ġio . kot est . core . spec . Isolation Mode Ċ import Ġio . kot est . core . spec . Spec Ċ import Ġio . kot est . core . spec . style . Behavior Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġmu . Kotlin Logging Ċ import Ġorg . opent est 4 j . Assertion Failed Error Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . test . context . Context Configuration Ċ import Ġjava . io . Unchecked IOException Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . util .* Ċ import Ġkotlin . time . Experimental Time Ċ import Ġkotlin . time . minutes Ċ Ċ private Ġval Ġlog Ġ= ĠKotlin Logging . logger Ġ{} Ċ Ċ private Ġconst Ġval Ġmax Daily Folders Ġ= Ġ 4 Ċ Ċ /** Ċ Ġ* ĠMain Ġend - to - end Ġtest Ġensuring Ġthat Ġall Ġlayers Ġintegrate Ġtogether , Ġexerc ising Ġonly Ġcore , Ċ Ġ* Ġmost Ġcritical Ġfunctionality , Ġleaving Ġtesting Ġedge Ġcases Ġto Ġche aper Ġintegration Ġand Ġunit Ġtests . Ċ Ġ*/ Ċ @ Opt In ( Experimental Time :: class ) Ċ @ Context Configuration ( classes Ġ= Ġ[( E 2 E Test Config :: class )]) Ċ // ĠTODO Ġthis Ġis Ġnow Ġintegration Ġtest Ġ( al beit Ġintegr ating Ġall Ġlayers , Ġrather Ġthan Ġjust Ġtwo Ġas Ġthe Ġrest Ġof Ġthe Ċ // Ġ Ġintegration Ġtests Ġin Ġthis Ġmodule ), Ġfocused Ġon Ġtesting Ġthat ĠSpring ĠIntegration Ġflow Ġis Ġbuilt Ġcorrectly Ġso Ċ // Ġ Ġmove Ġit Ġto Ġtest - integration . Ċ // Ġ Ġtest - e 2 e Ġto Ġbe Ġused Ġagain Ġonce Ġbuilding Ġof ĠDocker Ġimage Ġgets Ġintroduced . ĠAt Ġthis Ġpoint , Ċ // Ġ Ġa Ġcopy Ġof ĠG Drive Ġclient Ġwill Ġneed Ġto Ġbe Ġplaced Ġin Ġbuild Src Ġso Ġthat Ġit 's Ġavailable Ġto Ġthe Ġbuild Ġscript Ċ // Ġ Ġto Ġsetup Ġstate Ġin ĠG Drive Ġahead Ġof Ġthe Ġtest Ġtask . Ċ class ĠU plo ader Spec ( ĊĠĠĠĠĠĠĠ Ġ@ Value ("\ ${ conf . path }") Ġprivate Ġval Ġconf Path : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Value ("\ ${ test . e 2 e . uploader . monitoring . path }") Ġprivate Ġval Ġmonitoring Path : ĠString , ĊĠĠĠĠĠĠĠ Ġtest Fixtures : ĠTest Fixtures Ċ ) Ġ: ĠBehavior Spec () Ġ{ ĊĊĠĠĠ Ġval Ġroot Folder Name Ġ= Ġ" e 2 e Test _${ UUID . randomUUID () }" ĊĊĠĠĠ Ġoverride Ġfun Ġisolation Mode (): ĠI sol ation Mode ? Ġ= ĠI sol ation Mode . Instance Per Leaf ĊĊĠĠĠ Ġoverride Ġfun Ġbefore Spec ( spec : ĠSpec ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġtodo Ġcustom ĠSpring ĠBoot ĠHo con ĠProperty ĠSource ĠSt arter Ġso Ġthat Ġplace hold res Ġcan Ġbe Ġused Ġin Ġapplication . conf ? ĊĠĠĠĠĠĠĠ Ġ// Ġ ĠOne Ġto : ĊĠĠĠĠĠĠĠ Ġ// Ġ Ġa ) Ġsupport Ġenv Ġvars Ġresolution Ġ( lad ut sk o 's Ġdoesn 't Ġcall ĠConfig . resolve ) ĊĠĠĠĠĠĠĠ Ġ// Ġ Ġb ) Ġsupport ĠConfig . resolve With ( custom Ġconfig )? ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" uploader . google . drive . tokens Directory ", ĠPaths . get ( conf Path , Ġ" google / gd rive / secrets / tokens "). to AbsolutePath (). toString ()) ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" uploader . google . drive . credentials File ", ĠPaths . get ( conf Path , Ġ" google / gd rive / secrets / credentials . json "). to AbsolutePath (). toString ()) ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" uploader . monitoring . path ", Ġmonitoring Path ) ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" uploader . upload . root Folder Name ", Ġroot Folder Name ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġstart Application () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- spring . config . additional - location =$ conf Path / application . conf ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- uploader . rotation . max Daily Folders =$ max Daily Folders " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġlog . info Ġ{ Ġ" Starting Ġapplication Ġwith Ġargs : Ġ${ args . join ToString (" Ġ") }" Ġ} ĊĠĠĠĠĠĠĠ Ġcom . zi em sky . uploader . application . main ( args ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠGiven (" some Ġremote Ġcontent Ġand Ġsome Ġfiles Ġin Ġthe Ġsource Ġdir ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtodo Ġelabor ate Ġdescription ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Fixtures . remote Structure Delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Fixtures . local Test Content Delete () Ġ// Ġtodo Ġconsistent Ġcl en up Ġmethods ' Ġnaming ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Folder Ġ= Ġtest Fixtures . create Root Folder ( root Folder Name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġenough Ġexisting Ġdaily Ġfolders Ġto Ġtrigger Ġrotation Ġof Ġthe Ġoldest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpre Existing Remote Content Ġ= Ġcreate ( ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmatching Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" 2 0 1 8 - 0 9 - 0 1 ", Ġ// Ġto Ġbe Ġremoved Ġduring Ġrotation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 1 1 2 0 0 0 0 - 0 0 - front . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" 2 0 1 8 - 0 9 - 0 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 2 1 2 0 0 0 0 - 0 0 - front . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" 2 0 1 8 - 0 9 - 0 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 3 1 2 0 0 0 0 - 0 0 - front . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġmatching , Ġignored , Ġremote Ġcontent Ġto Ġbe Ġretained Ġpost - ro ta ion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" not Ġmatching , Ġtop Ġlevel Ġfile "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" not Ġmatching , Ġtop - level Ġdir , Ġempty "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" not Ġmatching , Ġtop - level Ġdir , Ġwith Ġcontent ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 1 2 0 0 0 0 - 0 0 - front . jpg "), Ġ// Ġmatching , Ġnested Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" 2 0 1 8 - 0 9 - 0 3 "), Ġ// Ġmatching , Ġnested Ġfolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" not Ġmatching , Ġnested Ġdir , Ġempty "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" not Ġmatching , Ġnested Ġdir , Ġwith Ġcontent ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" not Ġmatching , Ġnested Ġfile ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Fixtures . remote Structure CreateFrom ( root Folder . id , Ġpre Existing Remote Content ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠA Ġset Ġof Ġfiles : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ- Ġscatter ed Ġacross Ġfew , Ġnon - con secutive Ġdates , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ- Ġenough Ġto Ġtrigger Ġrotation Ġof Ġthe Ġoldest ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Content To Upload Ġ= Ġcreate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 0 1 8 - 0 9 - 0 3 Ġ- Ġfiles Ġfrom Ġthe Ġday Ġwith Ġexisting Ġremote Ġfolder , Ġto Ġbe Ġadded Ġto Ġexisting Ġfolder Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 3 1 2 0 0 0 0 - 0 1 - front . jpg "), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 0 1 8 - 0 9 - 0 8 Ġ- Ġfiles Ġfrom Ġday Ġwith Ġno Ġremote Ġfolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 8 1 2 0 0 0 0 - 0 0 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 8 1 2 0 0 0 0 - 0 1 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 8 1 2 0 0 0 0 - 0 2 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 8 1 2 0 0 0 0 - 0 3 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 0 1 8 - 0 9 - 0 9 Ġ- Ġfiles Ġfrom Ġday Ġwith Ġno Ġremote Ġfolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 9 1 2 0 0 0 0 - 0 0 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 9 1 2 0 0 0 0 - 0 1 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 9 1 2 0 0 0 0 - 0 2 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 9 1 2 0 0 0 0 - 0 3 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 9 1 2 0 0 0 0 - 0 4 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 0 1 8 - 0 9 - 1 1 Ġ- Ġfiles Ġfrom Ġday Ġwith Ġno Ġremote Ġfolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 0 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 1 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 2 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 3 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 4 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 5 - front . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Application () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" files Ġappear Ġin Ġthe Ġmon itored Ġlocation ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Fixtures . local Structure CreateFrom ( local Content To Upload ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . debug Ġ{ Ġ" Created ĠLocal ĠStructure " Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThen (""" it Ġuploads Ġall Ġlocal Ġfiles ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| and Ġrot ates Ġthe Ġremote Ġones ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| and Ġdeletes Ġlocal Ġoriginal Ġfiles ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| and Ġdoes Ġnot Ġdelete Ġany Ġother Ġremote Ġcontent """. trim Margin ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġlogs Ġstats ? ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmix Ġof Ġfresh ly Ġuploaded Ġfiles Ġand Ġthe Ġremote Ġrotation Ġsur viv ors ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremote Content Expected Ġ= Ġcreate ( ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġactual Ġcontent : Ġexisting Ġones Ġ+ Ġthe Ġnewly Ġuploaded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" 2 0 1 8 - 0 9 - 0 3 ", ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpre - existing Ġremote Ġfolder Ġand Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 3 1 2 0 0 0 0 - 0 0 - front . jpg "), Ġ// Ġpre - existing Ġremote Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 3 1 2 0 0 0 0 - 0 1 - front . jpg ") Ġ Ġ// Ġnewly Ġuploaded Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" 2 0 1 8 - 0 9 - 0 8 ", ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnew Ġremote Ġfolder Ġand Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 8 1 2 0 0 0 0 - 0 0 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 8 1 2 0 0 0 0 - 0 1 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 8 1 2 0 0 0 0 - 0 2 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 8 1 2 0 0 0 0 - 0 3 - front . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" 2 0 1 8 - 0 9 - 0 9 ", ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnew Ġremote Ġfolder Ġand Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 9 1 2 0 0 0 0 - 0 0 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 9 1 2 0 0 0 0 - 0 1 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 9 1 2 0 0 0 0 - 0 2 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 9 1 2 0 0 0 0 - 0 3 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 9 1 2 0 0 0 0 - 0 4 - front . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" 2 0 1 8 - 0 9 - 1 1 ", ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnew Ġremote Ġfolder Ġand Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 0 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 1 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 2 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 3 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 4 - front . jpg "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 1 1 1 2 0 0 0 0 - 0 5 - front . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġmatching , Ġignored , Ġremote Ġcontent Ġto Ġbe Ġretained ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" not Ġmatching , Ġtop Ġlevel Ġfile "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" not Ġmatching , Ġtop - level Ġdir , Ġempty "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" not Ġmatching , Ġtop - level Ġdir , Ġwith Ġcontent ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" 2 0 1 8 0 9 0 1 2 0 0 0 0 - 0 0 - front . jpg "), Ġ// Ġmatching , Ġnested Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" 2 0 1 8 - 0 9 - 0 3 "), Ġ// Ġmatching , Ġnested Ġfolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" not Ġmatching , Ġnested Ġdir , Ġempty "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" not Ġmatching , Ġnested Ġdir , Ġwith Ġcontent ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf le (" not Ġmatching , Ġnested Ġfile ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġempty Ġ= Ġcreate () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeventually ( 1 . minutes , ĠUn checked IOException :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeventually ( 1 . minutes , ĠAssertion Failed Error :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Fixtures . local Structure () ĠshouldBe Ġempty Ġ// Ġtodo ĠFs Structure . EMPTY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Fixtures . remote Structure ( root Folder . id ) ĠshouldBe Ġremote Content Expected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }