s3_loggable 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/s3_loggable.rb CHANGED
@@ -1,26 +1,31 @@
1
1
  require "fog"
2
2
  require "s3_loggable/exceptions"
3
3
  require "s3_loggable/logger"
4
+ require "s3_loggable/configuration"
4
5
 
5
6
  module S3Loggable
6
7
 
7
8
  RequiredCredentials = [:aws_access_key_id, :aws_secret_access_key]
8
9
 
9
10
  def self.credentials?
10
- set_credentials unless (Fog.credentials.keys & RequiredCredentials).count == RequiredCredentials.count
11
- true
11
+ set_credentials unless (Fog.credentials.keys & RequiredCredentials).count == RequiredCredentials.count
12
+ true
12
13
  end
13
14
 
14
15
  def self.set_credentials
15
- if ENV["AWS_ACCESS_KEY_ID"] and ENV["AWS_SECRET_ACCESS_KEY"]
16
- Fog.credentials[:aws_access_key_id] = ENV["AWS_ACCESS_KEY_ID"]
17
- Fog.credentials[:aws_secret_access_key] = ENV["AWS_SECRET_ACCESS_KEY"]
16
+ key = (S3Loggable.configuration.aws_access_key_id || ENV["AWS_ACCESS_KEY_ID"])
17
+ secret = (S3Loggable.configuration.aws_secret_access_key || ENV["AWS_SECRET_ACCESS_KEY"])
18
+
19
+ if key and secret
20
+ Fog.credentials[:aws_access_key_id] = key
21
+ Fog.credentials[:aws_secret_access_key] = secret
18
22
  else
19
23
  raise ConfigurationError, "Set AWS access key id and secret access key"
20
24
  end
21
25
  end
22
26
 
23
- def log_to_s3(bucket, message, id = self.id.to_s, folder = self.class.to_s, date_time = DateTime.now)
27
+ def log_to_s3(message, bucket = S3Loggable.configuration.default_bucket, id = self.id.to_s,
28
+ folder = self.class.to_s, date_time = DateTime.now)
24
29
  S3Loggable::Logger.new(bucket).log_to_s3(message, id, folder, date_time)
25
30
  end
26
31
 
@@ -0,0 +1,21 @@
1
+ module S3Loggable
2
+ class << self
3
+ attr_writer :configuration
4
+
5
+ def configuration
6
+ @configuration ||= Configuration.new
7
+ end
8
+
9
+ def configure
10
+ yield(self.configuration)
11
+ end
12
+ end
13
+
14
+ class Configuration
15
+ attr_accessor \
16
+ :aws_access_key_id,
17
+ :aws_secret_access_key,
18
+ :default_bucket
19
+
20
+ end
21
+ end
@@ -5,7 +5,7 @@ module S3Loggable
5
5
  class Logger
6
6
  attr_reader :bucket, :s3
7
7
 
8
- def initialize(bucket_name)
8
+ def initialize(bucket_name = S3Loggable.configuration.default_bucket)
9
9
  @s3 = Fog::Storage.new({:provider => 'AWS'}) if S3Loggable.credentials?
10
10
  set_s3_bucket(bucket_name)
11
11
  end
@@ -1,3 +1,3 @@
1
1
  module S3Loggable
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
data/s3_loggable.gemspec CHANGED
@@ -1,4 +1,3 @@
1
- #lib = File.expand_path('../lib', __FILE__)
2
1
  # -*- encoding: utf-8 -*-
3
2
  $:.push File.expand_path("../lib", __FILE__)
4
3
  require "s3_loggable/version"
@@ -5,20 +5,43 @@ require "s3_loggable"
5
5
  class TestS3Loggable < Test::Unit::TestCase
6
6
  class TestClass; include S3Loggable; def self.initialize(*args); end; end
7
7
 
8
- def test_credentials_is_false?
8
+ def test_credentials_are_unset_raises_an_exception
9
9
  Fog.expects(:credentials).returns({})
10
- ENV.expects(:[]).with("AWS_ACCESS_KEY_ID").returns(nil)
10
+ ENV.expects(:[]).twice.returns(nil)
11
11
  assert_raise(S3Loggable::ConfigurationError) do
