fakes3 0.1.6.1 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 69d4e3942f56c4509fb48ff63077170b7be0cef0
4
- data.tar.gz: f02b9f875c59110a0247c2fae8a65fd819e355e2
3
+ metadata.gz: c929e6ff3d8522ac143785588c7fdc480d70ddde
4
+ data.tar.gz: 1c746e1eb8f08619a2a43cd8fddd8b3ce5287151
5
5
  SHA512:
6
- metadata.gz: 7011a1d606e2336f6b344b64c341aa1fc96a571aa60cddf5044bea0aa9afe376fa2d42e8113de3f418ed7862a4f9681c11d3076bea217776226da38f4d591d7c
7
- data.tar.gz: 9e6566785bb12340bd0b4eeb23464c2b02c9b343cf4742b19747e6f7de3b5fd753703e91e349231537960fe347dde22da8859002fbb4cfd86bc5d9945b493d89
6
+ metadata.gz: 1a6199d155b318c48d28532aab032197bc5bb25cf73f4902dcb62c55898f75c5e8187c62da57cef0e4820d849558aa77b4b2ca6c21f9d65f3a566662f9af22c1
7
+ data.tar.gz: 3975513dbc9051c4fe1207261ff44efafef820d3c19e7e7fceaa7042e035a6da8bcdac83a7c87f90bb0194e95492e1a14c4647b4a39551512e923dba95440aa7
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fakes3 (0.1.6.1)
4
+ fakes3 (0.1.7)
5
5
  builder
6
6
  thor
7
7
 
@@ -12,8 +12,15 @@ GEM
12
12
  builder
13
13
  mime-types
14
14
  xml-simple
15
+ aws-sdk-v1 (1.59.0)
16
+ json (~> 1.4)
17
+ nokogiri (>= 1.4.4)
15
18
  builder (3.2.2)
19
+ json (1.8.1)
16
20
  mime-types (1.25)
21
+ mini_portile (0.6.1)
22
+ nokogiri (1.6.4.1)
23
+ mini_portile (~> 0.6.0)
17
24
  rake (10.1.0)
18
25
  rest-client (1.6.7)
19
26
  mime-types (>= 1.16)
@@ -28,6 +35,7 @@ PLATFORMS
28
35
 
29
36
  DEPENDENCIES
30
37
  aws-s3
38
+ aws-sdk-v1
31
39
  bundler (>= 1.0.0)
32
40
  fakes3!
33
41
  rake
data/fakes3.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.add_development_dependency "right_aws"
20
20
  s.add_development_dependency "rest-client"
21
21
  s.add_development_dependency "rake"
22
- #s.add_development_dependency "aws-sdk"
22
+ s.add_development_dependency "aws-sdk-v1"
23
23
  #s.add_development_dependency "ruby-debug"
24
24
  #s.add_development_dependency "debugger"
25
25
  s.add_dependency "thor"
data/lib/fakes3/cli.rb CHANGED
@@ -10,7 +10,7 @@ module FakeS3
10
10
  method_option :root, :type => :string, :aliases => '-r', :required => true
11
11
  method_option :port, :type => :numeric, :aliases => '-p', :required => true
12
12
  method_option :address, :type => :string, :aliases => '-a', :required => false, :desc => "Bind to this address. Defaults to 0.0.0.0"
13
- method_option :hostname, :type => :string, :aliases => '-h', :desc => "The root name of the host. Defaults to s3.amazonaws.com."
13
+ method_option :hostname, :type => :string, :aliases => '-H', :desc => "The root name of the host. Defaults to s3.amazonaws.com."
14
14
  method_option :limit, :aliases => '-l', :type => :string, :desc => 'Rate limit for serving (ie. 50K, 1.0M)'
15
15
  method_option :sslcert, :type => :string, :desc => 'Path to SSL certificate'
16
16
  method_option :sslkey, :type => :string, :desc => 'Path to SSL certificate key'
@@ -152,7 +152,6 @@ module FakeS3
152
152
 
153
153
  src_obj = src_bucket.find(src_name)
154
154
  dst_bucket.add(obj)
155
- src_bucket.remove(src_obj)
156
155
  return obj
157
156
  end
158
157
 
data/lib/fakes3/server.rb CHANGED
@@ -90,6 +90,21 @@ module FakeS3
90
90
  return
91
91
  end
92
92
 
93
+ if_none_match = request["If-None-Match"]
94
+ if if_none_match == "\"#{real_obj.md5}\"" or if_none_match == "*"
95
+ response.status = 304
96
+ return
97
+ end
98
+
99
+ if_modified_since = request["If-Modified-Since"]
100
+ if if_modified_since
101
+ time = Time.httpdate(if_modified_since)
102
+ if time >= Time.iso8601(real_obj.modified_date)
103
+ response.status = 304
104
+ return
105
+ end
106
+ end
107
+
93
108
  response.status = 200
94
109
  response['Content-Type'] = real_obj.content_type
95
110
  stat = File::Stat.new(real_obj.io.path)
@@ -98,6 +113,7 @@ module FakeS3
98
113
  response.header['ETag'] = "\"#{real_obj.md5}\""
99
114
  response['Accept-Ranges'] = "bytes"
100
115
  response['Last-Ranges'] = "bytes"
116
+ response['Access-Control-Allow-Origin'] = '*'
101
117
 
102
118
  real_obj.custom_metadata.each do |header, value|
103
119
  response.header['x-amz-meta-' + header] = value
@@ -141,6 +157,7 @@ module FakeS3
141
157
  response.status = 200
142
158
  response.body = ""
