Skip to content

Commit 85bd931

Browse files
authored
Merge pull request #1 from Root-App/zack-update-fake-methods
Added a way to fake uploading and downloading files
2 parents 8abe20f + d8fdb7a commit 85bd931

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

lib/amazon/fake_communicator.rb

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
module Amazon
22
class FakeCommunicator
3+
def self.data
4+
@data ||= {}
5+
end
36
def initialize(access_key_id, secret_access_key, region)
47
@access_key_id = access_key_id
58
@secret_access_key = secret_access_key
69
@region = region
10+
@bucket_files
711
end
812

913
def find_bucket(bucket_name)
14+
FakeCommunicator.data[bucket_name] ||= {}
15+
@bucket_files = FakeCommunicator.data[bucket_name]
1016
_fake_bucket(bucket_name)
1117
end
1218

@@ -77,6 +83,7 @@ def _fake_bucket(bucket_name)
7783
bucket = Object.new
7884
bucket.instance_variable_set(:@bucket_name, bucket_name)
7985
bucket.instance_variable_set(:@region, @region)
86+
bucket.instance_variable_set(:@bucket_files, @bucket_files)
8087

8188
def bucket.get_folders(folder: "")
8289
case @bucket_name
@@ -112,11 +119,14 @@ def bucket.find_files(file)
112119
end
113120

114121
def bucket.download_file(object_name, local_file_name)
115-
local_file_name
122+
Tempfile.open(local_file_name) do |file|
123+
file.write(@bucket_files[object_name])
124+
file
125+
end
116126
end
117127

118128
def bucket.upload_file(object_name, local_file_name, content_type: nil)
119-
true
129+
@bucket_files[object_name] = File.read(local_file_name)
120130
end
121131

122132
def bucket.region

spec/support/shared_examples.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,18 @@
2222
expect(link).to be_present
2323
expect(link).to start_with("https://")
2424
end
25+
26+
it "should upload and download a file to s3" do
27+
file = Tempfile.open("out.txt") do |f|
28+
f.write("hello world")
29+
f
30+
end
31+
bucket.upload_file("sample.file", file.path)
32+
33+
downloaded_file = bucket.download_file("sample.file", "out.txt")
34+
expect(downloaded_file.class).to be(Tempfile)
35+
expect(downloaded_file.path).to include("out.txt")
36+
end
2537
end
2638

2739
context "cannot find valid bucket" do

0 commit comments

Comments
 (0)