fakes3 0.1.6.1 → 0.1.7

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.
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: