=begin = mys3_spec.rb *Copyright*:: (C) 2013 by Novu, LLC *Author(s)*:: Tamara Temple *Since*:: 2013-05-02 *License*:: GPLv3 *Version*:: 0.0.1 == Description Testing saves to AWS S3. =end require 'spec_helper' require 'fog' require 'new_backup/mys3' require 'mockbucket.rb' module NewBackup describe MyS3 do Fog.mock! let(:options) {{ :rds => { :instance_id => 'tamtest', :subnet_group => '', :instance_type => 'db.t1.micro' }, :aws => { :access_key => "A Bogus Access Key", :secret_key => "A Bogus Secret Key", :region => 'us-east-1' }, :s3 => { :raw_bucket => 'raw-bucket', :clean_bucket => 'clean-bucket', :prefix => 'db-dumps', :region => 'us-east-1', :dump_ttl => 0 }, :dump_directory => '/tmp', :timestamp => Time.now.strftime("%Y-%m-%d-%H-%M-%S-%Z") }} let(:s3) { NewBackup::MyS3.new(options) } describe "#connect" do it { s3.should respond_to(:connect) } it "should yield a connection" do s3.connect do |s3| s3.should be_a(Fog::Storage::AWS::Mock) end end end describe "#connect_bucket" do it { s3.should respond_to(:connect_bucket) } let(:connection) { MockConnection.new(3, "aws-s3") } it "should connect to a bucket and yield a block" do connection.directories.create(options[:s3][:raw_bucket]) s3.connect_bucket(connection, options[:s3][:raw_bucket]) do |bucket| bucket.key.should == options[:s3][:raw_bucket] bucket.should respond_to(:files) bucket.should respond_to(:create) bucket.should respond_to(:all) end end end describe "save file" do let(:lorem) {"/tmp/loremipsum.txt"} let(:bucket_name) {options[:s3][:raw_bucket]} let(:s3_name) {"s3://"+File.join(bucket_name, options[:s3][:prefix], File.basename(lorem))} before do FileUtils.touch(lorem) end it { s3.should respond_to(:put_file) } it "should save a file" do bucket = MockBucket.new(3, bucket_name) s3.put_file(bucket, lorem).should == s3_name end end describe "prune files" do let(:bucket) { MockBucket.new(10, options[:s3][:raw_bucket]) } it {s3.should respond_to(:prune)} it "should not remove any files" do s3.prune(bucket, 0).should == bucket.files.all.count end it "should keep one file" do s3.prune(bucket, 1).should == 1 end end end end