deltacloud-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mfoj...@apache.org
Subject [60/65] [partial] Core: Moved all API tests in server/tests into server/tests/deprecated directory
Date Fri, 20 Jul 2012 09:59:23 GMT
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/google/fixtures/test_0002_can_create_a_new_blob_with_HTTP_POST.yml
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/google/fixtures/test_0002_can_create_a_new_blob_with_HTTP_POST.yml b/server/tests/deprecated/drivers/google/fixtures/test_0002_can_create_a_new_blob_with_HTTP_POST.yml
new file mode 100644
index 0000000..780a5e2
--- /dev/null
+++ b/server/tests/deprecated/drivers/google/fixtures/test_0002_can_create_a_new_blob_with_HTTP_POST.yml
@@ -0,0 +1,593 @@
+--- 
+http_interactions: 
+- request: 
+    method: put
+    uri: https://testbucki2rpux3wdelmegoogel.commondatastorage.googleapis.com/testblobk1ds91kVdelmegoogel
+    body: 
+      string: !binary |
+        iVBORw0KGgoAAAANSUhEUgAAAmwAAAEJCAYAAAApRHtRAAAAGXRFWHRTb2Z0
+        d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAXxZJREFUeNrsvQmUJNV57/lF
+        RG61d1XvTW800NBAswsEAiRsNkugsS2BZDDyom10xnrHSBoLjeeMOF6O0Jsn
+        eWbO8+hIluf5SRZPBtuyJSGbxQIBYhE0NGtDQze90XtXde2Va8z934gbGRmV
+        WZVZlVmVWfX/oVBmbDcib1Zn/vK7937XGnHzCRH5P9Ty+2o5RQghhBBCSDPw
+        rlr+Ti1/Zilh+5rtyl12wRWLFUMIIYQQ0hS4ainYlhQsuQfCdjSed5ezWggh
+        hBBCmo+sYx2z1SNljRBCCCGkeVlusw4IIYQQQpobChshhBBCCIWNEEIIIYRQ
+        2AghhBBCKGyEEEIIIYTCRgghhBBCKGyEEEIIIRQ2QgghhBBCYSOEEEIIWWzE
+        8H8u64EQQgghpGlhhI0QQgghhMJGCCGEEEIobIQQQgghFDZCCCGEEEJhI4QQ
+        QgghFDZCCCGEEAobIYQQQgihsBFCCCGELDZi3gNT5xJCCCGENCcWI2yEEEII
+        Ic0OhY0QQgghpMmJ1aOQfMGVtwYyMpzJs0YJIYQ0LUnHktN7k9IeZ7yCtBZ1
+        +YulrBFCCGkF0nlX3h5IsyLI4hQ2yhohhJBWkjZ+b5FFKWyEEEIIIYTCRggh
+        hBCyaPEGHTANGyGEkMWEy+8+0oLCxr9ZQggh9DVCmhc2iRJCCCGEUNgIIYQQ
+        QgiFjRBCCKmBsSwbRAmFjRBCCGlq2uMWK4G0FDFWASGEEELqjeuWRjEn8paM
+        R/IVY4awzljpcZZFmaawEUIIIWROBO1Y2paTWUsGMpaM5KaWsJTjSpcStyVx
+        V5YnXb1OiaOwEUIIIaQBkpZTq/vHHLXY+rkhaXt9sOKRjlh51zsnk7fkGJa0
+        yFsjXtRtdaogq9sKErNKr7NY5Y152AghhCw6MOigM8F6qJeoYW3PqCMHfFGD
+        l3U6Im22J2vVAHlLF0TG1YKI3Fsjjl5WKXHb2FGQNj/qZq692MSNETZCCCGE
+        zFjUIFdvDDn6EdGwPmUW7U7tZTuWdx6WAqQ6r8pWy+EJWy+QtrXteTHjRRab
+        uFHYCCGELDraOEp01qIGDo1bsmskpqNqiKh1x+qTfsJE6LBA3IbyiOBB3Cw5
+        qysvSxKuWLK4xI3CRgghhJCaZA3bEPV6czim5Wp5vHLTZ2e89BFkCui35jWD
+        juemvj4ibinHi7YN5SzZfjIma9vycnpXwRO1RSJusVJXJoQQQhaNirAKapA1
+        N7Tt8IRTlLWESDhgmVBy1aO29SZF2qoMC41kRUbVMpgpL3C4TrffJ65fHXdg
+        3JGTWVvOX5KRuG1NEreFKG2MsBFCCCGkalkbyNhlZQ1ytqajNJJWLTgHy8p2
+        L/o2MKHELO1F4cLgWrjmYM7rO7dtICHndGelK+7d40KOtnGmA0IIIYRMKWtY
+        x5JVMvX6UKmsYbAARG3zkpnJWpSE7Ynbll6RdV1exC4qLr0xr78ckvG+dDIh
+        w1n/Hqd4HRQ2QgghhCxoWfO2i7w2FJeca2lZgqxBpk7rUfLW1ph76Ut64raq
+        3RPDMGgixYhUDHiAtI3nrEDa3AUobWwSJYRMycqOuPSl4hKzOaqOzD+j2bwc
+        HMnIRK7AyphjWTuesWUwa+vBBTrHWsyTNWcOPhoQcetNiewf9vq7GUz6kP6c
+        ksnhmJzfk5W47fVhizaRtnrzKIWNEFKWjrgjZy9rk6TDQDxpHnqSjqzpTGhp
+        231yghXSKHGLyBqe7x7xlAFRLUjaXMmaAU2luOaxcZGDo6XSlnHRp83rW3dO
+        d06/goUmbZzpgBBSVta2Lm9nVI00LZA2/H3u7B+fuZCwGkvrxAhaibTh0ZUj
+        E7ZMFLym0PmQtTBofkVfuV2DXloQsCTmPT+RcWTPmCsb2vNiLTBp409nQsgk
+        NvelKGuk6VnRHpelbWwoqqeshdeNrLkFV/aNe6MJ0BSK/mTzXe2mOTY8IKFX
+        3SJmWtg3FtMjSE1kMDoYoVX7tFHYCCEl9CRjOsJGSCuwpjPJSqinuEVkTfyo
+        VbpgSYefwBb9yZoBSBtGphp5NKNHwc7hWPF1uDJpMEIgci0kb/xpQgiJCBtl
+        jfDvdVFJWqQpNGxvhYIrR9NeHXc2kawZ0Cy7rrPYPIoBERDL0bwte8diElfr
+        g1lLj2wdzXkT04OU43qL2r8kUZAlcW89TLM1nVLYCCGEkEUua+H1cFNi1sXM
+        Ao5uauyIeWk2mg3TPLrzpC/xan08L7J/vFRxkIbETJ+VL1hyMu8JGabY0kIa
+        c/Xk8suSBf16w3XTDPJGYSOEVM3+O++U8e3bWRFkztn86KOshAaJGqRsJGv7
+        TaCWOOqx3SlIQR0zmPFkpt2fbqpZMbMsYPSonsYq5r0uRNASVuUBEojKpQtK
+        8ArezAlvDMW0rJ2ixG2dWmJWaX3Np7hR2AghVQNZG37sMVYEIS0uaQCRpQNj
+        jhaVcvTG80ETIubwXNbW3K8Po0fNfKSdVbaUQ+Qgo1iQ2Q8TzI/kRPaOOnpk
+        7Jlded1k2gxTXlHYCCGEkEUiaeBkxpY3hh09rRNAM2EyNASx4EedBrKe9WAX
+        mkMTLTBMcU2nEq6BYrqPMGbaLEwuX26/mWAesgdxG8ph2quYnNKWl9O7vElN
+        51PcKGyEkABraFBi9/+TyJ1/zMogZIHJGtYOjytZG/JErDvmajkp62GOJzVD
+        eW/qJwhbKwyoRD+1FW2YYxT5JEXanMopSCBu6Os2lPaicsHnoFq6VKWk4ui/
+        J3JgzFaSa8n5vZhFwZokbnMlbRQ2QkhA4lO3iXXDtawIQhaYqIFD45a8qWQt
+        PHH7VKC5EGky0FTYEW+d11/tvKYQuTZ/IAXk9Pi4N4uCib6hflaqehrIef3b
+        nj2e0NLWFZdJyXi1xDVY3JiHjRDi/Xr722+J/fSTrAhCFpisYdtwVpSsxcrK
+        GpLPorkQgwrwGO2gj3PaFnj2FLxmpCzZ0jdZ+CCtS8wk8wNxXZfRZLzl6r7u
+        n9H88yaEWAf2SeybX2NFELJAZM2NbHtz0NFtmn1x74sfmxN+XrVyqTr60yJH
+        xkQyXtctnTDXXQRzeUFOV6s6QRRtz1Ax2tahdliOF217qT8m5/Xm1DEuwmre
+        Z2iovhsVaeNcooQQryl0aJAVQRaX4CwCWcNmjHZEkx4SyprBBSZ3WaV0F5A4
+        LJA2yNtiA5FGRNuQkBd93UC7H2WEtL2uBPjCvpzE7bmbrzTml85/uYQsUuJ/
+        dY/Yr73CiiCLzNbclvruy588Kc6SJVO/njKyhi1Hxj3T6PKFA5G1aidvRwSu
+        O7E4/0TMJPdRacPTYSXALw/E5KLerDK1uZE29mEjZBEDUWNTKCHNz1srVsqh
+        T31aJl56qYyrlZ+tALKWLYge4ZhSUuGIJ6lrO1zRaXLd6hZM2VTtsQttQT1t
+        6vanrfIlv9t2pV0tI8rVdo3YczbJPIWNkEUKmkDRFEoIaQ0Gv/c92fOeS2Xf
+        ddfp51EpcCOyhkfIGjBNoRjt2RlnXdaCibTFQwMvMP0VBm68O+bIibRVEqxt
+        lLRR2AhZpCCyhsEGrUD3tdfKxdN88FVzTL2u1ajycByOL8e5u3bJss98hn+4
+        RMZ+8biOtu06Y7Mc//O/kOzevWVlzRsdaunHmB9RW5pavNGy2UbaNnQWI5OW
+        Wnpj3uMbg47kQnOwRqWNwkYImfkvxgcf0Gk8WoXEpk01H1NJfOpxrUaWV+n4
+        49/5jgw/8si8vg/tF18sW55/XovlBf39FMh5BqJ24i/+QnZvPlMOK4GDyGFa
+        pT0jjrymJOLlkzE56k9sHre9vms9CdbbTMFAjRXtxXVE2Lr9dB+QtrAoh6Wt
+        XlE2Chshiww0hca/8LkF/Roha2c8/PCCek2Hv/51Se/ePe/3cUyJ4/a+Pjlw
+        112y4dvflmSdBZfMjKHvf1/eveEG2X/Ze+XYf/++HE9bcjJryURBa4SOBHXE
+        GCmb7bIs5Up3vLjeYbuSsFxd38fGrUnSJnWUNuZhI2SRAVlr9hQeTm+vloHe
+        W27R62PbtpXs23TffVrK8gMDsvezn5WB++8P9kMgjKwhEgTRialzTDToXSUa
+        2GaOXa+uY6JxKCtMdD+ug2NwXZT91nXXydAjjwSCuM2yprz3chErvBZcZygS
+        PUP5uB7KQbnmejge0oTXARDxgsjhvsrVi7k3lI962HHJJZPuAfeLx/B55eoG
+        UT7zevDcCFsziGQQhXj6SXGemT4B9FDKkYlQnyQ3m5V8/4BYMUfcvLKcQkHc
+        iQn1B+eI3d4mdne3WPFpOn/hS1yd4+ZyXgd1jBJU51uxmPdo2942lJ3Pi6hF
+        H1so+Ddvi5VMTn+dqf59v/6S9H7pU9L7Z18S+dgnRD71ecmv3eC91/PYd+0/
+        /90PStY3rFklH7v+1/XzN/fsk+0735K9Bw/r9fM3ny43XHFZ034+re0SGekv
+        5mjrU2/vIQxAGLVlSTKvU324ridveL/rNXKUwkbIIsK5/17dHNrsGBF49bTT
+        9DrEwQApgVggygOZwbo5Dhh5QRnb/A9HyAgiQh3q0cgLxAPP8YiyIDM5Va4R
+        LRDej/tBmVh233qr3m+aL8PNmFPde5TNqnzI0Q51b8uVUEabcXHfYYnEdSBr
+        OBbChuvgGDyvVC/m3rDPSF5YfnEPEFiIXPi8cnUTxtTT6BRCOi9/40rWqhn5
+        PLTgQ24nRf7m/9GLc+OHxVXiFr/x6nnNZHL95ZdqGQtHnSBrP/7Fk3L1xRfI
+        h99/ZSBw2PfSzrflV6++LieHR2RJV6fev3Jp3/z/KBBvNoRDo8V1pEwZVu69
+        f8SSU7sgZl6SD9ctlTZG2Agh04IBBvG772qJe4UMQFRM5MZEioB5DIvVdM1y
+        RrYgN0aEICHYDlGBzOQjQoLrhPdDXo75UaWZ3Hu0mRbRMggTRBLlQ5pOueee
+        krIgWOHooYlsrfryl3V5eB24DgTUlF2pXnBPENbwAAhzD7hu+No4b6q6wT4c
+        /65/76TJeepxsc4+Tzpvvrrpbu2hp38ll517tl4MRupSiYSWPEja49u2y30P
+        /Vw+/zsfbYr7hrCdTBfzs3Uqa0OL6MFxW1a15YMJ56MBtdlE2ShshCwSEi3Q
+        FBpmKhEwzXNhKnWAh1wgamTOuXgOQgzl7h1StS30QV3NoAjIVBQjaBCzLlVG
+        uB6mqhfcU6V7QEQt3Kw51b2ZJmkIrGlabqq/m/deKfKFr0x7XF/K0Z3wgy/S
+        Jm4SRVEYXFArzhVXi/WxOyTz0TsCWZhX/H5fhiMn+mUik5Hzzjit7L1t3rAu
+        eL6yr1dH3NwmSna8ql1ktx+qxb+qLvX29utBHyJn9bj6rS7XNDpTKGyELAL0
+        bAYtNLE7xAJRJNNfKhw1QsQJTYIYMYlmOghZtJ9YxpcPEykCw77khK8BiUHE
+        DKITbfbDfkiM2Y9ycE9GiLAPEasBdV5YcKa69zBoSsT1cSzEZ3kNIy5RBybS
+        d8y/n2rqpVw943WYaJk5r1LdxHxZw3PTLNxsFC6/Ui/T0d2bkM5E84+7M4JS
+        i7B13n6HrPpPfySp88/3JFYVMZiZ/9fy0DPP6QVc/973BNt7ujqnPfewkulm
+        aA4tqWfktFMWNeJH2drUD4BY3psKbENHXvcZRNNoVNpmGmXjKFFCFjitOJsB
+        ZABSgNxj6FSfCUV/THMj9iG1hGnKCx8D4cCCY9CHCzJTLo/Zzuuu04KCcrAf
+        chUuB/dh9uM+IEOmT9k+9Yjjsa/ae49G4XCsKcM014aPj55r1o+HJM1E86qp
+        l3K85ddB9LxydQNZw32a3HJYmNqjSVi3QQp3/5+y8cBh2fDd70jyvPNKcoj1
+        JuZ3dCW4TknaF+/4uF62nnGadHd6onZyeHjKc/ccPCwv73xbrrrw/KYbNbq8
+        rXS9y/bveQSBU7din8GZRAqtETfvutncrP5Oth+Z4D8WQpoQPZvBrR+qaa7Q
+        NXffLau/+tWy+3Zec40MP/YYK5bMOVM1ZT95oPYhBKe3QIQt/KW+M5kqe0zu
+        8qtl4Pf+SPpuullP1r62szlfyze+/0MtbGj+jG6/6qLz5dJztpQ9D82m//jI
+        Y/qY6LlN8wNzsBhl0/ec8XKzXb4iLwnbEttGNM3STaRWqGm0liibFY+xSZSQ
+        hQwia5zYnZDWJqqqdk+PtN98s/R85SvyetdGGc/ozlLSFW/u+ezdSB82cNWF
+        58kTL7ykb3yrL2RHTwzI+tUrZd+hI/LTJ56S95xzlmw9fVNT9V8LgwEII6Hf
+        DOjLNqAE7t0RSzZ2me6M4anhi/VRi7RR2AhZoKDPWivNZkAImeYLe8MG6fvT
+        /03abrpZpLvba3Lzu11i2EK8yTs5PfLs83oBPZ2d8snf/JCSsS2STCTkudfe
+        kCdefFnvwwCD21dfL//4H4/pdWw3+3BOT2dzhRHRly2lbGrCj7K1OyKD6vnB
+        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
+        nx86fkL+7Ymn9COaMu/92UPyzrsH9T6zfuj4cfnglarMTRuDcwzYhn24Frb/
+        fz/6SbD91y69RG//+a+2ydMvlX7hYjv2m/vYsXuP/OzJp2QindHXxTrK+Mu/
+        +buWqvv2iy+WTffdJ8lNm0oiZU5vr2z49rel95Zb9PrYtm2y97OfDfbjeMga
+        QFPk4a9/XdK7d8vae+7R5+L5PnU8ysSx61VZpqk1XI65Fs5b9pnP6PWB++/X
+        x+QHBnTZb113XXBvZn1U3U/0/uaCcDJcRNHCedEIIY0ynIUva9h8LO3oCBua
+        9szgApO7rFK6C0gcFkgb5G2xgQEKW/qKsyjo7zU/yjiQs+TNobictwR92uZu
+        kvkF24cNMrZq2VIlWg/KN753rzy1vVSUfvvXP6D3Q6yw/+TQsNz2wRuC/dGm
+        TKxDyJZ0d8lf//Cf9DKRTpeU95SSMYjVo78q/ZL/63/4R/mZksFfu/RiVU5X
+        6X1e6d2nKRPlY5th9fKl+txWY7OSrmElQ9v7+vSjARIHXj3tNL0PQmS2AQiZ
+        ES9E2N696y59/k4lU1iHdJnjIXaQL5SD8rAvDMQL4oh9WCB42GaINncm/P04
+        zpyTU+U3GgwuyN35FYnffZekLt+qFzynrBFCgh91J6vr/hCVNW/ids80unzh
+        QGSt2snbEYHb2LU469xMch/uBwdp64phFK0lrw/N7STzC1bYELF6ccebOtqF
+        aNXJ4eGS/YhahfcjqoVo11SDBMw5KAsLol8GROOuOH+rFsWBoeK1cAzKR4QP
+        nHrK6kllIupmysRzE8EDiMqZc1sFRLwQ3TqgZAtChShZeB+iV+fu2iUX9Pfr
+        6Feyin5ip9xzj46Crfryl3XZKAfnmYgZRC8fkStcx0TosOC5iZxVAvuPfec7
+        wTlRCWzIh4ISs8SnbvMGC8wwPxohZGGz56wz5einPyPZvXsnS9oUE7dnkdE/
+        Y0nKcsXxM+Ou7XDVl78bdJafbkk51R+70BbU06Zurw58O5Nu25V2tWAAwjuj
+        TsnMEI2UtgU9SnQik6n62FQiOasy0WT68189ryNx/8vHPzIpklb9fSSmXF8I
+        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
+        IWTOmSp1Srl+XqbJs5ysQWDMOXMxCrLcvUNMwk2S1QyKKFcOhAhlQY4gOeF6
+        QMSrXJTKjI6O3oOps2rT1FTqXxe9n0rXaRYKa9dL4fIrpxcNxxYnFLJw02nJ
+        HTyomz9Ns2ZhdEQsJyZ2T484y5eLlZwm/ZP6+yuMDIubyXrf1rYtVswRQZNq
+        POE1d6LuVNm4hptTS1Z9u+f8VPoxda1Uymt+jYCRoTVHZM49X+xP/5FkPnrH
+        rGWh3GsNl2kykAXXKDchenhbZP/mDet8Cdsrl557tryhZAwyuH7VyrIRtvOU
+        IL6882113F45c8N6Pzp3vjz+wksyrt7LuZiMHZPF7/a7T+JfRJf6e+rHoI8x
+        W87oyuu3ulzTKIWtRjAK9LYPXt/QKZ/CU1xhBChmW2i1JLj1BL/ezZcLvnjw
+        ixy/wk0fmHLRB9Nvx/yCr5RoF1GDaFON6WQd/SKa7j442KKxmNQpJuoTjmrh
+        fUATHEYSownTpHQJE077Yv4Whn2pCF/DpH3B+2+aRMP78d6b/SgH94S/EzMz
+        xzI/DUy03Er3Hiac2gZ/m8trkBpc00S5EM0zEUJE2PC3WqleZsNU9R69n6b/
+        MXDLbXqZjjUtMujAiMfutvaqz+m8/Q5Z/nt3SMfVV3t14pZ2kq83g8Mj8qtX
+        d2hxMjz0zHN6qUR4//XvfY8WMETZ9h46ooVt76HDsrlMdM1E2DZ0rZKVS/tk
+        5579sqqvT0fkPnz1+7Sw4X5kdePfG0QsO5VFjfi+3aZ8PJZX/04mbFnXXpA2
+        3YVxcn+2mfZlW1RNoiYnG2hk+3YYc50XduxU4nZoVoLZ6jh+B2v0czFTTGGb
+        6QMTTqSLL07sN/1isOT85LnYH56+ykxhFcV8mUa/VHFNnG+mzYreB2ksU6VO
+        CadigVhDUsKSZqTJpH3Be4a/JZMCJky5tC/hsnAfZj/uA38L5vr4e4KkYF84
+        QlVt2pepUttEz4mumx8XeF3m2m/5ryVaL+XOr7R9qvVK9V7pfmq5zlT3SOrI
+        ug3ifuFPZeOBw7Lhu9+R9quuKskh1puoc24y/7L/5Xv/Q/7mRz/RwnTtey8J
+        BPPSc7bI737w+mDxA2PB/uuUpH3xjo/rZesZp+ntiLJB1JALFeVtXr9Ob8c1
+        zLLn4OEgQmeOf2PvPi1v3Z0d3o+5RGLO8rMtbytd77K9x32jlhSCvHiVRZwR
+        tgogRxrm5ZyPKFd00vdmiwbOFfiyM316EH3oiCTNDYMvKNPfJvzFUa0cImKG
+        L3bTnyj6ZWNGs+GLfqr7IHWOgKh6h4BEI6ph0SkXlQtHPsPnV/q7QIQInfTL
+        yVCl/eGIbbl+Z1Pde7l7Dg+YCBN+LdHXFt1vIsHl7nWqaHC03KnWK9V7Pa7D
+        iPXso2tTfqZefpUM/tYdsuS2O/Rk7R1znLYDwjU4MiL3P/yYPPfqDrnqovP1
+        9p6uTi1RtQABe/iZ53SUDM2hG/wBBbhGmJ8+PiJJdeyZanlCHYvrvufcLXof
+        zjN93OaCqaJsGzvzkvAHB9ejaXTBCRuiaL9x1RX6EfOE/psSNDyafGOY6xNJ
+        dM1k8Ji0HTMWYJQLEtai+TJchplnFLMPoAw84vioPKHcLadu1BE8CGF0wnbT
+        PHro+HE9ubuZJcHcYyqZ1FJmyscvDCTwHdCT0l8flAHx+/mvti2KDyt88GPE
+        mUlJUMuUUSaackR96ZoO08dboDmHEEImiVtkHX3q2m66STo+9znZue5CGc1a
+        sgTRnbjIXE1m4Yb6sHV3dGjZenPvfrnywvOC7eXnOHUr7k/G47Kyr1d2qnLO
+        86NuFX/Qq2NxXRx/pH9ANq9fO3X/uQaCAQgjoVSA6Ms2kMMoUlvWd3lRNjNq
+        NFoftTSNLrgm0d++9gN6toBvfO9e/XjbB2/Q241gQaT++of/FBx/yD8WoobZ
+        CiBcOAfihHMga5A6M7XV6uVLJ8kYZG2Vkrt7f/agLsvIYBQ0j6IsgHsw94h7
+        Nk2n5n4OHTuh78cTt6eC17AQZA3RLoiYGalmCI88Q3TN5IgysxzUMk0UJM10
+        4M6HprSK3geavaL3QQghzUhswwbpVT9CV7/2miz51rfEOXdroHPI/DaXXfKW
+        dHZOio4h0jboR7ei+6PbHnn2efnm3/+DXv72Xx4oKUc/rl9X8dpIJ2LKWr96
+        lZa2Hn8dzaETGPQxhyDKlgqFv9odT64Ojduh5lIpThI/0/d/If0xo+kQYvXz
+        X/1ER8YwGfuFZ23W281UUVFMUyX2I7K1etkyLW2YWxRLELHx5waFMEXn+sQ1
+        fuZH8vQf0xQzR5i+aOF5SKe6n4WGyXUFok0w5ZpOcIwRK/Q1Q7+zaiJt4Yja
+        UKRDevg+wtNVzRfoII1kn/bTT/IbiRBSGsHyny//4Q+l/eab9Jc++kYVMNJU
+        /dfhFPQE75k8Rr7OXYRt3aoVcufttwb3uaJ3iV4H5jEc5QpvM8/Lvd5Lzj5L
+        L9Hzw4TLuvICJa1qMcf+4f/0wSnPbRRLkyIHsqXShrxsR8YsWdWhb6hs02gt
+        UTam9agAImCIbkVB+3gl46+Wcv3oIH2LAZNBHfKFPmzhHFwVhcbvX4PIWzVN
+        m6bzOR7DHdHx3Jw7n1MERbEffECyd98jhe/eq587D/5Uy5s1NMh/iIQQTwBu
+        vjnS4V192RdcaXMQW3P01EgYDeqwy+C80Jv0Euma2Q86bCVsgr5slqxoy4tt
+        237T6Cy+KxZShSEqhejWr116iR8lu0SvV4quVSoDooboGqJ1KMdMAD/VOZef
+        vzUYhWqaT8sBUUMfOhNpw7HTlW8SCU5VbisBAUPfMoycmyopKoQO+03SUFCN
+        4HX40/eYEaSIypntzQjELPGFz4lz/7062pZR4jbx2j79mPvk58Rdu56fhoQs
+        ekojbq6f+awzltfr4zm1ZN05Gx3JZfKyJDQSFyNzU5ar06l4iXRNv7rSCeIX
+        rbAB9CNDf7IvfuK2oF+ZAc2N6G+GfmRGgqJSBH7wwEOypLtL505DOdeEmkaj
+        5wEMVjg5NKxHoeJ4CFm54/Ec0TWk98A9YBABrrFRydtU9wMhNLncWj0SZ4b3
+        mz5jiJhlymRPN/M1mjQD6IOG0XmmOXSqNAGIpIXzReEcRNPC0bZmTD0Qv/su
+        LW7Bfd/wIR15m3j6FUn/+5OS+8JXpHDOVn5vEbKYNC2UGiIaXSuoxVIrPUra
+        lKvJeJ71NZ8sbStdT/mGdXTCCvquhT3NDb3HVf24H3HzbjadntVNvnqstg5+
+        67uTeinHEy9sl8e3bec7P0eY0bPl4HD8+UGL2je/JW53T/l/tAf2ifPgA2I/
+        /YR+rDdr7r5bVn/1q2X37bzmGhl+7DG+SWTOmWoWiycPDNVc3qk6cW7zfsYV
+        v+CLERkseczA4Hqypp+rZSBty56xpKxUwnBBL/9W5pO3B5U454rrh5ReJRxX
+        LlpWENu2xFbfq3jEiFE8mr/A6fqxxZNJL8LmznIhhNQPSFji1g9V7MOGJlI0
+        lQZNp0ru0JRaSfAIIWX+HbXQYu63EF2HuKknHU5O4lZBjoyLDGf53s4nSyOz
+        iiEvWzpv6Txt+v3S75u3z6yb93K6vwEOOiCkCbFfe0WSN1yppWyqZlBIWngq
+        nnDkDZE4QsgClE23NA8aWJ2YkH3pdnmhX6Sd3+zzBgYdhCNsZhDCsXFLOmJu
+        6AeDK7Wm0OXbSkiTAuFCpC1z3wNV911Dc6rp+wbps595Upz7f6CfE0IWhqxN
+        3uZKu5OXJbG0nMwlZYJ92ZqOgbQlG7uK03rpJlDXFzem9SBkAUjb0KAkb7wy
+        aPasBUgeFjSfmjxvSBnSiH5vhJAGSlqlzkeRzcti49Jnj/l92zw5wGPBLXhR
+        OQnNbemyQ1NtH8ZW+EH3RYNomUfHsf3+abY4tiUxx9F91GLYrrehB5rlvQ+W
+        VZLiw8yBMF1ONgobIS0ARo9mlbxBvmb0gb92fdB0Cgk08oa8b7Xke9v86KN8
+        MwiZa1fAF305abMmH2fppraoa/jJWpG01TLpQTiobAa+FtRz+LHsZ67rFgUt
+        GN1rzSoPG4WNkBYBaT/s117W0bZZ/VpHvze/6VT/UgxF3tjvjZDmF4dwcMzy
+        IzyBlPnbENDJ510d5SkUjNz50iazS+BKcTP1LqG6LydtU2+rtR8bhY2QFgLJ
+        dZMHvKS69RoVWrj8Sr2Yfm+jHXFWNGkZ0vnCopSGsKSZdciZVoCC6Pxsnqx5
+        j16TqHq02BQ66/qXoqwF74dI1X3RSvqx1QCFjZAWAxExMxih3qk80OftsHrc
+        qD7kYzZ/gpPm593hzKJ5rVbkeak4uCXb0G9Kh9bsYlQnGp0jM5Flq+R5WJ6t
+        iExX5WOuSLVBNgobqfzL9T52Tm/oP3xMSfWp22Z0rk77cfnWmkaQ1sJbA+Oy
+        ZWk73yTS1Ixm83JwZOEKm+VblhtMHO7JgOmwblmu3/Fd7dM/sNCxvWD+p6XN
+        0rnaTPLdUuFwaW8zEjUJi5m/Tw8+8BPj1vpTt9oJ4ClspCJoJiONBdNNxb75
+        tZkLHyJtyNVW5/fqxHhOS9sZvW18k0jTytorx8YWiS2IjsQUBaHYVy0QNoic
+        iawpXcMhBT2FlZE8t0TQ3KISklolOiRxwXtiW350M7pM7udWTs6qCbRR2AiZ
+        R7J33qUT3aKZc6bSloS0zSDtx3QcGc3KYDqvp5HrS8XYREqaRtQQVcPf5+IS
+        BcvvpF6MshlRK9iIrVlexvxCsTkUxxX8aeJd1+SQYFStfm+KL2SmGToial60
+        zSqOKrVKBy3UCoWNkHkGsoVZDWpJrxEFaT9yB/ZpAawnE7mC7Owf55tEyJy7
+        gDWpydL7ji+NstlBE6klju1FaQp63dHn25ZbMi+pSTVBZu1qwftkJHqSrFl+
+        5M2SIBFIGRMPymg5Yevp7JQNq1fxr4EsGvTcoF/4ik7bMRvQtGrt3zvrtB+E
+        kCYSA98OdHTNLUbZEEXDxO+6BRSHuLbuq6bHifrNn7pJ1C0VP/Zbq69Uh5+H
+        o2ymTxv+MxO+WxE5q7W3mzXi5t1MOj2rm37tWG2haTSxYCHNzZMHhlgJcwgG
+        INRjFgL0Z6tn2g9CFiIbl8SkI97czfzBfKFh0XL9icKDwQTFGQ28JlFvZgMJ
+        zWxgImwUtsYImxUSNi1hVnEgQriZ1JM2qxh9Cx1rlZHAku+HZJJNooQ0C9lv
+        fkvsy7fOqmkUNDLtByFkboVAjyD0VgLZMk2j/phQ79+9n77Dsr1oW3EqKr87
+        e+B7FLa6vkdGtQLxKo2k2baXbMXIWpD6Q6yax3xQ2Ahpll/TSq4gbTNN9VEi
+        bQ1O+0EImSeB85tGvSmmPGnTAw8KhUDmLL8Z1Ew/5brupH5rcyFu0Whe1nXU
+        Ypd+VqnXkbJyk15ny4iaTO7PFjy3In3bpFx6kOobRilshDQRZsqoejSNmrQf
+        kEAzDRUhpEVlTSTIjh+VNtGzGtiBmHk524pTVUX7sRVLbKygDRWSMlqIyUgh
+        LhMFZ8pzE1ZBUnZOOtTS7WT0eitJXGmiXCsyhZVVsdm0pmuwDxupBPuwzdM/
+        fKTqwKjROs7r2Yi0H4S0Mq3Qh62cCJX0RQs1c5brq1Y62KDx96Z/dCo5PJZN
+        yvFcUj83JG0vrW/cjvxIVafn1JItFJt3QZudl95YRvrU4lhuS8hbVNKMFodl
+        LtwUGo2uTfW62IeNkGb8cO7u8VJ93Fq/qJhO+/Hay3q+UEJIi/2IC/dfk9JI
+        m97mR9tMfrZA7CxrUsNnvQYdFPvTWcH1DqdTStYSWtTgZZ0OxMuTtWqAvKWV
+        tY3rxZHxTJscVEtfPCOrEmlVTnNG3SY1c0a2B1G10E5rBjMizIuwYbJeJOQk
+        hJQHIz1zn/ycxP62fik6UBaid0z7QcjCkTZPllxPCExzqBTlLSoFs9W1cqI2
+        nndkz3hKS1ZMbe5TZtHu1F62Y3nnYYGajSlNGFFLv5JALKuTaVmRyKhrNFfE
+        rdy0VUV5myxqYamr5TXMS5MoIaSKDwG/DxoGENRVBs/ZyhGkZNHTSk2i5YSp
+        nICV7KtgZjMdbFDpusfTMdk/kdJRNUTUumNe02c9gbgN5b2m04RdkFPbJ6Qr
+        lp+R9DTs87pCUtxy9zaT+0aTKIWNkCZGj/a8sf5zumppQ662tetZyYTC1uLS
+        VsnR6t38Gb4Oth3PxGXPWEoL2tJ45abPznjpI8gU1JL3mkHHc1V8ZokXbRvy
+        j12ZzMj69syMBWhOJK5CU+lM7jUQtvQshe11ChshDSP+V/fMeIL4KT+E0VeO
+        aT/IImVDCwtbLVLm1rH88IAGLWujSS1ryxPqcypUlQlHpEdt602KtFXZ8Wok
+        i3liRQYzUwtc1kUTqffY7hTkzK5xidmThWh+o221y9x0JClshLQGiLLVu2nU
+        SBvTfhAK28KhnjMZVJK14awjb4y0TZI1yNmajtJI2kxA9G1gQolZ2ovCRUG0
+        bVBJ3Whe9ECE0zsnpCPmlpWlZo221fwdQGEjpDVAio/ZThA/5Qck034QChuZ
+        QtbMer5gyfbBNp3bzcgaBgusbFfy1lb/+4C0HRkrL25DfhMp0n5s6Z7QEbdy
+        oy9bIRFvNcJm88+SkBb48PQniG8USPsx28nnCSELW9awsnPEy6+GwQWQNTR/
+        ntbTGFkDfUmRLb0iq9o9MQzT7XgjUnE/O4ZSks5bQS66ioMxWvmHOyNshLTQ
+        ryyMGn36yYaVjygbcrWFR5AubYupJS5Jh7/vyPxzYjwr/RM5mcgVZlUOI2y1
+        y1p/1pG3R1J6cMHyuNcECllz5qga0VS6f9jr7xYGo0j7c16fti1dE+LYbtn0
+        Ga0caWOTKCGt9gurwU2jwKT9aF/aJ5v7UupLzWHFk6Zj31BaLxS2xghbVNYK
+        6vnLQ+1KmmxZnUB6DZEtfXMna2GOjYscHC3ddjLnjSLtjefkjM50ydRPC0Ha
+        2CRKSKt9mK5drwcJNBIMbljyl38qW5e3U9ZI04LpDTf3tbEiGiRrxY1e7jbk
+        W4OsoSkUkjaXkbUoaH7dvKT0+sq/9awKA9mYHBiPe/dd5vW0cvOoXVTpWSyE
+        kDnDTBDf0C/DT/+hxGxGH0hzs6I9Lj3JGU7Y43IJL27Bnbxe8ASnkHflYDqh
+        qw3JcdGfrG2eJ7Y0zbGJ0G/KXuVpmGnh4ERCRnOWd//qdehlitfaEosII2yE
+        tCKIsjVqpoL2Cy6Qrg98gJVMWoI1nQlWQh0JmkLd4qTyAzkvutah5CjleCNC
+        mwFIGyJtRh4hNL3+83fGUroZN5C0yGAEve4vrQInfyekFT9UkfT2u/fWdYJ4
+        w5Lf/E1WMGkZlrbxa2zWnyflmkL1dq/v2omMV8edTSRrBjSLrusU2TXozZqA
+        AREQy9G8Le9OJPS8oyN5R48kxTY8gqTtStIp6MfuWEG643n9PEyz9XdjhI2Q
+        FsVMEE8IIbOVtZJ1X9TwHINxB3Nx3dTYEfPSbDQbpnnU0OPPZ3oonZD9E0nd
+        r20o56htlhY6LAUlbkNZR46lY7JrNCEvnmyTlwdTej3nS12zReH404SQFga5
+        2ZwHH9CjR+eC/XfeKePbt7PiyZyz+dFHWQkNEjUIymjO9iaGdyE7BWmzC1ra
+        hnKeJrT70001K2aWBYwehaxhcASmr0qplYRVeYAEonJpJaXjBaQHsbW8OWOu
+        rErlZLVaEKEL19d8Rt0obIS08ocumka/+a2GNI2WA7I2/NhjrHhCWlzSAKJJ
+        hyZiWlTK0eNkJe8nxcAIzGVNPigXo0fNfKSdVQ5wh8hBRrGYCeZHcpa8Ox7X
+        I2M3dWR0c6kVqcP5EDc2iRLS4uim0QbOgkAIaW1JizbroSkQTYCIJkHW0ESI
+        iJRZIDtIUTeYjyuBiWlRQHNoogWMYU1n5Wga5jjFUmm/jsxhFGzSq4d0wZId
+        w0nZOxovO3vCXDeVMsJGyAIge+ddYj/404ZMEE8IaV1ZK1kXRNUc2TXitW12
+        x1wtZ2U9zPGaCzFfZ871hK0VBlRCNFe0iUyo++7AbAxO5RQk4zm1YD7StBeV
+        M8DnulSlpOKY3UF0FHIwa8vZ3WmJ2cVjTB3PVbSNETZCFoq0feNbrARCyKTo
+        j4kOHZ3wZA1f/CsTXjRpKglAJAppMpbGPflpFdA0ipGjGCAx1SDiNn8QxcZu
+        kXOXTp6vFPKHesKoU0QiXzyZ8vK7yfxE2yhshCwQMKUU5gElhCxuWStZ97dB
+        NHaPerK2POHJiAHJZ9FUiEEF5ZoMcU7bAp/0BK8ZKUsw3VZ0IntI6xJ/kvnX
+        h5K6Lk1et6nqvt6wSZSQBQTSfDhoGm3gBPGEkOaXNTeybddwXLdp9sW9L35s
+        Tvh51cql6uhPixwZE8nkvXUkzHUXwcxGkNPVqk66VD3tGfKahUGH2mE5SCIs
+        8vpgQs7uzkh7rIDRB3r/XDSRMsJGyAIj08BZEAghLSZr6n/HJhzdpIemvaT/
+        rW9mCaiUVw3bt/R6zYSJRTilMCKNiLaFm1QxkrTXj7TtHE5IvmDN6XylFDZC
+        FtoHNyaIZ9MoIQuKwuBgdf/+I7KGhjsMNABdvnhBwKqdvB0RuI1di7POzST3
+        UWnr8keQvj6UmNNJ5ilshCxA8rfc1vAJ4gkhc8f+M8+SE//rn0hu797JklZh
+        tgLIWq6AjP62pCxXHM8uZG2HKzpNrlvdknKqP3ahLainTd1eHeg2YbV02660
+        216/wD2jseJcpZF+bfWWNrvo5LOcRp4Q0lRk2TRKyBS4LbUgwjb0X/+r7D9r
+        ixy64QYZ+8mP9XbXLQTHuGZdi0NBC8Ng1nu1pim0w89FRqrHRNrioaZhTH+F
+        gRuHJ2LSn7H8Dn7F9yF4Hnp/ZutZjLARslC/jpSsQdqagYvxq/Taa2d9zHTg
+        /Ivr/Ku22vua6trn7tolyz7zmaaq7/ksj8yOicefkCO3flzJ29lK4v5ay5wb
+        iay5ftRnNGvrx5gfUVuaWrzRstlG2jZ0FiOTllp6Y97j28NxPQ1WpebROkfY
+        CCELETSLonm0GUhs2lT1Me0XXyxOb29DrtHoey/H8e98R4YfeaTp6rsZ6pbM
+        HDSP9v/Jl+WAErfjn/msZF56WU+rtH80rjvF7xhKyvGMFxaK217ftWaeD7TZ
+        QV+2Fe3FdUTYuv1BCBiFa+ZijUpbvZpGKWyELHAwAAEDEVqJLc8/L7233LJg
+        3oPDX/+6pHfv5h8jaQiIsI3+/Q/k8BXvk0M3fkgGvv8D6c/YMpSzded4iAQi
+        QR0xRspmuyxLudIdL6532K4kLFfX94kJe5K0SR2ljXnYCFngzPUE8QARsk33
+        3SfJTZtkKBRZQtRsw7e/HcjY2LZtsvezn9WPBtOsiONWffnLWnbW3nOPPhfS
+        s08db8o0ZWEfolijoXLMftMUGb4WrvHWddcF5YTXK917lHKvJfwaBu6/X+/b
+        ZllB+bgXlLvjkkv0caeo17VcbXvltNPK1ktMXeOMhx/W94Hn5rzoawzXAc5r
+        ZB2Uux6Ox3Y8hq+BZtTw/b9711163dRN9P2sB9aBfWLt3zf9D5kOWyZixWGS
+        bqEg7vi4l1erUPA25nOiM2zF42KlUmLZ08c43Gy2eD7KwqLO0+ea/FwmMz6O
+        KxSKCc6w33HEcmaeRyP5zC/00vt//7nIrZ8Q+fTnJd+1xPt3Wee+a3sPHpZ/
+        eOg/5E9+//amLK9RrO0SGekv5mjrUyZ1SL3te8fi0p3ISNyGIHuijPe0Xjna
+        KGyELIZf4Jgg/pOfk9jfzk2fts3+l/IO9QUNITH9nyAB+YEBeVUJSk49QsSw
+        DesGIzj40ocQQBp2KpGAAJziH7+9ry8QBOzDFz+EoCvUz8oIByQH+3E87gvn
+        gmgTn1mvdO/lRAnlm3tfr9aj0hqWJ5SP1wNhwXm4J5R/TG2rVC+QVe0Nahtk
+        p9w9ROsgTL3roNL1cB00+WI77t1cw5Rn7h/nApyL/eZ1QlhxTD2I3X+vxL75
+        tWmPG1jo/+j37xX5xp/rxVHi5t56h8RvvLquyW8HhofrFj1qRHmNQs8W0aYk
+        bbS4jpQpw8rvD43Zsq4jr0RNyZn4edpC0sYIGyFk+ojC3feI/cyTDZ8gHl/u
+        iL4cUF/Q+BKGdEC0zD5Qa3Mnzo+KE6JG4egcrhVOF4VrhPfj+QX9/VN2np/q
+        3sMDChCJMuWbpk4ITrhsCAq2hUEkCcfj3iE4JkqFQQlT1Quug/uJ3kO5OpAG
+        1kG56+F4LYX+8ThvWUR0zf0bYTPyaY7tUNuH5riP36Li338sVk+PdN58Neui
+        TkDYTqa9CeRBp7K2cT1q1JHlqbyeGUJLWsTUZhNlo7ARspik7RvfkuSNV87r
+        PZjIWbUgIgVBQPQJEbQNoUhWLVGZ2AwGMYTZVuZDdqrrVxo0YZoDcT9G4CrV
+        i2nKNNep9R7qXQe1Xm8258yUwtr1OqI8HUnHFscOzQ6Qzkj+4EGx4vGgWbMw
+        MiJWLCa2kh17+XKxktP02EcrJ6JE2YzXzIlmUCemy7QSCd3cqb/AC653DbW4
+        OfWY87/11bWsVJtaJk8/gJGhtWKt2yDOl/53yVx/szLxJbOKXA0Oj8hDzzwn
+        ew8d1uvXv/c9JRIykcnI4y+8JC/vfFtvO3PDernu8vdISr3u//K9/yG3XHeN
+        bFi9Sp9//8OPypc+8Tv6nIeffk7e3Os1Ya9c2heUB3C9nXv26ePO23y6via2
+        mWvgeGzDoykX18DxR07063PM+diOY3u6Ouv2t4ZZIHYP+XWNKJt6u/vVW7l/
+        1JHTu3LiokW8TNMoI2yEkOm/zM7ZKrkvfKWqJqOZgn5k+II2/c+Wh9JZQEiw
+        PaMkBbKCyAzEZizS96zki9VvSsz50ZxwtAplQXjKNQdCjJb7kSwTpUv718Uj
+        yjLHVHPvUcz1zb1XGzU0dZD0o1VT1ct0lKuD8OCGetdBuethW95vxkXEDI9Y
+        x/ZKqUxQBpqCw8fWC500uoqR0at6HOmIW03/b9bIy5726kWj8/Y7ZPnv3SEd
+        V3sRNfS1GszM7j7ue+RRWdXXJ3/08Y9IWsltUskrZMgA8TqpBPfTv3WzXv/x
+        47/U225+//sC4ZPV/mOFcyBjBjyHdEH0IFm45k9+8Ut9/B0fukFvw/mQNNyT
+        KReCePVF58v3H3hQb8Ox5n5QJsqrF8hn16ksasT37Tbl47G8+vecdmRte17a
+        8OdlTe7PNtMoG0eJErLYomx33lVVBGI2EZjdt96qBQbNb6YZDDICQYE8oN8S
+        mvfQFBiWsIwvGxAFRNJwHJrPIBooKwyuAWnAiFLsM8ITjuRhP66BBQKEZkSA
+        ju64bvT+prr3KDgOEomycQ/RYyqtG2HCtUxErVK9ZKYZWVquDsLXq3cdVLoe
+        +q7hOHP8Tv8ale6/y78uHs2xZJZ094j7hT+V9a+9IRu++x1pv+qqkhxivYmZ
+        j4zcc/Cwlp9r33uJJONx6e7s0I/htBWIkl16zha9DwueY1s4xUV4JgBzznln
+        nBacs3nDumAfomjYt6KvN7imOd5sw/0geob7M+ViG/aDcNm4H0Th6j1qdHlb
+        6XqX7T3uH7Wl4LoV+wzOJNrJCBshixA9avSGK8UaGmxI+RCS8ECCMJCI6EhG
+        EG7ug6SFO9mbzvflxLBSOZX2m/szHe9ruffo9d+KyIZ5XdGmy+j6W2UkpZp6
+        qbUOjNTVsw7KlYcoY7kRrCin3P2/RUmrKbo25d/hOefJyd/7I1ly2x16wvY6
+        tvjNCohUNSAiNpN9+sdPmWuEz6n2HhoVZdtYyOn8d/VqGmWEjZDF+EWwdr1u
+        GiVkTn8oMBfdzP69ltnWfvvtsuzJJ2ToZ0/J6G//ru4z1xVvTO6x9atWaBF6
+        +JnnZDydlpPDw/oxiJ6pR0THfvXq63ofFkTIsA37ejo7dfMmzjF94HS5q1eW
+        nGP6soX3HfbPw36Uh3LN8egzh7Jxf+F7Mc9RnjkWZZn7aUSUzcwzKn6UDY+H
+        xhw/sijilnkXa42yMcJGyCIFaT6cB38q9tNPsjLInFAp4kaq/MLesF6LWsfn
+        PifS3S2FgvrC9zu9I/NbvIEhmI9c+wF5RAnb/3vfj/T6tZddIks6i+E8rD/y
+        7PPyt//ygF5HcyS2gevU40+feEpefmtX0OwJbrrqCr0d50AIsW+fHAn2obwf
+        /OyhkvLC14DUffTa9+vn4XsJY45F2eZ+6g2ibCllUxN+lK3dERlUzw+P27K2
+        I++rmt9/bRZRNmvEzbvpiYlZ3ezrx3P8l0RIC4Im0eTlW0uaRtfcfbes/upX
+        yx6/85prZPixx1hxZM6Zao7YJw8M1VzehiYfdBDt+zX+459K6uYP6WgN+kZB
+        1jCxOEYkHhqPyTIlDZcs59+J4a9+cJ8WtK2nz82UagNpkQMjoR8neS8v26bO
+        nKzs8EaR2rblaZvOp1yUtmoGICRTKTaJErKYaaYJ4gkhlWm7+aZgQnezQNra
+        bG9WhbRbzLxPPHo6O+bsWr1JESfkXR2+XR1P255ci8w6aTGbRAlZ5OgJ4tXi
+        PPgAK4OQZv1xJeGIW3FLRyzvReByIuNZtR5nXYE/vs1LszOXsyYsSShB8xss
+        4WspC+lULN1U2hb3pS00AKHW1B528Acwi4UQ0togytZqE8QTMnsJav7FpIYw
+        z82SL3iL5RakO5aTrDpgPM/3dD5Z2la6nvKjbMcmLORK1v0MC27ovQ2/x1V4
+        FiNshJB5mSCeEDK9UAbP3fCj+YL3/lsSz8pQ1pH9Y0oakqy3+QJdIjEllZmu
+        qk0J20kXUTdLTukoBOJtomy1jjxgHzZCiMZMEE8IaX6BMxsgAR12TslCQY6M
+        iwxnWU/zydJU6TrysqXzlozlpChsgXyXJhKeDkbYCCEByM1WeJqTcBPS1OLm
+        SkneMbAyMSEH0u3yQr9IO7/Z5w0M/BjPla6DY+O2el/QCGr5ru1Krck9+LYS
+        QopfBN09Vc3DSAiZL1krF4lxpd3JSY+TlsF8UibYl63pOJmxZIMUo2p6wIGf
+        ULfawQcUNkIIIaSZJa3C8L6ovC2LjUmvPSr5QkHcQnGAgk6wK25pZI5DBmvC
+        RMOMXOk8auqprf4P+dVs29bPHTyq9Zjj+I+23oftKMXFCFHLi5IaT9MCJ9NP
+        Ck9hI4RUzeZHH2UlEDIPslBOsCZ/uXtHRo/XwRwXgmHUQJjiodb3IFTX5ulU
+        cuWJseX1Vwvy51kym4k+KGyEEEJIC4lDOLLmSYOnaGGhsJBVv+CKrfYUfEMr
+        SpvUnAOMFKU4qGMxMxZYFaStssj570hN/dgobISQEtL5AiuB8O+1qaXNF65A
+        vrx1NMHpqE7B2+VJmSdtJp2Ey8haXaQ5kDWvyrV4VSvBJf3YaoDCRggp4cR4
+        Tk7tcSVm8xc4aX6OjC6ePBZW5LknCUYc3CDapv/postUwZaC+s8KyRp9bfay
+        FkhyeF7QIOJm1qts/nSl6nxsFDZCSAm5gitvDYzLlqXtrAzS1Ixm87JvKL2w
+        Bc1vArVCHdVNXyhImm3ZSsYKavFFzbElny94SVZtRNpsPfAAYmDKK7oC9a36
+        98Ka9OaY5tDw4IOaZM28D251I0UpbISQSSDKBmk7o7eNlUGaVtZeOTa2WGzB
+        E66gKc7TLdMsCllwLW/0oRY1BxOOF3SzaKFQ7PcWbg6dSR4wUipuQTQNbuw3
+        R5v14LlVlLvieZPrvZpAG4WNEFIWNDWNZApySldC+lIxNpGSphE1/G0eHMks
+        OlHwJKsYZcM/SYhawZagnxoEzYuu2X4Hd5PSw+/oHlgb/z3P+j0JIml+lM22
+        A3kzUTfzX1jwKknbdFDYCCFTfjnu7B9nRRAyDzIQzbMWyIEUo2w6uuaKbhoV
+        2+uvhrRrmKsS59uWP++ojrCFUk2QWb4/YWkLD0IIyZoZrRtMG2qVM/FQVI7C
+        RgghhLSmGPh2oKNrbjHKhihOoYCkrN4oWS83rhdns3w5K7jiR9bKRdhIPaS6
+        RKQDUbO8R9uLrpX2bytqG6emIoQQQhaovQV51fyBCNiipc3vqzaRzUg8FvOi
+        a6HZDWqZZJzUKGwSHinqp/cwAxEsq5grr9YRpBHsZnnhv/i3f5aBE0frVh7K
+        QpnR54QQQkgz8Ppbu+XeHz1Qdt+BQ0fk239/f4kQFEVBilEc/dybDmnHzrfl
+        Jw/9R3GqJH9KJEyTFMOjfj67Zd/+A/Lgo4/PuhxT1j//9N/1Y3j7Tx/8D70d
+        C6516MgRvf1Ef7/eVo9r12NxMPWUX8eOX9+2PzWV409VZSJrQYRNSlOC1EJT
+        RdgmxkZFltaxrDLP6yGCvUtX8JOGEELIrFje1ytbNp9Wdt/QyGjZiI5pGhV/
+        milEXbCK5tETA4Oyce0pWha8qFqxGdQ0iRpqSenRf3JQOjvaJRGPS5+659M3
+        btBiMlv2HzocPJ6+aWOwPZPNynsuPE/WnbJaXnp1hzz93Iuy+qYVMjY+4UWa
+        7PmPNUVHi5r3xwq9V0amw6NJo4MNqu2/1nTC1uxA1l7+1ZPy/t/4bVYGIYSQ
+        2Qnb0l69VCcIEmTHj0ob2j0RwTl09KjcdN01WmiKI0S9fmyTm0KrD+889OgT
+        ctlF58sZp26QFUrYsMyWTCYrR44el9Urlqv7PiaFXF4SiXiwH9Gp9mRSLt56
+        juzas08GB4f0Ni0utt1072VpM6dVmmA3MjNCOOFuLTSlsA0PnpS3XntBP3b1
+        LJEzzrlIP4Kdr74oxw4fkJwy8NXrTtXbd7/5ql5PtXfI5nMvrBgBe/3FZ9W5
+        70pM/Uo4+8LL9HGIvqFM0xy7fNUpqoyL9DHYfmj/O/oaZ19wmZY1gObVdZs2
+        y6Yzz+UnDiGELGDQNPnTR34hp21YJ7v27pfuzg65+r2XyNrVK4N9eJ7OZOSm
+        a98vz77wsm7qBDjn6vdeLI8/s02GRkbkIx+8Tm83x1x39eX6/P/5jlv1+TgO
+        1zAyZ0Tg6Il+eULtO9Y/IMlEQq667GI5df0p8t0f/JNsWr9Wdu87IJ/8nY/I
+        7/72zVrR9ux/V3753AtaijZv2iiXX3JhIGyHjhyThx//pWxYe4rsPfCudHV0
+        yHsvvkBWr1wuz2zbLjt379HHXaRE6dyzzpDv3f8v/j2/JK+/+bY+Fud/4pbf
+        lB/+6wO6fBwLHnjkMelU5eE8lHVi4KSWsMvVObhemH0HD+nHc8/arIUN65tD
+        UTavGdEOomm2jlR5gmM3obCZew5LmtHisMxFm0KtMudXoilf9evbn5XO7l55
+        37U368eXn3sikLWRoQE57z1X6X3rlTRBurCOqBdkC1JWia4er0ycg7LAS889
+        qeUM2y+64tdkYhwC94IWOMjaZe+/QU5VYmZkEOBalDVCCFn4mKZJiNoffOw3
+        tZw9/PjTWrDMPkjU1ZddooULUnXbb31IL5A0bNtyxiY5dmIgOB6ydrbaFm72
+        NFJnzkWZANd54JHHZdOGtfLZ371FXedieeSJp2V41EsajOtddelFfh4wr1/b
+        o798Vs7bcqbcrgTurNM3eX2q0OdKLaNj3nnL+pao69wkS9XjMy9s18ecefqp
+        etv1H3ifvPDKazIwOCi//7Hf0sdfoaTvIzddH5yvjz/tVC14eI7tEDSIJIRu
+        47pT9Lk47xdPP6f3e33rvOWwkrQuVaenrF6hpQ7rZp+JsOVyOX1v2I/j7EDY
+        rKZaTN0G20wyXcsqHYwQkrVamkKbNsIGUULUa9MV52qRghhBnIxAQZpMtA37
+        cew7b75a1YAFRMVA77IVOtJmrnWxEjWUhXIRtYPMhaNsp1LOCCFkUXPZRecF
+        jxAuCJgBUTQIFqJjiJpB7sAF55yl5c5s27FzlxIPLxqHvmuI0BlwLiJ35txN
+        G9bp/bgOjn/2xVf0YhgeHvHu58LztCRp/KmrTlm1Ql7ZsVP3BTtvy+ZAdEz0
+        B5x/9pn6EcciIodjRpQEPv38i3K8/6Te168EbHlfb3CeHYoU4flZSthwHcgW
+        zoGApZIJHdnb9vJrejFA2Hq6OoN1XBPCh3JOWblC3vHvwfCUug8sEMtfe99l
+        k67djJG1aB0HEbVQKC0ceZMaomtNKWzT3nA8UbKOCFlX9xIdCYOAmcjZ7K8T
+        V2XeqKNtLzz1c10+IYQQEsVEw6KkM8WJ6U2TKuQLUTojZqXlxCteA1E3nBPt
+        i4byzJe9GUjwwV+/Wt5QUrn99TflnX0H5OMf/o1JYmAiWWYdQoXI3JWXXiRn
+        nX6qfPfefwpGN5rjzEhHc35Pd2cgfO8ePqrPM/s/9uEbtcCV442339GPb+56
+        Ry8GROtQBjD3UU5q7CacdcWqkBS3nJDNRNb06262F43mSsiS6ZeGR6xjO5b9
+        u9/UfduwD9ExLGjqhMgNHD9a87XQ1AkpQ3kod9/unTrKpteHBoKmz/HxUX0s
+        qOeoU0IIIc3Pi6+94UW6XnhZCxqkKwqkbLs6Dk2dWHa8tUtvA4ioYRuic5v8
+        bWFQXvjc3X5fNiN3uC62I2qGZtDwl3+w+E1wB5U84Xpoih1Gs2vooEkZ+v11
+        08SK6yHaZSJFkzrPR85HUy0EDNfB9XA+RO257a/qiB3uF02lxetZOhqHOvz0
+        7R/Vyydu+bAuE9snX2/yhOqTt8//UvpGSHEGA8sq7c82Q1lrugibESL0ScOg
+        g18+8hPdTIl1gIECJuIFIFYQKkgdFvRhi5YVfR5dx2ACcy1TJppdEa1Dfzgz
+        uMEMZMDjs794UB+D7YQQQhY+7x46oqUJ8oTBBSAaJTMDDExuNfRTQzOnORYy
+        gyZObI+ej2ZTNJ/iXMjMaUqEDDdd9wG176mgXJRT7h4sP+L2xLPbtNyhnGuv
+        urxECro7O0tEwayjTMjXD//133SzbRA3UsehafeJZ1/QUbQtp28qOX/LGafp
+        fTg3lUzqbR9S9/aIei0oC6C8D/361aEI225dpikD50H2diiZRR2a+4rKTPTe
+        m5Vq7m4mr8EacfPuxMTErG5ux/Ec/zUTQghpGTb0ONIen/5LExGxx595Xo/k
+        bAU4k0GTStwsJTOVSjEPGyGEEFKJ7gr9sBaqGJAmfm8ZYSOEELLYqDbCRkgz
+        gAibzWoghBBCCGluKGyEEEIIIRQ2QgghhBBCYSOEEEIIobARQgghhJCWFjaO
+        tCGEENIqxB2L31tkcQrb2m4OjyaEENIasra2i41LpPWoS+Jc9fevc9oQQggh
+        hJD6w58ZhBBCCCEUNkIIIYQQQmEjhBBCCKGwEUIIIYQQChshhBBCCKGwEUII
+        IYRQ2AghhBBCCIWNEEIIIYTCRgghhBBCKGyEEEIIIYTCRgghhBBCYSOEEEII
+        IRQ2QgghhBBCYSOEEEIIobARQgghhBAKGyGEEEIIhY0QQgghhFDYCCGEEEII
+        hY0QQgghhMJGCCGEEEIobIQQQgghi1HYXNc9blkWa4IQQgghpMmAo8HV7ImJ
+        if8ei8WE0kYIIYQQ0lyyBkdTrvb3sS//8Z1//vX/668SqVTqVrVjJauHEEII
+        IWT+cV33iJK1+5Sr3Y2wWkItcYicvxBCCCGEkCZwNn/JxtT/5f2NDoWNEEII
+        IaSphA2eljdRNUbXCCGEEEKaU9rc/1+AAQDHmixwNhp67QAAAABJRU5ErkJg
+        gg==
+
+    headers: 
+      Content-Length: 
+      - 24436
+      x-goog-meta-foo: 
+      - bar
+      Authorization: 
+      - GOOG1 GOOGXKQLYTEOZTILUBZ5:0yoO46mDSvQuaeJTOjWuFXQC1hc=
+      x-goog-meta-author: 
+      - deltacloud
+      Content-Type: 
+      - text/html
+      Date: 
+      - Thu, 28 Jun 2012 13:51:52 +0000
+  response: 
+    status: 
+      code: 200
+      message: 
+    headers: 
+      Content-Length: 
+      - "0"
+      Server: 
+      - HTTP Upload Server Built on Jun 14 2012 02:12:09 (1339665129)
+      Expires: 
+      - Fri, 01 Jan 1990 00:00:00 GMT
+      Content-Type: 
+      - text/html; charset=UTF-8
+      Pragma: 
+      - no-cache
+      Date: 
+      - Thu, 28 Jun 2012 13:51:55 GMT
+      ETag: 
+      - "\"6051b502c4281855ff32dc3e924fe3b0\""
+      x-goog-sequence-number: 
+      - "1"
+      Cache-Control: 
+      - no-cache, no-store, must-revalidate
+    body: 
+      string: ""
+    http_version: 
+  recorded_at: Thu, 28 Jun 2012 13:51:55 GMT
+recorded_with: VCR 2.2.2

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/google/fixtures/test_0003_can_retrieve_named_bucket_details.yml
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/google/fixtures/test_0003_can_retrieve_named_bucket_details.yml b/server/tests/deprecated/drivers/google/fixtures/test_0003_can_retrieve_named_bucket_details.yml
new file mode 100644
index 0000000..da7b10a
--- /dev/null
+++ b/server/tests/deprecated/drivers/google/fixtures/test_0003_can_retrieve_named_bucket_details.yml
@@ -0,0 +1,34 @@
+--- 
+http_interactions: 
+- request: 
+    method: get
+    uri: https://testbucki2rpux3wdelmegoogel.commondatastorage.googleapis.com/
+    body: 
+      string: ""
+    headers: 
+      Authorization: 
+      - GOOG1 GOOGXKQLYTEOZTILUBZ5:rGTQT5CB3yfeXWfHMO2PPfRS+nU=
+      Date: 
+      - Thu, 28 Jun 2012 13:51:55 +0000
+  response: 
+    status: 
+      code: 200
+      message: 
+    headers: 
+      Content-Length: 
+      - "530"
+      Server: 
+      - HTTP Upload Server Built on Jun 14 2012 02:12:09 (1339665129)
+      Expires: 
+      - Thu, 28 Jun 2012 13:51:56 GMT
+      Content-Type: 
+      - application/xml; charset=UTF-8
+      Date: 
+      - Thu, 28 Jun 2012 13:51:56 GMT
+      Cache-Control: 
+      - private, max-age=0
+    body: 
+      string: <?xml version='1.0' encoding='UTF-8'?><ListBucketResult xmlns='http://doc.s3.amazonaws.com/2006-03-01'><Name>testbucki2rpux3wdelmegoogel</Name><Prefix></Prefix><Marker></Marker><IsTruncated>false</IsTruncated><Contents><Key>testblobk1ds91kVdelmegoogel</Key><LastModified>2012-06-28T13:51:55.477Z</LastModified><ETag>"6051b502c4281855ff32dc3e924fe3b0"</ETag><Size>24436</Size><StorageClass>STANDARD</StorageClass><Owner><ID>00b4903a9772c5a80c691066edef0ac07b267f576a2d11bbfc5bf1d2c7a2b8fd</ID></Owner></Contents></ListBucketResult>
+    http_version: 
+  recorded_at: Thu, 28 Jun 2012 13:51:56 GMT
+recorded_with: VCR 2.2.2

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/google/fixtures/test_0004_can_retrieve_details_of_a_named_blob.yml
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/google/fixtures/test_0004_can_retrieve_details_of_a_named_blob.yml b/server/tests/deprecated/drivers/google/fixtures/test_0004_can_retrieve_details_of_a_named_blob.yml
new file mode 100644
index 0000000..1cef7c2
--- /dev/null
+++ b/server/tests/deprecated/drivers/google/fixtures/test_0004_can_retrieve_details_of_a_named_blob.yml
@@ -0,0 +1,46 @@
+--- 
+http_interactions: 
+- request: 
+    method: head
+    uri: https://testbucki2rpux3wdelmegoogel.commondatastorage.googleapis.com/testblobk1ds91kVdelmegoogel
+    body: 
+      string: ""
+    headers: 
+      Authorization: 
+      - GOOG1 GOOGXKQLYTEOZTILUBZ5:7kE7uJL9uDHqE9qOLvC1UYX2bq0=
+      Date: 
+      - Thu, 28 Jun 2012 13:51:56 +0000
+  response: 
+    status: 
+      code: 200
+      message: 
+    headers: 
+      Content-Length: 
+      - "24436"
+      Accept-Ranges: 
+      - bytes
+      Server: 
+      - HTTP Upload Server Built on Jun 14 2012 02:12:09 (1339665129)
+      x-goog-meta-foo: 
+      - bar
+      Expires: 
+      - Thu, 28 Jun 2012 13:51:57 GMT
+      x-goog-meta-author: 
+      - deltacloud
+      Content-Type: 
+      - text/html
+      Last-Modified: 
+      - Thu, 28 Jun 2012 13:51:55 GMT
+      Date: 
+      - Thu, 28 Jun 2012 13:51:57 GMT
+      Cache-Control: 
+      - private, max-age=0
+      ETag: 
+      - "\"6051b502c4281855ff32dc3e924fe3b0\""
+      x-goog-sequence-number: 
+      - "1"
+    body: 
+      string: ""
+    http_version: 
+  recorded_at: Thu, 28 Jun 2012 13:51:57 GMT
+recorded_with: VCR 2.2.2

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/google/fixtures/test_0005_can_retrieve_named_blob_metadata.yml
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/google/fixtures/test_0005_can_retrieve_named_blob_metadata.yml b/server/tests/deprecated/drivers/google/fixtures/test_0005_can_retrieve_named_blob_metadata.yml
new file mode 100644
index 0000000..5821e49
--- /dev/null
+++ b/server/tests/deprecated/drivers/google/fixtures/test_0005_can_retrieve_named_blob_metadata.yml
@@ -0,0 +1,46 @@
+--- 
+http_interactions: 
+- request: 
+    method: head
+    uri: https://testbucki2rpux3wdelmegoogel.commondatastorage.googleapis.com/testblobk1ds91kVdelmegoogel
+    body: 
+      string: ""
+    headers: 
+      Authorization: 
+      - GOOG1 GOOGXKQLYTEOZTILUBZ5:VLj31PaC2zrYNSrBqrVWVcFR49I=
+      Date: 
+      - Thu, 28 Jun 2012 13:51:57 +0000
+  response: 
+    status: 
+      code: 200
+      message: 
+    headers: 
+      Content-Length: 
+      - "24436"
+      Accept-Ranges: 
+      - bytes
+      Server: 
+      - HTTP Upload Server Built on Jun 14 2012 02:12:09 (1339665129)
+      x-goog-meta-foo: 
+      - bar
+      Expires: 
+      - Thu, 28 Jun 2012 13:51:58 GMT
+      x-goog-meta-author: 
+      - deltacloud
+      Content-Type: 
+      - text/html
+      Last-Modified: 
+      - Thu, 28 Jun 2012 13:51:55 GMT
+      Date: 
+      - Thu, 28 Jun 2012 13:51:58 GMT
+      Cache-Control: 
+      - private, max-age=0
+      ETag: 
+      - "\"6051b502c4281855ff32dc3e924fe3b0\""
+      x-goog-sequence-number: 
+      - "1"
+    body: 
+      string: ""
+    http_version: 
+  recorded_at: Thu, 28 Jun 2012 13:51:58 GMT
+recorded_with: VCR 2.2.2

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/google/fixtures/test_0006_can_update_blob_metadata.yml
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/google/fixtures/test_0006_can_update_blob_metadata.yml b/server/tests/deprecated/drivers/google/fixtures/test_0006_can_update_blob_metadata.yml
new file mode 100644
index 0000000..ae7b73c
--- /dev/null
+++ b/server/tests/deprecated/drivers/google/fixtures/test_0006_can_update_blob_metadata.yml
@@ -0,0 +1,46 @@
+--- 
+http_interactions: 
+- request: 
+    method: put
+    uri: https://testbucki2rpux3wdelmegoogel.commondatastorage.googleapis.com/testblobk1ds91kVdelmegoogel
+    body: 
+      string: ""
+    headers: 
+      x-goog-copy-source: 
+      - /testbucki2rpux3wdelmegoogel/testblobk1ds91kVdelmegoogel
+      x-goog-metadata-directive: 
+      - REPLACE
+      Authorization: 
+      - GOOG1 GOOGXKQLYTEOZTILUBZ5:PxARsMZjsd/7EloIXv4FqJu+KQA=
+      x-goog-meta-author: 
+      - ApacheDeltacloud
+      x-goog-meta-oof: 
+      - rab
+      Date: 
+      - Thu, 28 Jun 2012 13:51:58 +0000
+  response: 
+    status: 
+      code: 200
+      message: 
+    headers: 
+      Content-Length: 
+      - "175"
+      Server: 
+      - HTTP Upload Server Built on Jun 14 2012 02:12:09 (1339665129)
+      Expires: 
+      - Fri, 01 Jan 1990 00:00:00 GMT
+      Content-Type: 
+      - text/html; charset=UTF-8
+      Pragma: 
+      - no-cache
+      Date: 
+      - Thu, 28 Jun 2012 13:51:59 GMT
+      ETag: 
+      - "\"6051b502c4281855ff32dc3e924fe3b0\""
+      Cache-Control: 
+      - no-cache, no-store, must-revalidate
+    body: 
+      string: <?xml version='1.0' encoding='UTF-8'?><CopyObjectResult><LastModified>2012-06-28T13:51:55.477Z</LastModified><ETag>"6051b502c4281855ff32dc3e924fe3b0"</ETag></CopyObjectResult>
+    http_version: 
+  recorded_at: Thu, 28 Jun 2012 13:51:59 GMT
+recorded_with: VCR 2.2.2

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/google/fixtures/test_0007_can_delete_blob.yml
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/google/fixtures/test_0007_can_delete_blob.yml b/server/tests/deprecated/drivers/google/fixtures/test_0007_can_delete_blob.yml
new file mode 100644
index 0000000..2b73017
--- /dev/null
+++ b/server/tests/deprecated/drivers/google/fixtures/test_0007_can_delete_blob.yml
@@ -0,0 +1,32 @@
+--- 
+http_interactions: 
+- request: 
+    method: delete
+    uri: https://testbucki2rpux3wdelmegoogel.commondatastorage.googleapis.com/testblobk1ds91kVdelmegoogel
+    body: 
+      string: ""
+    headers: 
+      Authorization: 
+      - GOOG1 GOOGXKQLYTEOZTILUBZ5:pBRSCxxl46XfP4llbg6Jedh9wXY=
+      Date: 
+      - Thu, 28 Jun 2012 13:51:59 +0000
+  response: 
+    status: 
+      code: 204
+      message: 
+    headers: 
+      Content-Length: 
+      - "0"
+      Server: 
+      - HTTP Upload Server Built on Jun 14 2012 02:12:09 (1339665129)
+      Expires: 
+      - Thu, 28 Jun 2012 13:52:00 GMT
+      Date: 
+      - Thu, 28 Jun 2012 13:52:00 GMT
+      Cache-Control: 
+      - private, max-age=0
+    body: 
+      string: ""
+    http_version: 
+  recorded_at: Thu, 28 Jun 2012 13:52:00 GMT
+recorded_with: VCR 2.2.2

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/google/fixtures/test_0008_can_delete_bucket.yml
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/google/fixtures/test_0008_can_delete_bucket.yml b/server/tests/deprecated/drivers/google/fixtures/test_0008_can_delete_bucket.yml
new file mode 100644
index 0000000..42bafd1
--- /dev/null
+++ b/server/tests/deprecated/drivers/google/fixtures/test_0008_can_delete_bucket.yml
@@ -0,0 +1,32 @@
+--- 
+http_interactions: 
+- request: 
+    method: delete
+    uri: https://testbucki2rpux3wdelmegoogel.commondatastorage.googleapis.com/
+    body: 
+      string: ""
+    headers: 
+      Authorization: 
+      - GOOG1 GOOGXKQLYTEOZTILUBZ5:fP5JoD+ItmgUWZ9uXYkiKn6SoGk=
+      Date: 
+      - Thu, 28 Jun 2012 13:52:00 +0000
+  response: 
+    status: 
+      code: 204
+      message: 
+    headers: 
+      Content-Length: 
+      - "0"
+      Server: 
+      - HTTP Upload Server Built on Jun 14 2012 02:12:09 (1339665129)
+      Expires: 
+      - Thu, 28 Jun 2012 13:52:02 GMT
+      Date: 
+      - Thu, 28 Jun 2012 13:52:02 GMT
+      Cache-Control: 
+      - private, max-age=0
+    body: 
+      string: ""
+    http_version: 
+  recorded_at: Thu, 28 Jun 2012 13:52:02 GMT
+recorded_with: VCR 2.2.2

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/google/fixtures/test_0015_must_re-validate_the_driver_credentials_when_using_force_auth_parameter_in_URL.yml
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/google/fixtures/test_0015_must_re-validate_the_driver_credentials_when_using_force_auth_parameter_in_URL.yml b/server/tests/deprecated/drivers/google/fixtures/test_0015_must_re-validate_the_driver_credentials_when_using_force_auth_parameter_in_URL.yml
new file mode 100644
index 0000000..5eb56b1
--- /dev/null
+++ b/server/tests/deprecated/drivers/google/fixtures/test_0015_must_re-validate_the_driver_credentials_when_using_force_auth_parameter_in_URL.yml
@@ -0,0 +1,34 @@
+--- 
+http_interactions: 
+- request: 
+    method: get
+    uri: https://commondatastorage.googleapis.com/
+    body: 
+      string: ""
+    headers: 
+      Authorization: 
+      - GOOG1 GOOGXKQLYTEOZTILUBZ5:MTx1ZUAYGF2chkSV97+H04qAFMo=
+      Date: 
+      - Thu, 28 Jun 2012 13:52:02 +0000
+  response: 
+    status: 
+      code: 200
+      message: 
+    headers: 
+      Content-Length: 
+      - "437"
+      Server: 
+      - HTTP Upload Server Built on Jun 14 2012 02:12:09 (1339665129)
+      Expires: 
+      - Thu, 28 Jun 2012 13:52:03 GMT
+      Content-Type: 
+      - application/xml; charset=UTF-8
+      Date: 
+      - Thu, 28 Jun 2012 13:52:03 GMT
+      Cache-Control: 
+      - private, max-age=0
+    body: 
+      string: <?xml version='1.0' encoding='UTF-8'?><ListAllMyBucketsResult xmlns='http://doc.s3.amazonaws.com/2006-03-01'><Owner><ID>00b4903a97866666a0d78ccdcf31c5015cac5d76415d1d23aa190f3c14975a1f</ID></Owner><Buckets><Bucket><Name>marios_bucket</Name><CreationDate>2011-08-16T11:05:02.262Z</CreationDate></Bucket><Bucket><Name>usmariosnewbucket</Name><CreationDate>2011-09-19T12:34:31.218Z</CreationDate></Bucket></Buckets></ListAllMyBucketsResult>
+    http_version: 
+  recorded_at: Thu, 28 Jun 2012 13:52:03 GMT
+recorded_with: VCR 2.2.2

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/mock/api_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/mock/api_test.rb b/server/tests/deprecated/drivers/mock/api_test.rb
new file mode 100644
index 0000000..860c6d5
--- /dev/null
+++ b/server/tests/deprecated/drivers/mock/api_test.rb
@@ -0,0 +1,10 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/drivers/mock/common'
+
+describe 'Deltacloud API' do
+
+  include Deltacloud::Test
+
+  eval File.read('tests/minitest_common_api_test.rb')
+
+end

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/mock/buckets_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/mock/buckets_test.rb b/server/tests/deprecated/drivers/mock/buckets_test.rb
new file mode 100644
index 0000000..97ef445
--- /dev/null
+++ b/server/tests/deprecated/drivers/mock/buckets_test.rb
@@ -0,0 +1,195 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/drivers/mock/common'
+
+describe 'Deltacloud API buckets' do
+  include Deltacloud::Test
+
+  it 'must advertise have the buckets collection in API entrypoint' do
+    get root_url
+    (xml_response/'api/link[@rel=buckets]').wont_be_empty
+  end
+
+  it 'must require authentication to access the "bucket" collection' do
+    get collection_url(:buckets)
+    last_response.status.must_equal 401
+  end
+
+  it 'should respond with HTTP_OK when accessing the :buckets collection with authentication' do
+    authenticate
+    get collection_url(:buckets)
+    last_response.status.must_equal 200
+  end
+
+  it 'should support the JSON media type' do
+    authenticate
+    header 'Accept', 'application/json'
+    get collection_url(:buckets)
+    last_response.status.must_equal 200
+    last_response.headers['Content-Type'].must_equal 'application/json'
+  end
+
+  it 'must include the ETag in HTTP headers' do
+    authenticate
+    get collection_url(:buckets)
+    last_response.headers['ETag'].wont_be_nil
+  end
+
+  it 'must have the "buckets" element on top level' do
+    authenticate
+    get collection_url(:buckets)
+    xml_response.root.name.must_equal 'buckets'
+  end
+
+  it 'must have some "bucket" elements inside "buckets"' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').wont_be_empty
+  end
+
+  it 'must provide the :id attribute for each bucket in collection' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      r[:id].wont_be_nil
+    end
+  end
+
+  it 'must include the :href attribute for each "bucket" element in collection' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      r[:href].wont_be_nil
+    end
+  end
+
+  it 'must use the absolute URL in each :href attribute' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      r[:href].must_match /^http/
+    end
+  end
+
+  it 'must have the URL ending with the :id of the bucket' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      r[:href].must_match /#{r[:id]}$/
+    end
+  end
+
+  it 'must return the list of valid parameters for the :index action' do
+    authenticate
+    options collection_url(:buckets) + '/index'
+    last_response.headers['Allow'].wont_be_nil
+  end
+
+  it 'must have the "name" element defined for each bucket in collection' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      (r/'name').wont_be_nil
+    end
+  end
+
+  it 'must have the "state" element defined for each bucket in collection' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      (r/'state').wont_be_nil
+    end
+  end
+
+  it 'must return the full "bucket" when following the URL in bucket element' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      get collection_url(:buckets) + '/' + r[:id]
+      last_response.status.must_equal 200
+    end
+  end
+
+  it 'must have the "name" element for the bucket and it should match with the one in collection' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      get collection_url(:buckets) + '/' + r[:id]
+      (xml_response/'name').wont_be_empty
+      (xml_response/'name').first.text.must_equal((r/'name').first.text)
+    end
+  end
+
+  it 'must have the "size" element for the bucket and it should match with the one in collection' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      get collection_url(:buckets) + '/' + r[:id]
+      (xml_response/'size').wont_be_empty
+      (xml_response/'size').first.text.must_equal((r/'size').first.text)
+    end
+  end
+
+  it 'must have the "blob" elements for the bucket and it should match with the ones in collection' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      get collection_url(:buckets) + '/' + r[:id]
+      (xml_response/'bucket/blob').wont_be_empty
+      (xml_response/'bucket/blob').each do |b|
+        b[:id].wont_be_nil
+        b[:href].wont_be_nil
+        b[:href].must_match /^http/
+        b[:href].must_match /#{r[:id]}\/#{b[:id]}$/
+      end
+    end
+  end
+
+  it 'must have the "blob" elements for the bucket and it should match with the ones in collection' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      get collection_url(:buckets) + '/' + r[:id]
+      (xml_response/'bucket/blob').wont_be_empty
+      (xml_response/'bucket/blob').each do |b|
+        b[:id].wont_be_nil
+        b[:href].wont_be_nil
+        b[:href].must_match /^http/
+        b[:href].must_match /#{r[:id]}\/#{b[:id]}$/
+      end
+    end
+  end
+
+  it 'must allow to get all blobs details and the details should be set correctly' do
+    authenticate
+    get collection_url(:buckets)
+    (xml_response/'buckets/bucket').each do |r|
+      get collection_url(:buckets) + '/' + r[:id]
+      (xml_response/'bucket/blob').each do |b|
+        get collection_url(:buckets) + '/' + r[:id] + '/' + b[:id]
+        xml_response.root.name.must_equal 'blob'
+        xml_response.root[:id].must_equal b[:id]
+        (xml_response/'bucket').wont_be_empty
+        (xml_response/'bucket').size.must_equal 1
+        (xml_response/'bucket').first.text.wont_be_nil
+        (xml_response/'bucket').first.text.must_equal r[:id]
+        (xml_response/'content_length').wont_be_empty
+        (xml_response/'content_length').size.must_equal 1
+        (xml_response/'content_length').first.text.must_match /^(\d+)$/
+        (xml_response/'content_type').wont_be_empty
+        (xml_response/'content_type').size.must_equal 1
+        (xml_response/'content_type').first.text.wont_be_empty
+        (xml_response/'last_modified').wont_be_empty
+        (xml_response/'last_modified').size.must_equal 1
+        (xml_response/'last_modified').first.text.wont_be_empty
+        (xml_response/'content').wont_be_empty
+        (xml_response/'content').size.must_equal 1
+        (xml_response/'content').first[:rel].wont_be_nil
+        (xml_response/'content').first[:rel].must_equal 'blob_content'
+        (xml_response/'content').first[:href].wont_be_nil
+        (xml_response/'content').first[:href].must_match /^http/
+        (xml_response/'content').first[:href].must_match /\/content$/
+      end
+    end
+  end
+
+end

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/mock/common.rb
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/mock/common.rb b/server/tests/deprecated/drivers/mock/common.rb
new file mode 100644
index 0000000..d39300a
--- /dev/null
+++ b/server/tests/deprecated/drivers/mock/common.rb
@@ -0,0 +1,7 @@
+ENV['API_DRIVER']   = 'mock'
+ENV['TESTS_API_USERNAME'] = 'mockuser'
+ENV['TESTS_API_PASSWORD'] = 'mockpassword'
+
+
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/minitest_common'

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/mock/drivers_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/mock/drivers_test.rb b/server/tests/deprecated/drivers/mock/drivers_test.rb
new file mode 100644
index 0000000..e110446
--- /dev/null
+++ b/server/tests/deprecated/drivers/mock/drivers_test.rb
@@ -0,0 +1,123 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/drivers/mock/common'
+
+describe 'Deltacloud API drivers' do
+  include Deltacloud::Test
+
+  it 'must advertise have the drivers collection in API entrypoint' do
+    get root_url
+    (xml_response/'api/link[@rel=drivers]').wont_be_empty
+  end
+
+  it 'must not require authentication to access the "driver" collection' do
+    get collection_url(:drivers)
+    last_response.status.must_equal 200
+  end
+
+  it 'should respond with HTTP_OK when accessing the :drivers collection with authentication' do
+    get collection_url(:drivers)
+    last_response.status.must_equal 200
+  end
+
+  it 'should support the JSON media type' do
+    header 'Accept', 'application/json'
+    get collection_url(:drivers)
+    last_response.status.must_equal 200
+    last_response.headers['Content-Type'].must_equal 'application/json'
+  end
+
+  it 'must include the ETag in HTTP headers' do
+    get collection_url(:drivers)
+    last_response.headers['ETag'].wont_be_nil
+  end
+
+  it 'must have the "drivers" element on top level' do
+    get collection_url(:drivers)
+    xml_response.root.name.must_equal 'drivers'
+  end
+
+  it 'must have some "driver" elements inside "drivers"' do
+    get collection_url(:drivers)
+    (xml_response/'drivers/driver').wont_be_empty
+  end
+
+  it 'must provide the :id attribute for each driver in collection' do
+    get collection_url(:drivers)
+    (xml_response/'drivers/driver').each do |r|
+      r[:id].wont_be_nil
+    end
+  end
+
+  it 'must include the :href attribute for each "driver" element in collection' do
+    get collection_url(:drivers)
+    (xml_response/'drivers/driver').each do |r|
+      r[:href].wont_be_nil
+    end
+  end
+
+  it 'must use the absolute URL in each :href attribute' do
+    get collection_url(:drivers)
+    (xml_response/'drivers/driver').each do |r|
+      r[:href].must_match /^http/
+    end
+  end
+
+  it 'must have the URL ending with the :id of the driver' do
+    get collection_url(:drivers)
+    (xml_response/'drivers/driver').each do |r|
+      r[:href].must_match /#{r[:id]}$/
+    end
+  end
+
+  it 'must return the list of valid parameters for the :index action' do
+    options collection_url(:drivers) + '/index'
+    last_response.headers['Allow'].wont_be_nil
+  end
+
+  it 'must have the "name" element defined for each driver in collection' do
+    get collection_url(:drivers)
+    (xml_response/'drivers/driver').each do |r|
+      (r/'name').wont_be_nil
+    end
+  end
+
+
+  it 'must return the full "driver" when following the URL in driver element' do
+    get collection_url(:drivers)
+    (xml_response/'drivers/driver').each do |r|
+      get collection_url(:drivers) + '/' + r[:id]
+      last_response.status.must_equal 200
+    end
+  end
+
+  it 'must have the "name" element for the driver and it should match with the one in collection' do
+    get collection_url(:drivers)
+    (xml_response/'drivers/driver').each do |r|
+      get collection_url(:drivers) + '/' + r[:id]
+      (xml_response/'name').wont_be_empty
+      (xml_response/'name').first.text.must_equal((r/'name').first.text)
+    end
+  end
+
+  it 'should advertise available providers for some drivers' do
+    get collection_url(:drivers)
+    (xml_response/'drivers/driver/provider').each do |p|
+      p[:id].wont_be_nil
+    end
+  end
+
+  it 'should expose entrypoints for each provider if driver has providers defined' do
+    get collection_url(:drivers)
+    (xml_response/'drivers/driver/provider').each do |p|
+      get collection_url(:drivers) + '/' + p.parent[:id]
+      (xml_response/"driver/provider[@id=#{p[:id]}]").wont_be_empty
+      (xml_response/"driver/provider[@id=#{p[:id]}]").size.must_equal 1
+      (xml_response/"driver/provider[@id=#{p[:id]}]/entrypoint").wont_be_empty
+      (xml_response/"driver/provider[@id=#{p[:id]}]/entrypoint").each do |e|
+        e[:kind].wont_be_nil
+        e.text.wont_be_empty
+      end
+    end
+  end
+
+end

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/mock/hardware_profiles_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/mock/hardware_profiles_test.rb b/server/tests/deprecated/drivers/mock/hardware_profiles_test.rb
new file mode 100644
index 0000000..b21f0af
--- /dev/null
+++ b/server/tests/deprecated/drivers/mock/hardware_profiles_test.rb
@@ -0,0 +1,224 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/drivers/mock/common'
+
+describe 'Deltacloud API Hardware Profiles' do
+  include Deltacloud::Test
+
+  it 'must advertise have the hardware_profiles collection in API entrypoint' do
+    get root_url
+    (xml_response/'api/link[@rel=hardware_profiles]').wont_be_empty
+  end
+
+  it 'should respond with HTTP_OK when accessing the :hardware_profiles collection with authentication' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    last_response.status.must_equal 200
+  end
+
+  it 'should support the JSON media type' do
+    authenticate
+    header 'Accept', 'application/json'
+    get collection_url(:hardware_profiles)
+    last_response.status.must_equal 200
+    last_response.headers['Content-Type'].must_equal 'application/json'
+  end
+
+  it 'must include the ETag in HTTP headers' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    last_response.headers['ETag'].wont_be_nil
+  end
+
+  it 'must have the "hardware_profiles" element on top level' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    xml_response.root.name.must_equal 'hardware_profiles'
+  end
+
+  it 'must have some "hardware_profile" elements inside "hardware_profiles"' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').wont_be_empty
+  end
+
+  it 'must provide the :id attribute for each hardware_profile in collection' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      r[:id].wont_be_nil
+    end
+  end
+
+  it 'must include the :href attribute for each "hardware_profile" element in collection' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      r[:href].wont_be_nil
+    end
+  end
+
+  it 'must use the absolute URL in each :href attribute' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      r[:href].must_match /^http/
+    end
+  end
+
+  it 'must have the URL ending with the :id of the hardware_profile' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      r[:href].must_match /#{r[:id]}$/
+    end
+  end
+
+  it 'must return the list of valid parameters for the :index action' do
+    authenticate
+    options collection_url(:hardware_profiles) + '/index'
+    last_response.headers['Allow'].wont_be_nil
+  end
+
+  it 'must have the "name" element defined for each hardware_profile in collection' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      (r/'name').wont_be_empty
+    end
+  end
+
+  it 'should have the "property" element defined if not the opaque hardware_profile' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      next if r[:id] == 'opaque'
+      (r/'property').wont_be_empty
+    end
+  end
+
+  it 'must define the :kind attribute for each "property" ' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      next if r[:id] == 'opaque'
+      (r/'property').each { |p| p[:kind].wont_be_nil }
+    end
+  end
+
+  it 'must define the :name attribute for each "property" ' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      next if r[:id] == 'opaque'
+      (r/'property').each { |p| p[:name].wont_be_nil }
+    end
+  end
+
+  it 'must define the :unit attribute for each "property" ' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      next if r[:id] == 'opaque'
+      (r/'property').each { |p| p[:unit].wont_be_nil }
+    end
+  end
+
+  it 'must define the :value attribute for each "property" ' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      next if r[:id] == 'opaque'
+      (r/'property').each { |p| p[:value].wont_be_nil }
+    end
+  end
+
+  it 'must define the "param" element if property kind is not "fixed"' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      next if r[:id] == 'opaque'
+      (r/'property').each do |p|
+        next if p[:kind] == 'fixed'
+        (p/'param').wont_be_empty
+        (p/'param').size.must_equal 1
+        (p/'param').first[:href].wont_be_nil
+        (p/'param').first[:href].must_match /^http/
+        (p/'param').first[:method].wont_be_nil
+        (p/'param').first[:name].wont_be_nil
+        (p/'param').first[:operation].wont_be_nil
+      end
+    end
+  end
+
+  it 'must provide the list of valid values when the property is defined as "enum"' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      next if r[:id] == 'opaque'
+      (r/'property').each do |p|
+        next if p[:kind] != 'enum'
+        (p/'enum/entry').wont_be_empty
+        (p/'enum/entry').each { |e| e[:value].wont_be_nil }
+      end
+    end
+  end
+
+  it 'must provide the range of valid values when the property is defined as "range"' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      next if r[:id] == 'opaque'
+      (r/'property').each do |p|
+        next if p[:kind] != 'range'
+        (p/'range').wont_be_empty
+        (p/'range').size.must_equal 1
+        (p/'range').first[:first].wont_be_nil
+        (p/'range').first[:last].wont_be_nil
+      end
+    end
+  end
+
+  it 'must provide the default value within the range if property defined as "range"' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      next if r[:id] == 'opaque'
+      (r/'property').each do |p|
+        next if p[:kind] != 'range'
+        ((p/'range').first[:first].to_i..(p/'range').first[:last].to_i).include?(p[:value].to_i).must_equal true
+      end
+    end
+  end
+
+  it 'must provide the default value that is included in enum list if property defined as "enum"' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      next if r[:id] == 'opaque'
+      (r/'property').each do |p|
+        next if p[:kind] != 'enum'
+        (p/'enum/entry').map { |e| e[:value] }.include?(p[:value]).must_equal true
+      end
+    end
+  end
+
+  it 'must return the full "hardware_profile" when following the URL in hardware_profile element' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      get collection_url(:hardware_profiles) + '/' + r[:id]
+      last_response.status.must_equal 200
+    end
+  end
+
+  it 'must have the "name" element for the hardware_profile and it should match with the one in collection' do
+    authenticate
+    get collection_url(:hardware_profiles)
+    (xml_response/'hardware_profiles/hardware_profile').each do |r|
+      get collection_url(:hardware_profiles) + '/' + r[:id]
+      (xml_response/'name').wont_be_empty
+      (xml_response/'name').first.text.must_equal((r/'name').first.text)
+    end
+  end
+
+end

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/570a9a04/server/tests/deprecated/drivers/mock/images_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/deprecated/drivers/mock/images_test.rb b/server/tests/deprecated/drivers/mock/images_test.rb
new file mode 100644
index 0000000..50e653c
--- /dev/null
+++ b/server/tests/deprecated/drivers/mock/images_test.rb
@@ -0,0 +1,197 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/drivers/mock/common'
+
+describe 'Deltacloud API Images' do
+  include Deltacloud::Test
+
+  it 'must advertise have the images collection in API entrypoint' do
+    get root_url
+    (xml_response/'api/link[@rel=images]').wont_be_empty
+  end
+
+  it 'must require authentication to access the "image" collection' do
+    get collection_url(:images)
+    last_response.status.must_equal 401
+  end
+
+  it 'should respond with HTTP_OK when accessing the :images collection with authentication' do
+    authenticate
+    get collection_url(:images)
+    last_response.status.must_equal 200
+  end
+
+  it 'should support the JSON media type' do
+    authenticate
+    header 'Accept', 'application/json'
+    get collection_url(:images)
+    last_response.status.must_equal 200
+    last_response.headers['Content-Type'].must_equal 'application/json'
+  end
+
+  it 'must include the ETag in HTTP headers' do
+    authenticate
+    get collection_url(:images)
+    last_response.headers['ETag'].wont_be_nil
+  end
+
+  it 'must have the "images" element on top level' do
+    authenticate
+    get collection_url(:images)
+    xml_response.root.name.must_equal 'images'
+  end
+
+  it 'must have some "image" elements inside "images"' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').wont_be_empty
+  end
+
+  it 'must provide the :id attribute for each image in collection' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      r[:id].wont_be_nil
+    end
+  end
+
+  it 'must include the :href attribute for each "image" element in collection' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      r[:href].wont_be_nil
+    end
+  end
+
+  it 'must use the absolute URL in each :href attribute' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      r[:href].must_match /^http/
+    end
+  end
+
+  it 'must have the URL ending with the :id of the image' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      r[:href].must_match /#{r[:id]}$/
+    end
+  end
+
+  it 'must return the list of valid parameters for the :index action' do
+    authenticate
+    options collection_url(:images) + '/index'
+    last_response.headers['Allow'].wont_be_nil
+  end
+
+  it 'must have the "name" element defined for each image in collection' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      (r/'name').wont_be_empty
+    end
+  end
+
+  it 'must have the "state" element defined for each image in collection' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      (r/'state').wont_be_empty
+    end
+  end
+
+  it 'must return the full "image" when following the URL in image element' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      get collection_url(:images) + '/' + r[:id]
+      last_response.status.must_equal 200
+    end
+  end
+
+  it 'must have the "name" element for the image and it should match with the one in collection' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      get collection_url(:images) + '/' + r[:id]
+      (xml_response/'name').wont_be_empty
+      (xml_response/'name').first.text.must_equal((r/'name').first.text)
+    end
+  end
+
+  it 'must have the "name" element for the image and it should match with the one in collection' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      get collection_url(:images) + '/' + r[:id]
+      (xml_response/'state').wont_be_empty
+      (xml_response/'state').first.text.must_equal((r/'state').first.text)
+    end
+  end
+
+  it 'should have the "owner_id" element for each image' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      get collection_url(:images) + '/' + r[:id]
+      (xml_response/'owner_id').wont_be_empty
+    end
+  end
+
+  it 'should have the "description" element for each image' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      get collection_url(:images) + '/' + r[:id]
+      (xml_response/'description').wont_be_empty
+    end
+  end
+
+  it 'should have the "architecture" element for each image' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      get collection_url(:images) + '/' + r[:id]
+      (xml_response/'architecture').wont_be_empty
+    end
+  end
+
+  it 'should include the list of compatible hardware_profiles for each image' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      get collection_url(:images) + '/' + r[:id]
+      (xml_response/'hardware_profiles/hardware_profile').wont_be_empty
+      (xml_response/'hardware_profiles/hardware_profile').each do |hwp|
+        hwp[:href].wont_be_nil
+        hwp[:href].must_match /^http/
+        hwp[:id].wont_be_nil
+        hwp[:href].must_match /\/#{hwp[:id]}$/
+        hwp[:rel].must_equal 'hardware_profile'
+      end
+    end
+  end
+
+  it 'should advertise the list of actions that can be executed for each image' do
+    authenticate
+    get collection_url(:images)
+    (xml_response/'images/image').each do |r|
+      get collection_url(:images) + '/' + r[:id]
+      (xml_response/'actions/link').wont_be_empty
+      (xml_response/'actions/link').each do |l|
+        l[:href].wont_be_nil
+        l[:href].must_match /^http/
+        l[:method].wont_be_nil
+        l[:rel].wont_be_nil
+      end
+    end
+  end
+
+  it 'should give client HTML form to create new image' do
+    authenticate
+    header 'Accept', 'text/html'
+    get collection_url(:images) + '/new'
+    last_response.status.must_equal 200
+  end
+
+end


Mime
View raw message