deltacloud-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mfoj...@redhat.com
Subject [PATCH core 2/4] Google: Migrated tests to MiniTest
Date Wed, 22 Aug 2012 13:38:26 GMT
From: Michal Fojtik <mfojtik@redhat.com>


Signed-off-by: Michal fojtik <mfojtik@redhat.com>
---
 server/tests/drivers/google/buckets_test.rb        |  105 ++++
 server/tests/drivers/google/common.rb              |   18 +
 .../drivers/google/data/deltacloud_blob_test.png   |  Bin 0 -> 24436 bytes
 .../fixtures/test_0001_can_create_a_new_bucket.yml |   36 ++
 ...t_0002_can_create_a_new_blob_with_HTTP_POST.yml |  593 ++++++++++++++++++++
 ...test_0003_can_retrieve_named_bucket_details.yml |   34 ++
 ...t_0004_can_retrieve_details_of_a_named_blob.yml |   46 ++
 .../test_0005_can_retrieve_named_blob_metadata.yml |   46 ++
 .../test_0006_can_update_blob_metadata.yml         |   46 ++
 .../google/fixtures/test_0007_can_delete_blob.yml  |   32 ++
 .../fixtures/test_0008_can_delete_bucket.yml       |   32 ++
 ...ials_when_using_force_auth_parameter_in_URL.yml |   34 ++
 12 files changed, 1022 insertions(+)
 create mode 100644 server/tests/drivers/google/buckets_test.rb
 create mode 100644 server/tests/drivers/google/common.rb
 create mode 100644 server/tests/drivers/google/data/deltacloud_blob_test.png
 create mode 100644 server/tests/drivers/google/fixtures/test_0001_can_create_a_new_bucket.yml
 create mode 100644 server/tests/drivers/google/fixtures/test_0002_can_create_a_new_blob_with_HTTP_POST.yml
 create mode 100644 server/tests/drivers/google/fixtures/test_0003_can_retrieve_named_bucket_details.yml
 create mode 100644 server/tests/drivers/google/fixtures/test_0004_can_retrieve_details_of_a_named_blob.yml
 create mode 100644 server/tests/drivers/google/fixtures/test_0005_can_retrieve_named_blob_metadata.yml
 create mode 100644 server/tests/drivers/google/fixtures/test_0006_can_update_blob_metadata.yml
 create mode 100644 server/tests/drivers/google/fixtures/test_0007_can_delete_blob.yml
 create mode 100644 server/tests/drivers/google/fixtures/test_0008_can_delete_bucket.yml
 create mode 100644 server/tests/drivers/google/fixtures/test_0015_must_re-validate_the_driver_credentials_when_using_force_auth_parameter_in_URL.yml