143
159
  response['Content-Type'] = "text/xml"
160
+ response['Access-Control-Allow-Origin'] = '*'
144
161
 
145
162
  case s_req.type
146
163
  when Request::COPY
@@ -197,7 +214,7 @@ module FakeS3
197
214
  end
198
215
  end
199
216
  response['Content-Type'] = 'text/xml'
200
- response['Access-Control-Allow-Origin']='*'
217
+ response['Access-Control-Allow-Origin'] = '*'
201
218
  end
202
219
 
203
220
  def do_DELETE(request,response)
@@ -217,7 +234,10 @@ module FakeS3
217
234
 
218
235
  def do_OPTIONS(request, response)
219
236
  super
220
- response["Access-Control-Allow-Origin"]="*"
237
+ response["Access-Control-Allow-Origin"] = "*"
238
+ response["Access-Control-Allow-Methods"] = "HEAD, GET, PUT, POST"
239
+ response["Access-Control-Allow-Headers"] = "accept, content-type"
240
+ response["Access-Control-Expose-Headers"] = "ETag, x-amz-meta-custom-header"
221
241
  end
222
242
 
223
243
  private
@@ -1,3 +1,3 @@
1
1
  module FakeS3
2
- VERSION = "0.1.6.1"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -0,0 +1,23 @@
1
+ require 'test/test_helper'
2
+ require 'aws-sdk-v1'
3
+
4
+ class AwsSdkCommandsTest < Test::Unit::TestCase
5
+ def setup
6
+ @s3 = AWS::S3.new(:access_key_id => '123',
7
+ :secret_access_key => 'abc',
8
+ :s3_endpoint => 'localhost',
9
+ :s3_port => 10453,
10
+ :use_ssl => false)
11
+ end
12
+
13
+ def test_copy_to
14
+ bucket = @s3.buckets["test_copy_to"]
15
+ object = bucket.objects["key1"]
16
+ object.write("asdf")
17
+
18
+ assert object.exists?
19
+ object.copy_to("key2")
20
+
21
+ assert_equal 2, bucket.objects.count
22
+ end
23
+ end
@@ -2,6 +2,7 @@ require 'test/test_helper'
2
2
  require 'fileutils'
3
3
  #require 'fakes3/server'
4
4
  require 'right_aws'
5
+ require 'time'
5
6
 
6
7
  class RightAWSCommandsTest < Test::Unit::TestCase
7
8
 
@@ -117,4 +118,43 @@ class RightAWSCommandsTest < Test::Unit::TestCase
117
118
 
118
119
  end
119
120
 
121
+ def test_if_none_match
122
+ @s3.put("s3media","if_none_match_test","Hello World 1!")
123
+ obj = @s3.get("s3media","if_none_match_test")
124
+ tag = obj[:headers]["etag"]
125
+ begin
126
+ @s3.get("s3media", "if_none_match_test", {"If-None-Match"=>tag})
127
+ rescue URI::InvalidURIError
128
+ # expected error for 304
129
+ else
130
+ fail 'Should have encountered an error due to the server not returning a response due to caching'
131
+ end
132
+ @s3.put("s3media","if_none_match_test","Hello World 2!")
133
+ obj = @s3.get("s3media", "if_none_match_test", {"If-None-Match"=>tag})
134
+ assert_equal "Hello World 2!",obj[:object]
135
+ end
136
+
137
+ def test_if_modified_since
138
+ @s3.put("s3media","if_modified_since_test","Hello World 1!")
139
+ obj = @s3.get("s3media","if_modified_since_test")
140
+ modified = obj[:headers]["last-modified"]
141
+ begin
142
+ @s3.get("s3media", "if_modified_since_test", {"If-Modified-Since"=>modified})
143
+ rescue URI::InvalidURIError
144
+ # expected error for 304
145
+ else
146
+ fail 'Should have encountered an error due to the server not returning a response due to caching'
147
+ end
148
+ # Granularity of an HTTP Date is 1 second which isn't enough for the test
149
+ # so manually rewind the clock by a second
150
+ timeInThePast = Time.httpdate(modified) - 1
151
+ begin
152
+ obj = @s3.get("s3media", "if_modified_since_test", {"If-Modified-Since"=>timeInThePast.httpdate()})
153
+ rescue
154
+ fail 'Should have been downloaded since the date is in the past now'
155
+ else
156
+ #expected scenario
157
+ end
158
+ end
159
+
120
160
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fakes3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6.1
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Curtis Spencer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-11 00:00:00.000000000 Z
11
+ date: 2015-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: aws-sdk-v1
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: thor
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -138,6 +152,7 @@ files:
138
152
  - lib/fakes3/unsupported_operation.rb
139
153
  - lib/fakes3/version.rb
140
154
  - lib/fakes3/xml_adapter.rb
155
+ - test/aws_sdk_commands_test.rb
141
156
  - test/boto_test.rb
142
157
  - test/botocmd.py
143
158
  - test/local_s3_cfg
@@ -172,6 +187,7 @@ specification_version: 4
172
187
  summary: FakeS3 is a server that simulates S3 commands so you can test your S3 functionality
173
188
  in your projects
174
189
  test_files:
190
+ - test/aws_sdk_commands_test.rb
175
191
  - test/boto_test.rb
176
192
  - test/botocmd.py
177
193
  - test/local_s3_cfg
@@ -180,3 +196,4 @@ test_files:
180
196
  - test/s3_commands_test.rb
181
197
  - test/s3cmd_test.rb
182
198
  - test/test_helper.rb
199
+ has_rdoc: