Skip to content

Commit

Permalink
Happening::AWS allows storing defaults like aws credentials and bucke…
Browse files Browse the repository at this point in the history
…t name
  • Loading branch information
leoc committed Oct 10, 2011
1 parent 9fe2d8c commit 05dc703
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 10 deletions.
28 changes: 24 additions & 4 deletions lib/happening/aws.rb
Expand Up @@ -8,11 +8,31 @@ class AWS
DIGEST = OpenSSL::Digest.new('sha1')

attr_accessor :aws_access_key_id, :aws_secret_access_key

class << self

def defaults
@_defaults ||= {}
end

def set_defaults options
@_defaults = options
end

def credentials_set?
defaults[:aws_access_key_id] and defaults[:aws_secret_access_key]
end

def bucket_set?
defaults[:bucket]
end

end

def initialize(aws_access_key_id, aws_secret_access_key)
@aws_access_key_id = aws_access_key_id
@aws_secret_access_key = aws_secret_access_key
raise ArgumentError, "need AWS Access Key Id and AWS Secret Key" if blank?(aws_access_key_id) || blank?(aws_secret_access_key)
def initialize(aws_access_key_id = nil, aws_secret_access_key = nil)
@aws_access_key_id = aws_access_key_id || Happening::AWS.defaults[:aws_access_key_id]
@aws_secret_access_key = aws_secret_access_key || Happening::AWS.defaults[:aws_secret_access_key]
raise ArgumentError, "need AWS Access Key Id and AWS Secret Key" if blank?(@aws_access_key_id) || blank?(@aws_secret_access_key)
end

def sign(method, path, headers={})
Expand Down
47 changes: 46 additions & 1 deletion test/aws_test.rb
Expand Up @@ -8,9 +8,54 @@ class ItemTest < Test::Unit::TestCase
end

context "when constructing" do
context "with defaults set" do
should "pass without the need for Access Key and Secret Key" do
Happening::AWS.set_defaults({
:aws_access_key_id => 'key',
:aws_secret_access_key => 'secret',
:bucket => 'bucket' })
assert_nothing_raised do
Happening::AWS.new
end
Happening::AWS.set_defaults({})
end

should "overwrite Access Key and Secret Key" do
Happening::AWS.set_defaults({
:aws_access_key_id => 'key',
:aws_secret_access_key => 'secret',
:bucket => 'bucket' })

aws = Happening::AWS.new('key2', 'secret2')
assert_equal 'key2', aws.aws_access_key_id
assert_equal 'secret2', aws.aws_secret_access_key
Happening::AWS.set_defaults({})
end

should "inform about the defaults which are set" do
Happening::AWS.set_defaults({
:aws_access_key_id => 'key',
:aws_secret_access_key => 'secret',
:bucket => 'bucket' })
assert Happening::AWS.bucket_set?
assert Happening::AWS.credentials_set?

Happening::AWS.set_defaults({
:aws_access_key_id => 'key',
:aws_secret_access_key => 'secret'
})
assert !Happening::AWS.bucket_set?
assert Happening::AWS.credentials_set?

Happening::AWS.set_defaults({})
assert !Happening::AWS.bucket_set?
assert !Happening::AWS.credentials_set?
end
end

should "require Access Key and Secret Key" do
assert_raise(ArgumentError) do
Happening::AWS.new(nil, nil)
Happening::AWS.new()
end

assert_raise(ArgumentError) do
Expand Down
17 changes: 12 additions & 5 deletions test/s3/item_test.rb
Expand Up @@ -16,19 +16,26 @@ class ItemTest < Test::Unit::TestCase
end

context "validation" do
should "require a bucket and a key" do
should "require a key" do
assert_raise(ArgumentError) do
item = Happening::S3::Item.new()
end

assert_raise(ArgumentError) do
item = Happening::S3::Item.new('the-key')
end

assert_nothing_raised(ArgumentError) do
item = Happening::S3::Item.new('the-bucket', 'the-key')
end
end

should "require a bucket if not set in defaults" do
assert_raise(ArgumentError) do
item = Happening::S3::Item.new('the-key')
end



#assert_nothing_raised(ArgumentError) do
# item = Happening::S3::Item.new('the-key')
#end
end

should "not allow unknown options" do
Expand Down

0 comments on commit 05dc703

Please sign in to comment.