diff --git a/server/tests/drivers/google/buckets_test.rb b/server/tests/drivers/google/buckets_test.rb
new file mode 100644
index 0000000..551a0aa
--- /dev/null
+++ b/server/tests/drivers/google/buckets_test.rb
@@ -0,0 +1,105 @@
+require 'minitest/autorun'
+
+require_relative File.join('..', '..', '..', 'lib', 'deltacloud', 'api.rb')
+require_relative 'common.rb'
+
+require 'tempfile'
+
+describe 'Deltacloud API' do
+
+  before do
+    @driver = Deltacloud::new(:google, credentials)
+    VCR.insert_cassette __name__
+  end
+
+  after do
+    VCR.eject_cassette
+  end
+
+  ## FIXME:
+  i_suck_and_my_tests_are_order_dependent!
+
+  def bucket_name_google
+    "testbucki2rpux3wdelmegoogel"
+  end
+
+  def blob_name_google
+    "testblobk1ds91kVdelmegoogel"
+  end
+
+  #intentional typos here - bucket names cannot contain 'google'
+  #see http://code.google.com/apis/storage/docs/reference/v1/developer-guidev1.html
+  it 'can create a new bucket' do
+    bucket_name = bucket_name_google
+    bucket = @driver.create_bucket(bucket_name)
+    bucket.id.wont_be_nil
+    bucket.name.must_equal bucket_name
+    bucket.size.must_equal 0
+    bucket.blob_list.must_be_empty
+  end
+
+  it 'can create a new blob with HTTP POST' do
+    temp_file = File.open(created_blob_local_file)
+    user_data = {
+      'HTTP-X-Deltacloud-Blobmeta-name1' => "Author",
+      'HTTP-X-Deltacloud-Blobmeta-value1' => "deltacloud",
+      'HTTP-X-Deltacloud-Blobmeta-name2' => "foo",
+      'HTTP-X-Deltacloud-Blobmeta-value2' => "bar"
+    }
+    blob = @driver.backend.create_blob(
+      @driver.credentials,
+      bucket_name_google,
+      blob_name_google,
+      { :tempfile => temp_file, :type => 'image/png'},
+      user_data
+    )
+    blob.id.wont_be_nil
+    blob.bucket.must_equal bucket_name_google
+    blob.content_type.must_equal 'image/png'
+    blob.user_metadata.keys.wont_be_empty
+  end
+
+  it 'can retrieve named bucket details' do
+    bucket = @driver.bucket(:id => bucket_name_google)
+    bucket.id.wont_be_nil
+    bucket.name.must_equal bucket_name_google
+    bucket.size.must_equal 1
+    bucket.blob_list.wont_be_nil
+    bucket.blob_list.must_include blob_name_google
+  end
+
+  it 'can retrieve details of a named blob' do
+    blob = @driver.blob({:id => blob_name_google, 'bucket' => bucket_name_google})
+    blob.bucket.must_equal bucket_name_google
+    blob.id.must_equal blob_name_google
+    blob.content_length.to_i.must_be :'>',0
+    blob.last_modified.wont_be_empty
+    blob.content_type.must_equal 'text/html'
+    blob.user_metadata.keys.wont_be_empty
+  end
+
+  it 'can retrieve named blob metadata' do
+    blob_metadata = @driver.blob_metadata({:id => blob_name_google, 'bucket' => bucket_name_google})
+    {"author"=>"deltacloud", "foo"=>"bar"}.must_equal blob_metadata
+  end
+
+  it 'can update blob metadata' do
+    new_meta = { 'author' => 'ApacheDeltacloud', 'oof' => 'rab'}
+    r = @driver.update_blob_metadata({:id => blob_name_google, 'bucket' => bucket_name_google, 'meta_hash' => new_meta})
+    r.wont_be_nil
+    r.keys.wont_be_empty
+    r['author'].must_equal 'ApacheDeltacloud'
+    r['oof'].must_equal 'rab'
+  end
+
+  it 'can delete blob' do
+    r = @driver.delete_blob(bucket_name_google, blob_name_google)
+    r.status.must_equal 204
+  end
+
+  it 'can delete bucket' do
+    r = @driver.delete_bucket(bucket_name_google)
+    r.status.must_equal 204
+  end
+
+end
diff --git a/server/tests/drivers/google/common.rb b/server/tests/drivers/google/common.rb
new file mode 100644
index 0000000..7c65ab7
--- /dev/null
+++ b/server/tests/drivers/google/common.rb
@@ -0,0 +1,18 @@
+require 'vcr'
+
+def credentials
+  {
+    :user => 'GOOGXKQLYTEOZTILUBZ5',
+    :password => 'M3pvZUy2ivT78ipQ+u1xv6TkY83q9DUnGXkov3tA'
+  }
+end
+
+def created_blob_local_file
+  File.join(File.dirname(__FILE__),"data","deltacloud_blob_test.png")
+end
+
+VCR.configure do |c|
+  c.cassette_library_dir = "#{File.dirname(__FILE__)}/fixtures/"
+  c.hook_into :excon
+  c.default_cassette_options = { :record => :none }
+end
diff --git a/server/tests/drivers/google/data/deltacloud_blob_test.png b/server/tests/drivers/google/data/deltacloud_blob_test.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf1b766689138e64236b7f8341001ba05abbef6e
GIT binary patch
literal 24436
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
ZU>U5AycFJhfJXnGytIl`rR4jd{{@1D8m|BV

literal 0
HcmV?d00001

diff --git a/server/tests/drivers/google/fixtures/test_0001_can_create_a_new_bucket.yml b/server/tests/drivers/google/fixtures/test_0001_can_create_a_new_bucket.yml
new file mode 100644
index 0000000..ded1e4e
--- /dev/null
+++ b/server/tests/drivers/google/fixtures/test_0001_can_create_a_new_bucket.yml
@@ -0,0 +1,36 @@
+--- 
+http_interactions: 
+- request: 
+    method: put
+    uri: https://testbucki2rpux3wdelmegoogel.commondatastorage.googleapis.com/
+    body: 
+      string: ""
+    headers: 
+      Authorization: 
+      - GOOG1 GOOGXKQLYTEOZTILUBZ5:M4K9MWPskNvOyouLnfg2TrwVW4M=
+      Date: 
+      - Thu, 28 Jun 2012 13:51:51 +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:52 GMT
+      Cache-Control: 
+      - no-cache, no-store, must-revalidate
+    body: 
+      string: ""
+    http_version: 
+  recorded_at: Thu, 28 Jun 2012 13:51:52 GMT
+recorded_with: VCR 2.2.2
diff --git a/server/tests/drivers/google/fixtures/test_0002_can_create_a_new_blob_with_HTTP_POST.yml b/server/tests/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/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 |
+        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
+        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
+        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
+        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
diff --git a/server/tests/drivers/google/fixtures/test_0003_can_retrieve_named_bucket_details.yml b/server/tests/drivers/google/fixtures/test_0003_can_retrieve_named_bucket_details.yml
new file mode 100644
index 0000000..da7b10a
--- /dev/null
+++ b/server/tests/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
diff --git a/server/tests/drivers/google/fixtures/test_0004_can_retrieve_details_of_a_named_blob.yml b/server/tests/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/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
diff --git a/server/tests/drivers/google/fixtures/test_0005_can_retrieve_named_blob_metadata.yml b/server/tests/drivers/google/fixtures/test_0005_can_retrieve_named_blob_metadata.yml
new file mode 100644
index 0000000..5821e49
--- /dev/null
+++ b/server/tests/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
diff --git a/server/tests/drivers/google/fixtures/test_0006_can_update_blob_metadata.yml b/server/tests/drivers/google/fixtures/test_0006_can_update_blob_metadata.yml
new file mode 100644
index 0000000..ae7b73c
--- /dev/null
+++ b/server/tests/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
diff --git a/server/tests/drivers/google/fixtures/test_0007_can_delete_blob.yml b/server/tests/drivers/google/fixtures/test_0007_can_delete_blob.yml
new file mode 100644
index 0000000..2b73017
--- /dev/null
+++ b/server/tests/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
diff --git a/server/tests/drivers/google/fixtures/test_0008_can_delete_bucket.yml b/server/tests/drivers/google/fixtures/test_0008_can_delete_bucket.yml
new file mode 100644
index 0000000..42bafd1
--- /dev/null
+++ b/server/tests/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
diff --git a/server/tests/drivers/google/fixtures/test_0015_must_re-validate_the_driver_credentials_when_using_force_auth_parameter_in_URL.yml b/server/tests/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/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
-- 
1.7.10.2


Mime
View raw message