s3 0.2.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -1
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/lib/s3.rb +1 -0
- data/lib/s3/bucket.rb +26 -21
- data/lib/s3/connection.rb +49 -43
- data/lib/s3/exceptions.rb +12 -10
- data/lib/s3/object.rb +36 -19
- data/lib/s3/service.rb +28 -23
- data/lib/s3/signature.rb +47 -21
- data/test/bucket_test.rb +57 -55
- data/test/connection_test.rb +20 -19
- data/test/object_test.rb +23 -24
- data/test/service_test.rb +30 -29
- data/test/signature_test.rb +8 -8
- data/test/test_helper.rb +4 -8
- metadata +9 -9
    
        data/test/object_test.rb
    CHANGED
    
    | @@ -13,7 +13,7 @@ class ObjectTest < Test::Unit::TestCase | |
| 13 13 | 
             
                @object_carmen = S3::Object.send(:new, @bucket_images, :key => "Carmen.png")
         | 
| 14 14 |  | 
| 15 15 | 
             
                @response_binary = Net::HTTPOK.new("1.1", "200", "OK")
         | 
| 16 | 
            -
                 | 
| 16 | 
            +
                @response_binary.stubs(:body).returns("test".force_encoding(Encoding::BINARY))
         | 
| 17 17 | 
             
                @response_binary["etag"] = ""
         | 
| 18 18 | 
             
                @response_binary["content-type"] = "image/png"
         | 
| 19 19 | 
             
                @response_binary["content-disposition"] = "inline"
         | 
| @@ -26,10 +26,10 @@ class ObjectTest < Test::Unit::TestCase | |
| 26 26 | 
             
                <CopyObjectResult> <LastModified>timestamp</LastModified> <ETag>"etag"</ETag> </CopyObjectResult>
         | 
| 27 27 | 
             
                EOXML
         | 
| 28 28 | 
             
                @response_xml = Net::HTTPOK.new("1.1", "200", "OK")
         | 
| 29 | 
            -
                 | 
| 29 | 
            +
                @response_xml.stubs(:body).returns(@xml_body)
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| 32 | 
            -
               | 
| 32 | 
            +
              test "initializing" do
         | 
| 33 33 | 
             
                assert_raise ArgumentError do S3::Object.send(:new, nil, :key => "") end # should not allow empty key
         | 
| 34 34 | 
             
                assert_raise ArgumentError do S3::Object.send(:new, nil, :key => "//") end # should not allow key with double slash
         | 
| 35 35 |  | 
| @@ -41,13 +41,13 @@ class ObjectTest < Test::Unit::TestCase | |
| 41 41 | 
             
                end
         | 
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 | 
            -
               | 
| 44 | 
            +
              test "full key" do
         | 
| 45 45 | 
             
                expected = "images/Lena.png"
         | 
| 46 46 | 
             
                actual = @object_lena.full_key
         | 
| 47 47 | 
             
                assert_equal expected, actual
         | 
| 48 48 | 
             
              end
         | 
| 49 49 |  | 
| 50 | 
            -
               | 
| 50 | 
            +
              test "url" do
         | 
| 51 51 | 
             
                bucket1 = S3::Bucket.send(:new, @service, "images")
         | 
| 52 52 |  | 
| 53 53 | 
             
                object11 = S3::Object.send(:new, bucket1, :key => "Lena.png")
         | 
| @@ -68,7 +68,7 @@ class ObjectTest < Test::Unit::TestCase | |
| 68 68 | 
             
                assert_equal expected, actual
         | 
| 69 69 | 
             
              end
         | 
| 70 70 |  | 
| 71 | 
            -
               | 
| 71 | 
            +
              test "cname url" do
         | 
| 72 72 | 
             
                bucket1 = S3::Bucket.send(:new, @service, "images.example.com")
         | 
| 73 73 |  | 
| 74 74 | 
             
                object11 = S3::Object.send(:new, bucket1, :key => "Lena.png")
         | 
| @@ -89,45 +89,44 @@ class ObjectTest < Test::Unit::TestCase | |
| 89 89 | 
             
                assert_equal expected, actual
         | 
| 90 90 | 
             
              end
         | 
