Skip to content
This repository
Fetching contributors…

Cannot retrieve contributors at this time

file 127 lines (107 sloc) 3.463 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
require './test/helper'
require 'fog'

Fog.mock!

class FogTest < Test::Unit::TestCase
  context "" do

    setup do
      @fog_directory = 'papercliptests'

      @credentials = {
        :provider => 'AWS',
        :aws_access_key_id => 'ID',
        :aws_secret_access_key => 'SECRET'
      }

      @connection = Fog::Storage.new(@credentials)

      rebuild_model(
        :fog_directory => @fog_directory,
        :fog_credentials => @credentials,
        :fog_host => nil,
        :fog_public => true,
        :path => ":attachment/:basename.:extension",
        :storage => :fog
      )
    end

    should "be extended by the Fog module" do
      assert Dummy.new.avatar.is_a?(Paperclip::Storage::Fog)
    end

    context "when assigned" do
      setup do
        @file = File.new(File.join(File.dirname(__FILE__), 'fixtures', '5k.png'), 'rb')
        @dummy = Dummy.new
        @dummy.avatar = @file
      end

      teardown do
        @file.close
        directory = @connection.directories.new(:key => @fog_directory)
        directory.files.each {|file| file.destroy}
        directory.destroy
      end

      context "without a bucket" do
        should "succeed" do
          assert @dummy.save
        end
      end

      context "with a bucket" do
        setup do
          @connection.directories.create(:key => @fog_directory)
        end

        should "succeed" do
          assert @dummy.save
        end
      end

      context "without a fog_host" do
        setup do
          rebuild_model(
            :fog_directory => @fog_directory,
            :fog_credentials => @credentials,
            :fog_host => nil,
            :fog_public => true,
            :path => ":attachment/:basename.:extension",
            :storage => :fog
          )
          @dummy = Dummy.new
          @dummy.avatar = StringIO.new('.')
          @dummy.save
        end

        should "provide a public url" do
          assert !@dummy.avatar.url.nil?
        end
      end

      context "with a fog_host" do
        setup do
          rebuild_model(
            :fog_directory => @fog_directory,
            :fog_credentials => @credentials,
            :fog_host => 'http://example.com',
            :fog_public => true,
            :path => ":attachment/:basename.:extension",
            :storage => :fog
          )
          @dummy = Dummy.new
          @dummy.avatar = StringIO.new('.')
          @dummy.save
        end

        should "provide a public url" do
          assert @dummy.avatar.url =~ /^http:\/\/example\.com\/avatars\/stringio\.txt\?\d*$/
        end
      end

      context "with a fog_host that includes a wildcard placeholder" do
        setup do
          rebuild_model(
            :fog_directory => @fog_directory,
            :fog_credentials => @credentials,
            :fog_host => 'http://img%d.example.com',
            :fog_public => true,
            :path => ":attachment/:basename.:extension",
            :storage => :fog
          )
          @dummy = Dummy.new
          @dummy.avatar = StringIO.new('.')
          @dummy.save
        end

        should "provide a public url" do
          assert @dummy.avatar.url =~ /^http:\/\/img[0123]\.example\.com\/avatars\/stringio\.txt\?\d*$/
        end
      end

    end

  end
end
Something went wrong with that request. Please try again.