benotified 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,52 @@
1
+ require 'test_helper'
2
+
3
+
4
+ class TestEmailNotifier < Test::Unit::TestCase
5
+ include BeNotified::Notifiers
6
+
7
+ def setup
8
+ email_options = {
9
+ :email => {
10
+ :smtp_address => 'localhost',
11
+ :smtp_port => 25,
12
+ :domain => 'example.com',
13
+ :username => 'login',
14
+ :password => 'pass',
15
+ :to => 'to@example.com',
16
+ :from => 'from@example.com',
17
+ :subject => 'The Subject'
18
+ }
19
+ }
20
+
21
+ # Make sure we always start fresh
22
+ BeNotified::Configuration.instance_variable_set(:@options, nil)
23
+
24
+ # In most cases pretend that configuration file does not exists
25
+ BeNotified::Configuration.stubs(:load_config_file).returns("")
26
+
27
+ # Merge email_options
28
+ BeNotified::Configuration.stubs(:config_file_options).returns(email_options)
29
+ end
30
+
31
+ def test_configuration_access
32
+ assert Email.new.respond_to? :options
33
+ end
34
+
35
+ def test_notifier_type_before_using_email
36
+ BeNotified::Configuration.options.merge!({:notifier_type => BeNotified::Notifiers::Log})
37
+
38
+ assert_raise ArgumentError do
39
+ Email.new.notify("Trying to send an email")
40
+ end
41
+ end
42
+
43
+ # Test sending email
44
+ def test_sending_email
45
+ BeNotified::Configuration.options.merge!({:notifier_type => BeNotified::Notifiers::Email})
46
+
47
+ sender = mock(:deliver)
48
+ Email::Mailer.expects(:email).returns(sender)
49
+
50
+ Email.new.notify("sending emails works fine")
51
+ end
52
+ end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+
3
+ class TestLogNotifier < Test::Unit::TestCase
4
+ include BeNotified::Notifiers
5
+ include Log4r
6
+
7
+ def setup
8
+ # Make sure we always start fresh
9
+ BeNotified::Configuration.instance_variable_set(:@options, nil)
10
+
11
+ # Pretend that configuration file does not exists
12
+ BeNotified::Configuration.stubs(:load_config_file).returns("")
13
+ end
14
+
15
+ def test_configuration_access
16
+ assert Log.new.respond_to? :options
17
+ end
18
+
19
+ def test_stdout_outputter
20
+ log = Log.new
21
+
22
+ # By default monitor should log to stdout
23
+ assert log.logger.outputters.include?(Outputter.stdout)
24
+ end
25
+
26
+ def test_file_outputter
27
+ log = Log.new
28
+
29
+ BeNotified::Configuration.options.merge!({:logger_file => '/tmp/be_notified.log'})
30
+
31
+ # Set expectation on FileOutputter
32
+ FileOutputter.expects(:new)
33
+ log.logger
34
+ end
35
+
36
+ def test_logger_notifications
37
+ log = Log.new
38
+
39
+ # Log to stdout on warn level
40
+ log.logger.expects(:warn).with("testing logger notifications")
41
+ log.notify("testing logger notifications")
42
+ end
43
+ end
@@ -0,0 +1,126 @@
1
+ require 'test_helper'
2
+
3
+ class TestConfiguration < Test::Unit::TestCase
4
+ include BeNotified
5
+
6
+ def setup
7
+ # Make sure we always start fresh
8
+ Configuration.instance_variable_set(:@options, nil)
9
+
10
+ # In most cases pretend that configuration file does not exists
11
+ Configuration.stubs(:load_config_file).returns("")
12
+ end
13
+
14
+ def test_configuration_having_default_values
15
+ assert_equal Notifiers::Log, Configuration.options[:notifier_type]
16
+ end
17
+
18
+ def test_adding_a_value_to_configuration_from_the_monitor
19
+ monitor = BeNotified::Monitor.new do
20
+ opts = {
21
+ :test => 'test'
22
+ }
23
+ configuration(opts)
24
+ end
25
+ assert_equal 'test', BeNotified::Configuration.options[:test]
26
+ end
27
+
28
+ def test_overwriting_options_from_configuration
29
+ Configuration.options.merge!({:logger_file => '/tmp/be_notified.log'})
30
+
31
+ monitor = BeNotified::Monitor.new do
32
+ opts = {
33
+ :logger_file => 'test_file.log'
34
+ }
35
+ configuration(opts)
36
+ end
37
+
38
+ assert_equal 'test_file.log', BeNotified::Configuration.options[:logger_file]
39
+ assert_equal 'test_file.log', monitor.options[:logger_file]
40
+ end
41
+
42
+ def test_options_for_email_should_be_stored_in_hash
43
+ assert Configuration.options[:email].is_a? Hash
44
+ end
45
+
46
+ def test_loading_config_from_file
47
+ # Unstub 'load_config_file'
48
+ Mocha::Mockery.instance.stubba.unstub_all
49
+
50
+ File.expects(:open).returns(mock(:read => json_file_content))
51
+ assert_equal json_file_content, Configuration.load_config_file
52
+ end
53
+
54
+ def test_loading_config_for_non_existing_file
55
+ # Unstub 'load_config_file'
56
+ Mocha::Mockery.instance.stubba.unstub_all
57
+
58
+ File.expects(:open).raises(Errno::ENOENT)
59
+ assert_equal "", Configuration.load_config_file
60
+ end
61
+
62
+ def test_parsing_invalid_file
63
+ Configuration.expects(:load_config_file).returns(json_file_content)
64
+ Configuration.expects(:puts)
65
+
66
+ JSON.expects(:parse).raises(JSON::ParserError)
67
+
68
+ assert_equal Hash.new, Configuration.config_file_options
69
+ end
70
+
71
+ def test_pasring_valid_json_content
72
+ Configuration.expects(:load_config_file).returns(json_file_content)
73
+
74
+ opts = { :logger_file => "/tmp/be_notified.log" }
75
+ assert_equal opts, Configuration.config_file_options
76
+ end
77
+
78
+ def test_merging_default_config_with_config_from_file
79
+ Configuration.expects(:load_config_file).returns(json_file_content)
80
+ assert_equal "/tmp/be_notified.log", Configuration.options[:logger_file]
81
+ end
82
+
83
+ def test_validation_of_emails_configuration
84
+ Configuration.expects(:load_config_file).returns(json_incomplete_file_content_for_email_options)
85
+
86
+ assert_raise ArgumentError do
87
+ Configuration.options
88
+ end
89
+ end
90
+
91
+ def test_validation_of_emails_options_should_not_happen_when_logger_used
92
+ Configuration.expects(:load_config_file).returns(json_file_content_with_email_options_and_logger_notifier)
93
+
94
+ assert_nothing_raised do
95
+ Configuration.options
96
+ end
97
+ end
98
+
99
+ private
100
+
101
+ def json_file_content
102
+ json_content = <<-END
103
+ {"logger_file":"/tmp/be_notified.log"}
104
+ END
105
+ end
106
+
107
+ def json_file_content_with_email_options
108
+ json_content = <<-END
109
+ {"notifier_type":"BeNotified::Notifiers::Email","email":{"smtp_address":"localhost","smtp_port":25,"domain":"example.com","username":"login","password":"pass","to":"to@example.com","from":"from@example.com","subject":"The Subject"}}
110
+ END
111
+ end
112
+
113
+ def json_incomplete_file_content_for_email_options
114
+ json_content = <<-END
115
+ {"notifier_type":"BeNotified::Notifiers::Email","email":{"smtp_address":"localhost","domain":"example.com","username":"login","password":"pass","to":"to@example.com","from":"from@example.com","subject":"The Subject"}}
116
+ END
117
+ end
118
+
119
+ def json_file_content_with_email_options_and_logger_notifier
120
+ json_content = <<-END
121
+ {"notifier_type":"BeNotified::Notifiers::Log","email":{"smtp_address":"localhost","domain":"example.com","username":"login","password":"pass","to":"to@example.com","from":"from@example.com","subject":"The Subject"}}
122
+ END
123
+ end
124
+
125
+
126
+ end
@@ -0,0 +1,6 @@
1
+ require 'test/unit'
2
+ require 'mocha'
3
+
4
+ $:.push File.join(File.dirname(__FILE__), "../lib")
5
+
6
+ require 'be_notified'
@@ -0,0 +1,36 @@
1
+ require 'test_helper'
2
+
3
+ class TestMonitor < Test::Unit::TestCase
4
+
5
+ def setup
6
+ # Make sure we always start fresh
7
+ BeNotified::Configuration.instance_variable_set(:@options, nil)
8
+
9
+ # Pretend that configuration file does not exists
10
+ BeNotified::Configuration.stubs(:load_config_file).returns("")
11
+ end
12
+
13
+ def test_do_notify
14
+ BeNotified::Notifier.any_instance.expects(:notify)
15
+
16
+ monitor = BeNotified::Monitor.new {}
17
+ monitor.expects(:notifier_type).returns(BeNotified::Notifiers::Email)
18
+ monitor.alert_when "test notification" do
19
+ true
20
+ end
21
+ end
22
+
23
+ def test_dont_notify
24
+ monitor = BeNotified::Monitor.new {}
25
+ monitor.expects(:notifier_type).never
26
+
27
+ monitor.alert_when "do not notify" do
28
+ false
29
+ end
30
+ end
31
+
32
+ def test_notifier_default_type
33
+ monitor = BeNotified::Monitor.new {}
34
+ assert_equal BeNotified::Notifiers::Log, monitor.notifier_type
35
+ end
36
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ class TestNotifier < Test::Unit::TestCase
4
+ include BeNotified
5
+
6
+ def test_notifier_sending_messages_to_log
7
+ Notifiers::Log.any_instance.expects(:notify).with("test log notifier")
8
+ Notifier.new(Notifiers::Log, "test log notifier").notify
9
+ end
10
+
11
+ def test_notifier_sending_messages_to_email
12
+ Notifiers::Email.any_instance.expects(:notify).with("test email notifier")
13
+ Notifier.new(Notifiers::Email, "test email notifier").notify
14
+ end
15
+
16
+ def test_notifier_sending_messages_to_email_for_string_type_of_notifier
17
+ Notifiers::Email.any_instance.expects(:notify).with("test email notifier")
18
+ Notifier.new("Notifiers::Email", "test email notifier").notify
19
+ end
20
+ end
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: benotified
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Dominik Staskiewicz
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain:
16
+ - |
17
+ -----BEGIN CERTIFICATE-----
18
+ MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRMwEQYDVQQDDApzdGFk
19
+ b21pbmlrMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
20
+ b20wHhcNMTEwMTA2MjMwNzM2WhcNMTIwMTA2MjMwNzM2WjBBMRMwEQYDVQQDDApz
21
+ dGFkb21pbmlrMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
22
+ FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDD2GpkWpnWvjH7
23
+ 7seIdaFsEiwXRwaJmSz9FOrc4Yuuww7FIO2JJNXNjYbYZIi2L2UFZ4QR6mcjmbnx
24
+ xPP/bnbch8w2bsaiLMGHZu8dKz/YJ8HTcJ3zwP0aq4mM9Xs1IBTPKImwGD7Mll7d
25
+ HArVoXpYSr0KkvuTfus7rul6yuZze0uALjUFX/kPLMy4y5ksmRjXWHQL/p8/VyQz
26
+ j0/iEeD7Gj7LTTeyd2bVnkhH45eCW+oyLOas2BInmp23g9PjQOCJKg2/afMaHc+l
27
+ /l5gsSiTdnUd1erQsX7FSBvOLQN00hcnh0lPTWui/ZL1QG3PI0Fw94sMUCeZyU5E
28
+ EtgPbASFAgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFFCLRokiL1VlUl12
29
+ QYH/prpHQEDiMAsGA1UdDwQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEAjwoBNyZI
30
+ o9eAPlSbGjUvSqZlqEthf3OhHrEtoDFCqGWc7atxz/pZFC48JUFV0UWQlkY/NMKG
31
+ y+rOogrrJc5cFwWO/WdwAq2m6kfPm7fDlOGS8FTV5RlHZeppOrVgAHq/U0DLfUt4
32
+ sLbM5rx6cDa/JpbFFfC9utxnZw94j4kNl1WdGSycMem7Jxwd8iPUFKi3UfASNl+F
33
+ oJmkjDyU4j4l/MwEsateO3jaJBHfR55jeBc/PposKqEFnGaiBMd+NMLXf50L1hI9
34
+ SS3CfZyfUqCUm+6aSsicRklnvAJ8S74To2JkO3qp+av0CQkLQ1VWpl79nNhZJN5M
35
+ wYwJN5o4GnGcdg==
36
+ -----END CERTIFICATE-----
37
+
38
+ date: 2011-01-19 00:00:00 +01:00
39
+ default_executable:
40
+ dependencies: []
41
+
42
+ description: Library to monitor your programs and resources. It will notify you by email or just log the event if something goes wrong.
43
+ email: stadominik @nospam@ gmail.com
44
+ executables: []
45
+
46
+ extensions: []
47
+
48
+ extra_rdoc_files:
49
+ - README.md
50
+ - lib/be_notified.rb
51
+ - lib/be_notified/commands.rb
52
+ - lib/be_notified/commands/host_not_alive.rb
53
+ - lib/be_notified/commands/number_of_files.rb
54
+ - lib/be_notified/commands/program_running.rb
55
+ - lib/be_notified/commands/size_of_file.rb
56
+ - lib/be_notified/configuration.rb
57
+ - lib/be_notified/monitor.rb
58
+ - lib/be_notified/notifier.rb
59
+ - lib/be_notified/version.rb
60
+ - lib/benotified.rb
61
+ files:
62
+ - Gemfile
63
+ - Gemfile.lock
64
+ - Manifest
65
+ - README.md
66
+ - Rakefile
67
+ - benotified.gemspec
68
+ - examples/monitor.rb
69
+ - lib/be_notified.rb
70
+ - lib/be_notified/commands.rb
71
+ - lib/be_notified/commands/host_not_alive.rb
72
+ - lib/be_notified/commands/number_of_files.rb
73
+ - lib/be_notified/commands/program_running.rb
74
+ - lib/be_notified/commands/size_of_file.rb
75
+ - lib/be_notified/configuration.rb
76
+ - lib/be_notified/monitor.rb
77
+ - lib/be_notified/notifier.rb
78
+ - lib/be_notified/version.rb
79
+ - lib/benotified.rb
80
+ - test/commands/test_host_not_alive.rb
81
+ - test/commands/test_number_of_files.rb
82
+ - test/commands/test_program_running.rb
83
+ - test/commands/test_size_of_file.rb
84
+ - test/notifiers/test_email_notifier.rb
85
+ - test/notifiers/test_log_notifier.rb
86
+ - test/test_configuration.rb
87
+ - test/test_helper.rb
88
+ - test/test_monitor.rb
89
+ - test/test_notifier.rb
90
+ has_rdoc: true
91
+ homepage: http://github.com/staskie/be-notified
92
+ licenses: []
93
+
94
+ post_install_message:
95
+ rdoc_options:
96
+ - --line-numbers
97
+ - --inline-source
98
+ - --title
99
+ - Benotified
100
+ - --main
101
+ - README.md
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ segments:
110
+ - 0
111
+ version: "0"
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ segments:
118
+ - 1
119
+ - 2
120
+ version: "1.2"
121
+ requirements: []
122
+
123
+ rubyforge_project: benotified
124
+ rubygems_version: 1.3.7
125
+ signing_key:
126
+ specification_version: 3
127
+ summary: Library to monitor your programs and resources. It will notify you by email or just log the event if something goes wrong.
128
+ test_files:
129
+ - test/commands/test_host_not_alive.rb
130
+ - test/commands/test_number_of_files.rb
131
+ - test/commands/test_program_running.rb
132
+ - test/commands/test_size_of_file.rb
133
+ - test/notifiers/test_email_notifier.rb
134
+ - test/notifiers/test_log_notifier.rb
135
+ - test/test_configuration.rb
136
+ - test/test_helper.rb
137
+ - test/test_monitor.rb
138
+ - test/test_notifier.rb
Binary file