| 91 91 |  | 
| 92 | 
            -
               | 
| 93 | 
            -
                 | 
| 92 | 
            +
              test "destroy" do
         | 
| 93 | 
            +
                @object_lena.expects(:object_request).with(:delete)
         | 
| 94 94 | 
             
                assert @object_lena.destroy
         | 
| 95 95 | 
             
              end
         | 
| 96 96 |  | 
| 97 | 
            -
               | 
| 98 | 
            -
                 | 
| 99 | 
            -
             | 
| 97 | 
            +
              test "save" do
         | 
| 98 | 
            +
                @object_lena.expects(:object_request).with(:put, :body=>"test", :headers=>{ :x_amz_acl=>"public-read", :content_type=>"application/octet-stream" }).returns(@response_binary)
         | 
| 100 99 | 
             
                assert @object_lena.save
         | 
| 101 100 | 
             
              end
         | 
| 102 101 |  | 
| 103 | 
            -
               | 
| 104 | 
            -
                 | 
| 102 | 
            +
              test "content and parse headers" do
         | 
| 103 | 
            +
                @object_lena.expects(:object_request).with(:get, {}).returns(@response_binary)
         | 
| 105 104 |  | 
| 106 105 | 
             
                expected = /test/n
         | 
| 107 | 
            -
                actual = @object_lena.content(true) | 
| 106 | 
            +
                actual = @object_lena.content(true)
         | 
| 108 107 | 
             
                assert_match expected, actual
         | 
| 109 108 | 
             
                assert_equal "image/png", @object_lena.content_type
         | 
| 110 109 |  | 
| 111 | 
            -
                stub(@object_lena).object_request(:get) { flunk "should not use connection" }
         | 
| 112 | 
            -
             | 
| 113 110 | 
             
                assert @object_lena.content
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                @object_lena.expects(:object_request).with(:get, {}).returns(@response_binary)
         | 
| 114 113 | 
             
                assert @object_lena.content(true)
         | 
| 115 114 | 
             
              end
         | 
| 116 115 |  | 
| 117 | 
            -
               | 
| 118 | 
            -
                 | 
| 116 | 
            +
              test "retrieve" do
         | 
| 117 | 
            +
                @object_lena.expects(:object_request).with(:get, :headers=>{:range=>0..0}).returns(@response_binary)
         | 
| 119 118 | 
             
                assert @object_lena.retrieve
         | 
| 120 119 | 
             
              end
         | 
| 121 120 |  | 
| 122 | 
            -
               | 
| 123 | 
            -
                 | 
| 121 | 
            +
              test "exists" do
         | 
| 122 | 
            +
                @object_lena.expects(:retrieve).returns(true)
         | 
| 124 123 | 
             
                assert @object_lena.exists?
         | 
| 125 124 |  | 
| 126 | 
            -
                 | 
| 125 | 
            +
                @object_carmen.expects(:retrieve).raises(S3::Error::NoSuchKey.new(nil, nil))
         | 
| 127 126 | 
             
                assert ! @object_carmen.exists?
         | 
| 128 127 | 
             
              end
         | 
| 129 128 |  | 
| 130 | 
            -
               | 
| 129 | 
            +
              test "ACL writer" do
         | 
| 131 130 | 
             
                expected = nil
         | 
| 132 131 | 
             
                actual = @object_lena.acl
         | 
| 133 132 | 
             
                assert_equal expected, actual
         | 
| @@ -145,8 +144,8 @@ class ObjectTest < Test::Unit::TestCase | |
| 145 144 | 
             
                assert_equal expected, actual
         | 
| 146 145 | 
             
              end
         | 
| 147 146 |  | 
| 148 | 
            -
               | 
| 149 | 
            -
                 | 
| 147 | 
            +
              test "copy" do
         | 
| 148 | 
            +
                @bucket_images.expects(:bucket_request).with(:put, :path => "Lena-copy.png", :headers => { :x_amz_acl => "public-read", :content_type => "application/octet-stream", :x_amz_copy_source => "images/Lena.png", :x_amz_metadata_directive => "REPLACE" }).returns(@response_xml)
         | 
| 150 149 |  | 
| 151 150 | 
             
                new_object = @object_lena.copy(:key => "Lena-copy.png")
         | 
| 152 151 |  | 
    
        data/test/service_test.rb
    CHANGED
    
    | @@ -2,37 +2,49 @@ require 'test_helper' | |
| 2 2 |  | 
| 3 3 | 
             
            class ServiceTest < Test::Unit::TestCase
         | 
| 4 4 | 
             
              def setup
         | 
| 5 | 
            +
                @buckets_list_body = <<-EOBuckets
         | 
| 6 | 
            +
                <?xml version="1.0" encoding="UTF-8"?>\n<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>123u1odhkhfoadf</ID> <DisplayName>JohnDoe</DisplayName> </Owner> <Buckets> <Bucket> <Name>data.example.com</Name> <CreationDate>2009-07-02T11:56:58.000Z</CreationDate> </Bucket> <Bucket> <Name>images</Name> <CreationDate>2009-06-05T12:26:33.000Z</CreationDate> </Bucket> </Buckets> </ListAllMyBucketsResult>
         | 
| 7 | 
            +
                EOBuckets
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                @bucket_not_exists = <<-EOBucketNoexists
         | 
| 10 | 
            +
                <?xml version="1.0" encoding="UTF-8"?>\n<Error> <Code>NoSuchBucket</Code> <Message>The specified bucket does not exists</Message> <BucketName>data2.example.com</BucketName> <RequestId>8D7519AAE74E9E99</RequestId> <HostId>DvKnnNSMnPHd1oXukyRaFNv8Lg/bpwhuUtY8Kj7eDLbaIrIT8JebSnHwi89AK1P+</HostId> </Error>
         | 
| 11 | 
            +
                EOBucketNoexists
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                @bucket_exists = <<-EOBucketexists
         | 
| 14 | 
            +
                <?xml version="1.0" encoding="UTF-8"?>\n<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>data.synergypeople.net</Name> <Prefix></Prefix> <Marker></Marker> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> </ListBucketResult>
         | 
| 15 | 
            +
                EOBucketexists
         | 
| 16 | 
            +
             | 
| 5 17 | 
             
                @service_empty_buckets_list = S3::Service.new(
         | 
| 6 18 | 
             
                  :access_key_id =>  "12345678901234567890",
         | 
| 7 19 | 
             
                  :secret_access_key =>  "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF"
         | 
| 8 20 | 
             
                )
         | 
| 9 21 | 
             
                @response_empty_buckets_list = Net::HTTPOK.new("1.1", "200", "OK")
         | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 22 | 
            +
                @service_empty_buckets_list.stubs(:service_request).returns(@response_empty_buckets_list)
         | 
| 23 | 
            +
                @response_empty_buckets_list.stubs(:body).returns(@buckets_empty_list_body)
         | 
| 12 24 |  | 
| 13 25 | 
             
                @service_buckets_list = S3::Service.new(
         | 
| 14 26 | 
             
                  :access_key_id =>  "12345678901234567890",
         | 
| 15 27 | 
             
                  :secret_access_key =>  "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF"
         | 
| 16 28 | 
             
                )
         | 
| 17 29 | 
             
                @response_buckets_list = Net::HTTPOK.new("1.1", "200", "OK")
         | 
| 18 | 
            -
                 | 
| 19 | 
            -
                 | 
| 30 | 
            +
                @service_buckets_list.stubs(:service_request).returns(@response_buckets_list)
         | 
| 31 | 
            +
                @response_buckets_list.stubs(:body).returns(@buckets_list_body)
         | 
| 20 32 |  | 
| 21 33 | 
             
                @service_bucket_exists = S3::Service.new(
         | 
| 22 34 | 
             
                  :access_key_id =>  "12345678901234567890",
         | 
| 23 35 | 
             
                  :secret_access_key =>  "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF"
         | 
| 24 36 | 
             
                )
         | 
| 25 37 | 
             
                @response_bucket_exists = Net::HTTPNotFound.new("1.1", "200", "OK")
         | 
| 26 | 
            -
                 | 
| 27 | 
            -
                 | 
| 38 | 
            +
                @service_bucket_exists.stubs(:service_request).returns(@response_bucket_exists)
         | 
| 39 | 
            +
                @response_bucket_exists.stubs(:body).returns(@bucket_exists)
         | 
| 28 40 |  | 
| 29 41 | 
             
                @service_bucket_not_exists = S3::Service.new(
         | 
| 30 42 | 
             
                  :access_key_id =>  "12345678901234567890",
         | 
| 31 43 | 
             
                  :secret_access_key =>  "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDF"
         | 
| 32 44 | 
             
                )
         | 
| 33 45 | 
             
                @response_bucket_not_exists = Net::HTTPNotFound.new("1.1", "404", "Not Found")
         | 
| 34 | 
            -
                 | 
| 35 | 
            -
                 | 
| 46 | 
            +
                @service_bucket_not_exists.stubs(:service_request).raises(S3::Error::NoSuchBucket.new(404, @response_bucket_not_exists))
         | 
| 47 | 
            +
                @response_bucket_not_exists.stubs(:body).returns(@bucket_not_exists)
         | 
| 36 48 |  | 
| 37 49 | 
             
                @buckets_empty_list = []
         | 
| 38 50 | 
             
                @buckets_empty_list_body = <<-EOEmptyBuckets
         | 
| @@ -43,34 +55,23 @@ class ServiceTest < Test::Unit::TestCase | |
| 43 55 | 
             
                  S3::Bucket.send(:new, @service_buckets_list, "data.example.com"),
         | 
| 44 56 | 
             
                  S3::Bucket.send(:new, @service_buckets_list, "images")
         | 
| 45 57 | 
             
                ]
         | 
| 46 | 
            -
                @buckets_list_body = <<-EOBuckets
         | 
| 47 | 
            -
                <?xml version="1.0" encoding="UTF-8"?>\n<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>123u1odhkhfoadf</ID> <DisplayName>JohnDoe</DisplayName> </Owner> <Buckets> <Bucket> <Name>data.example.com</Name> <CreationDate>2009-07-02T11:56:58.000Z</CreationDate> </Bucket> <Bucket> <Name>images</Name> <CreationDate>2009-06-05T12:26:33.000Z</CreationDate> </Bucket> </Buckets> </ListAllMyBucketsResult>
         | 
| 48 | 
            -
                EOBuckets
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                @bucket_not_exists = <<-EOBucketNoexists
         | 
| 51 | 
            -
                <?xml version="1.0" encoding="UTF-8"?>\n<Error> <Code>NoSuchBucket</Code> <Message>The specified bucket does not exists</Message> <BucketName>data2.example.com</BucketName> <RequestId>8D7519AAE74E9E99</RequestId> <HostId>DvKnnNSMnPHd1oXukyRaFNv8Lg/bpwhuUtY8Kj7eDLbaIrIT8JebSnHwi89AK1P+</HostId> </Error>
         | 
| 52 | 
            -
                EOBucketNoexists
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                @bucket_exists = <<-EOBucketexists
         | 
| 55 | 
            -
                <?xml version="1.0" encoding="UTF-8"?>\n<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>data.synergypeople.net</Name> <Prefix></Prefix> <Marker></Marker> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> </ListBucketResult>
         | 
| 56 | 
            -
                EOBucketexists
         | 
| 57 58 | 
             
              end
         | 
| 58 59 |  | 
| 59 | 
            -
               | 
| 60 | 
            +
              test "buckets and parse buckets empty" do
         | 
| 60 61 | 
             
                expected = @buckets_empty_list
         | 
| 61 62 | 
             
                actual = @service_empty_buckets_list.buckets
         | 
| 62 63 | 
             
                assert_equal expected.length, actual.length
         | 
| 63 64 | 
             
                assert_equal expected, actual
         | 
| 64 65 | 
             
              end
         | 
| 65 66 |  | 
| 66 | 
            -
               | 
| 67 | 
            +
              test "buckets and parse buckets" do
         | 
| 67 68 | 
             
                expected = @buckets_list
         | 
| 68 69 | 
             
                # ugly hack
         | 
| 69 70 | 
             
                actual = @service_buckets_list.buckets(true).map { |obj| obj }
         | 
| 70 71 | 
             
                assert_equal expected, actual
         | 
| 71 72 | 
             
              end
         | 
| 72 73 |  | 
| 73 | 
            -
               | 
| 74 | 
            +
              test "buckets reload" do
         | 
| 74 75 | 
             
                @service = @service_empty_buckets_list
         | 
| 75 76 |  | 
| 76 77 | 
             
                expected = @buckets_empty_list
         | 
| @@ -78,7 +79,7 @@ class ServiceTest < Test::Unit::TestCase | |
| 78 79 | 
             
                actual = @service.buckets
         | 
| 79 80 | 
             
                assert_equal expected.length, actual.length, "deliver from cache"
         | 
| 80 81 |  | 
| 81 | 
            -
                 | 
| 82 | 
            +
                @service.stubs(:service_request).returns(@response_buckets_list)
         | 
| 82 83 | 
             
                expected = @buckets_empty_list
         | 
| 83 84 | 
             
                actual = @service.buckets
         | 
| 84 85 | 
             
                assert_equal expected.length, actual.length, "deliver from cache"
         | 
| @@ -88,8 +89,8 @@ class ServiceTest < Test::Unit::TestCase | |
| 88 89 | 
             
                assert_equal expected.length, actual.length
         | 
| 89 90 | 
             
              end
         | 
| 90 91 |  | 
| 91 | 
            -
               | 
| 92 | 
            -
                 | 
| 92 | 
            +
              test "buckets build" do
         | 
| 93 | 
            +
                @service_empty_buckets_list.stubs(:service_request)
         | 
| 93 94 |  | 
| 94 95 | 
             
                expected = "bucket_name"
         | 
| 95 96 | 
             
                actual = @service_empty_buckets_list.buckets.build("bucket_name")
         | 
| @@ -97,20 +98,20 @@ class ServiceTest < Test::Unit::TestCase | |
| 97 98 | 
             
                assert_equal expected, actual.name
         | 
| 98 99 | 
             
              end
         | 
| 99 100 |  | 
| 100 | 
            -
               | 
| 101 | 
            +
              test "buckets find first" do
         | 
| 101 102 | 
             
                assert_nothing_raised do
         | 
| 102 103 | 
             
                  actual = @service_buckets_list.buckets.find_first("data.example.com")
         | 
| 103 104 | 
             
                  assert_equal "data.example.com", actual.name
         | 
| 104 105 | 
             
                end
         | 
| 105 106 | 
             
              end
         | 
| 106 107 |  | 
| 107 | 
            -
               | 
| 108 | 
            +
              test "buckets find first fail" do
         | 
| 108 109 | 
             
                assert_raise S3::Error::NoSuchBucket do
         | 
| 109 110 | 
             
                  @service_bucket_not_exists.buckets.find_first("data2.example.com")
         | 
| 110 111 | 
             
                end
         | 
| 111 112 | 
             
              end
         | 
| 112 113 |  | 
| 113 | 
            -
               | 
| 114 | 
            +
              test "buckets find all on empty list" do
         | 
| 114 115 | 
             
                assert_nothing_raised do
         | 
| 115 116 | 
             
                  expected = @buckets_empty_list
         | 
| 116 117 | 
             
                  actual = @service_empty_buckets_list.buckets.find_all
         | 
| @@ -118,7 +119,7 @@ class ServiceTest < Test::Unit::TestCase | |
| 118 119 | 
             
                end
         | 
| 119 120 | 
             
              end
         | 
| 120 121 |  | 
| 121 | 
            -
               | 
| 122 | 
            +
              test "buckets find all" do
         | 
| 122 123 | 
             
                assert_nothing_raised do
         | 
| 123 124 | 
             
                  expected = @buckets_list
         | 
| 124 125 | 
             
                  actual = @service_buckets_list.buckets.find_all
         | 
    
        data/test/signature_test.rb
    CHANGED
    
    | @@ -2,7 +2,7 @@ require 'test_helper' | |
| 2 2 |  | 
| 3 3 | 
             
            class SignatureTest < Test::Unit::TestCase
         | 
| 4 4 | 
             
              # from http://docs.amazonwebservices.com/AmazonS3/latest/RESTAuthentication.html
         | 
| 5 | 
            -
               | 
| 5 | 
            +
              test "signature for object get" do
         | 
| 6 6 | 
             
                request = Net::HTTP::Get.new("/photos/puppy.jpg")
         | 
| 7 7 | 
             
                request["host"] = "johnsmith.s3.amazonaws.com"
         | 
| 8 8 | 
             
                request["date"] = "Tue, 27 Mar 2007 19:36:42 +0000"
         | 
| @@ -17,7 +17,7 @@ class SignatureTest < Test::Unit::TestCase | |
| 17 17 | 
             
                assert_equal expected, actual
         | 
| 18 18 | 
             
              end
         | 
| 19 19 |  | 
| 20 | 
            -
               | 
| 20 | 
            +
              test "signature for object put" do
         | 
| 21 21 | 
             
                request = Net::HTTP::Put.new("/photos/puppy.jpg");
         | 
| 22 22 | 
             
                request["content-type"] = "image/jpeg"
         | 
| 23 23 | 
             
                request["content-length"] = "94328"
         | 
| @@ -34,7 +34,7 @@ class SignatureTest < Test::Unit::TestCase | |
| 34 34 | 
             
                assert_equal expected, actual
         | 
| 35 35 | 
             
              end
         | 
| 36 36 |  | 
| 37 | 
            -
               | 
| 37 | 
            +
              test "signature for list" do
         | 
| 38 38 | 
             
                request = Net::HTTP::Get.new("/?prefix=photos&max-keys=50&marker=puppy");
         | 
| 39 39 | 
             
                request["user-agent"] = "Mozilla/5.0"
         | 
| 40 40 | 
             
                request["host"] = "johnsmith.s3.amazonaws.com"
         | 
| @@ -50,7 +50,7 @@ class SignatureTest < Test::Unit::TestCase | |
| 50 50 | 
             
                assert_equal expected, actual
         | 
| 51 51 | 
             
              end
         | 
| 52 52 |  | 
| 53 | 
            -
               | 
| 53 | 
            +
              test "signature for fetch" do
         | 
| 54 54 | 
             
                request = Net::HTTP::Get.new("/?acl");
         | 
| 55 55 | 
             
                request["host"] = "johnsmith.s3.amazonaws.com"
         | 
| 56 56 | 
             
                request["date"] = "Tue, 27 Mar 2007 19:44:46 +0000"
         | 
| @@ -65,7 +65,7 @@ class SignatureTest < Test::Unit::TestCase | |
| 65 65 | 
             
                assert_equal expected, actual
         | 
| 66 66 | 
             
              end
         | 
| 67 67 |  | 
| 68 | 
            -
               | 
| 68 | 
            +
              test "signature for delete" do
         | 
| 69 69 | 
             
                request = Net::HTTP::Delete.new("/johnsmith/photos/puppy.jpg");
         | 
| 70 70 | 
             
                request["user-agent"] = "dotnet"
         | 
| 71 71 | 
             
                request["host"] = "s3.amazonaws.com"
         | 
| @@ -82,7 +82,7 @@ class SignatureTest < Test::Unit::TestCase | |
| 82 82 | 
             
                assert_equal expected, actual
         | 
| 83 83 | 
             
              end
         | 
| 84 84 |  | 
| 85 | 
            -
               | 
| 85 | 
            +
              test "signature for upload" do
         | 
| 86 86 | 
             
                request = Net::HTTP::Put.new("/db-backup.dat.gz");
         | 
| 87 87 | 
             
                request["user-agent"] = "curl/7.15.5"
         | 
| 88 88 | 
             
                request["host"] = "static.johnsmith.net:8080"
         | 
| @@ -111,7 +111,7 @@ class SignatureTest < Test::Unit::TestCase | |
| 111 111 | 
             
                assert_equal expected, actual
         | 
| 112 112 | 
             
              end
         | 
| 113 113 |  | 
| 114 | 
            -
               | 
| 114 | 
            +
              test "signature for list all my buckets" do
         | 
| 115 115 | 
             
                request = Net::HTTP::Get.new("/");
         | 
| 116 116 | 
             
                request["host"] = "s3.amazonaws.com"
         | 
| 117 117 | 
             
                request["date"] = "Wed, 28 Mar 2007 01:29:59 +0000"
         | 
| @@ -126,7 +126,7 @@ class SignatureTest < Test::Unit::TestCase | |
| 126 126 | 
             
                assert_equal expected, actual
         | 
| 127 127 | 
             
              end
         | 
| 128 128 |  | 
| 129 | 
            -
               | 
| 129 | 
            +
              test "signature for unicode keys" do
         | 
| 130 130 | 
             
                request = Net::HTTP::Get.new("/dictionary/fran%C3%A7ais/pr%c3%a9f%c3%a8re");
         | 
| 131 131 | 
             
                request["host"] = "s3.amazonaws.com"
         | 
| 132 132 | 
             
                request["date"] = "Wed, 28 Mar 2007 01:49:49 +0000"
         | 
    
        data/test/test_helper.rb
    CHANGED
    
    | @@ -1,11 +1,7 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
            require  | 
| 3 | 
            -
            require  | 
| 1 | 
            +
            require "rubygems"
         | 
| 2 | 
            +
            require "test/unit"
         | 
| 3 | 
            +
            require "mocha"
         | 
| 4 4 |  | 
| 5 5 | 
             
            $LOAD_PATH.unshift(File.dirname(__FILE__))
         | 
| 6 6 | 
             
            $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
         | 
| 7 | 
            -
            require  | 
| 8 | 
            -
             | 
| 9 | 
            -
            class Test::Unit::TestCase
         | 
| 10 | 
            -
              include RR::Adapters::TestUnit
         | 
| 11 | 
            -
            end
         | 
| 7 | 
            +
            require "s3"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: s3
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - "Jakub Ku\xC5\xBAma"
         | 
| @@ -10,7 +10,7 @@ autorequire: | |
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 12 |  | 
| 13 | 
            -
            date: 2010- | 
| 13 | 
            +
            date: 2010-02-07 00:00:00 +01:00
         | 
| 14 14 | 
             
            default_executable: s3
         | 
| 15 15 | 
             
            dependencies: 
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -34,16 +34,16 @@ dependencies: | |
| 34 34 | 
             
                    version: "2.0"
         | 
| 35 35 | 
             
                version: 
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 37 | 
            -
              name:  | 
| 37 | 
            +
              name: mocha
         | 
| 38 38 | 
             
              type: :development
         | 
| 39 39 | 
             
              version_requirement: 
         | 
| 40 40 | 
             
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 41 41 | 
             
                requirements: 
         | 
| 42 | 
            -
                - - " | 
| 42 | 
            +
                - - ">="
         | 
| 43 43 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 44 | 
            -
                    version: 0 | 
| 44 | 
            +
                    version: "0"
         | 
| 45 45 | 
             
                version: 
         | 
| 46 | 
            -
            description: 
         | 
| 46 | 
            +
            description: "S3 library provides access to Amazon's Simple Storage Service. It supports both: European and US buckets through REST API."
         | 
| 47 47 | 
             
            email: qoobaa@gmail.com
         | 
| 48 48 | 
             
            executables: 
         | 
| 49 49 | 
             
            - s3
         | 
| @@ -107,9 +107,9 @@ signing_key: | |
| 107 107 | 
             
            specification_version: 3
         | 
| 108 108 | 
             
            summary: Library for accessing S3 objects and buckets, with command line tool
         | 
| 109 109 | 
             
            test_files: 
         | 
| 110 | 
            -
            - test/bucket_test.rb
         | 
| 111 110 | 
             
            - test/object_test.rb
         | 
| 112 | 
            -
            - test/signature_test.rb
         | 
| 113 | 
            -
            - test/service_test.rb
         | 
| 114 111 | 
             
            - test/test_helper.rb
         | 
| 112 | 
            +
            - test/bucket_test.rb
         | 
| 115 113 | 
             
            - test/connection_test.rb
         | 
| 114 | 
            +
            - test/service_test.rb
         | 
| 115 | 
            +
            - test/signature_test.rb
         |