12
12
  S3Loggable.credentials?
13
13
  end
14
14
  end
15
15
 
16
- def test_credentials_is_true?
16
+ def test_credentials_is_true_when_fog_is_already_used
17
17
  Fog.expects(:credentials).returns({:aws_access_key_id => "ABC",
18
18
  :aws_secret_access_key => "123"})
19
19
  assert_equal(S3Loggable.credentials?, true)
20
20
  end
21
21
 
22
+ def test_credentials_is_true_when_configuration_is_set
23
+ Fog.expects(:credentials).times(3).returns({})
24
+ config = mock('config')
25
+
26
+ S3Loggable.expects(:configuration).twice.returns(config)
27
+ config.expects(:aws_access_key_id).returns('ABC')
28
+ config.expects(:aws_secret_access_key).returns('123')
29
+
30
+ assert_equal(S3Loggable.credentials?, true)
31
+ end
32
+
33
+ def test_credentials_is_true_when_env_variables_are_set
34
+ Fog.expects(:credentials).times(3).returns({})
35
+ config = mock('config')
36
+
37
+ S3Loggable.expects(:configuration).twice.returns(config)
38
+ config.expects(:aws_access_key_id).returns(nil)
39
+ config.expects(:aws_secret_access_key).returns(nil)
40
+ ENV.expects(:[]).with("AWS_ACCESS_KEY_ID").returns("ABC")
41
+ ENV.expects(:[]).with("AWS_SECRET_ACCESS_KEY").returns("123")
42
+
43
+ assert_equal(S3Loggable.credentials?, true)
44
+ end
22
45
 
23
46
  def test_log_to_s3_instance_method
24
47
  logger = mock('logger')
@@ -31,6 +54,6 @@ class TestS3Loggable < Test::Unit::TestCase
31
54
  S3Loggable::Logger.expects(:new).with(bucket).returns(logger)
32
55
  logger.expects(:log_to_s3).returns(s3_file)
33
56
 
34
- assert_equal(test_object.log_to_s3(bucket, message, id), s3_file)
57
+ assert_equal(test_object.log_to_s3(message, bucket, id), s3_file)
35
58
  end
36
59
  end
@@ -0,0 +1,29 @@
1
+ require "test/unit"
2
+ require "mocha/setup"
3
+ require "s3_loggable"
4
+
5
+ class TestS3LoggableConfiguration < Test::Unit::TestCase
6
+
7
+ def test_default_configurations_are_nil
8
+ assert_nil(S3Loggable.configuration.aws_access_key_id)
9
+ assert_nil(S3Loggable.configuration.aws_secret_access_key)
10
+ assert_nil(S3Loggable.configuration.default_bucket)
11
+ end
12
+
13
+ def test_paramaters_can_be_set_and_accessed
14
+ key = "ABC"
15
+ secret = "123"
16
+ bucket = "foo-bar"
17
+
18
+ S3Loggable.configure do |config|
19
+ config.aws_access_key_id = key
20
+ config.aws_secret_access_key = secret
21
+ config.default_bucket = bucket
22
+ end
23
+
24
+ assert_equal(S3Loggable.configuration.aws_access_key_id, key)
25
+ assert_equal(S3Loggable.configuration.aws_secret_access_key, secret)
26
+ assert_equal(S3Loggable.configuration.default_bucket, bucket)
27
+ end
28
+
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3_loggable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-28 00:00:00.000000000 Z
12
+ date: 2013-07-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -72,11 +72,13 @@ files:
72
72
  - README.md
73
73
  - Rakefile
74
74
  - lib/s3_loggable.rb
75
+ - lib/s3_loggable/configuration.rb
75
76
  - lib/s3_loggable/exceptions.rb
76
77
  - lib/s3_loggable/logger.rb
77
78
  - lib/s3_loggable/version.rb
78
79
  - s3_loggable.gemspec
79
80
  - test/test_s3_loggable.rb
81
+ - test/test_s3_loggable_configuration.rb
80
82
  - test/test_s3_loggable_logger.rb
81
83
  homepage: http://github.com/adaptly/s3_loggable
82
84
  licenses: []