web47core 0.1.4 → 0.1.5

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/{lib/app → app}/assets/stylesheets/status.sass +0 -0
  3. data/{lib/app → app}/controllers/status_controller.rb +0 -0
  4. data/{lib/app → app}/views/status/index.html.haml +0 -0
  5. metadata +6 -79
  6. data/.circleci/config.yml +0 -58
  7. data/.gitignore +0 -70
  8. data/.rubocop.yml +0 -33
  9. data/Gemfile +0 -5
  10. data/Gemfile.lock +0 -318
  11. data/Rakefile +0 -7
  12. data/bin/cron_server +0 -4
  13. data/test/controllers/status_controller_test.rb +0 -158
  14. data/test/factories/account_factories.rb +0 -9
  15. data/test/factories/notification_factories.rb +0 -14
  16. data/test/fixtures/mongoid.yml +0 -8
  17. data/test/fixtures/redis/host.yml +0 -5
  18. data/test/fixtures/redis/options.yml +0 -8
  19. data/test/fixtures/redis/sentinel.yml +0 -8
  20. data/test/fixtures/redis/url.yml +0 -2
  21. data/test/jobs/cron/server_test.rb +0 -160
  22. data/test/jobs/cron/switchboard_sync_configuration_test.rb +0 -64
  23. data/test/jobs/cron/trim_cron_servers_test.rb +0 -28
  24. data/test/jobs/cron/trim_failed_delayed_jobs_test.rb +0 -71
  25. data/test/models/concerns/app47_logger_test.rb +0 -88
  26. data/test/models/concerns/cdn_url_test.rb +0 -54
  27. data/test/models/concerns/email_able_test.rb +0 -145
  28. data/test/models/concerns/search_able_test.rb +0 -80
  29. data/test/models/concerns/standard_model_test.rb +0 -154
  30. data/test/models/concerns/system_configuration_test.rb +0 -212
  31. data/test/models/concerns/time_zone_able_test.rb +0 -77
  32. data/test/models/email_notification_test.rb +0 -297
  33. data/test/models/job_cron_tab_test.rb +0 -25
  34. data/test/models/notification_test.rb +0 -127
  35. data/test/models/redis_configuration_test.rb +0 -86
  36. data/test/models/slack_notification_test.rb +0 -91
  37. data/test/models/sms_notification_test.rb +0 -69
  38. data/test/models/smtp_configuration_test.rb +0 -66
  39. data/test/models/web47core_test.rb +0 -18
  40. data/test/notification_test_helper.rb +0 -146
  41. data/test/rails_setup.rb +0 -61
  42. data/test/shoulda_macros/mongoid.rb +0 -70
  43. data/test/test_helper.rb +0 -93
  44. data/test/test_models_helper.rb +0 -14
  45. data/web47core.gemspec +0 -58
@@ -1,28 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Cron
4
- class TrimCronServersTest < ActiveSupport::TestCase
5
- context 'Execute job not deleting servers' do
6
- should 'not throw exceptions if no servers ' do
7
- assert_nothing_raised { Cron::TrimCronServers.perform_now }
8
- end
9
- should 'not delete any servers due to last updated' do
10
- 10.times.each { |n| Cron::Server.create!(host_name: "ip-#{n}", pid: n.to_s).set(last_check_in_at: Time.now.utc) }
11
- assert_equal 10, Cron::Server.all.count
12
- assert_no_difference 'Cron::Server.all.count' do
13
- assert_nothing_raised { Cron::TrimCronServers.perform_now }
14
- end
15
- end
16
- end
17
- context 'Execute jobs deleting servers' do
18
- should 'delete five server logs' do
19
- 5.times.each { |n| Cron::Server.create!(host_name: "ip-#{n}", pid: n.to_s).set(last_check_in_at: Time.now.utc) }
20
- 5.times.each { |n| Cron::Server.create!(host_name: "ip-#{n}", pid: (100+n).to_s).set(last_check_in_at: 1.hour.ago.utc) }
21
- assert_equal 10, Cron::Server.all.count
22
- assert_difference 'Cron::Server.all.count', -5 do
23
- assert_nothing_raised { Cron::TrimCronServers.perform_now }
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,71 +0,0 @@
1
- require 'test_helper'
2
- require 'notification_test_helper'
3
- module Cron
4
- class TrimFailedDelayedJobsTest < ActiveSupport::TestCase
5
- include NotificationTestHelper
6
- context 'Execute with no jobs' do
7
- should 'run with no issue' do
8
- assert_nothing_raised { Cron::TrimFailedDelayedJobs.perform_now }
9
- end
10
- end
11
- context 'handle failed job' do
12
- setup do
13
- SystemConfiguration.configuration.update slack_api_url: 'https://slack.test.com'
14
- stub_request(:post, "https://slack.test.com/").to_return(status: 200, body: "", headers: {})
15
- Delayed::Worker.delay_jobs = true
16
- # Create the job that should be deleted
17
- o = TestBGJob.create!
18
- o.update_name
19
- o.destroy!
20
- Delayed::Backend::Mongoid::Job.first.set failed_at: Time.now.utc
21
- end
22
- teardown do
23
- Delayed::Worker.delay_jobs = false
24
- end
25
- should 'remove one job' do
26
- assert_nothing_raised { Cron::TrimFailedDelayedJobs.perform_now }
27
- assert_empty Delayed::Backend::Mongoid::Job.all
28
- assert_slacks_count nil, 1
29
- assert_slacks_includes ['*Delayed Jobs Failed* due to missing document, ~removing from queue!~',
30
- '*Object:* ```',
31
- '*Method:* `',
32
- '*Arguments:* ``']
33
- end
34
- should 'remove two jobs' do
35
- o = TestBGJob.create!
36
- o.update_name
37
- o.destroy!
38
- Delayed::Backend::Mongoid::Job.each { |d| d.set failed_at: Time.now.utc }
39
- assert_nothing_raised { Cron::TrimFailedDelayedJobs.perform_now }
40
- assert_empty Delayed::Backend::Mongoid::Job.all
41
- assert_slacks_count nil, 2
42
- end
43
- should 'only remove one' do
44
- o = TestBGJob.create!
45
- o.update_name
46
- o.destroy!
47
- assert_nothing_raised { Cron::TrimFailedDelayedJobs.perform_now }
48
- assert_equal 1, Delayed::Backend::Mongoid::Job.all.count
49
- assert_slacks_count nil, 1
50
- end
51
- should 'only remove one failed missing doc job' do
52
- o = TestBGJob.create!
53
- o.update_name
54
- assert_nothing_raised { Cron::TrimFailedDelayedJobs.perform_now }
55
- assert_equal 1, Delayed::Backend::Mongoid::Job.all.count
56
- assert_slacks_count nil, 1
57
- end
58
- end
59
- end
60
- end
61
-
62
- class TestBGJob
63
- include StandardModel
64
- field :name, type: String
65
-
66
- def update_name
67
- set name: 'bg'
68
- end
69
-
70
- handle_asynchronously :update_name
71
- end
@@ -1,88 +0,0 @@
1
- require 'test_helper'
2
-
3
- class App47LoggerTestCase < ActiveSupport::TestCase
4
- include App47Logger
5
- context 'as singleton' do
6
- should 'log a debug message' do
7
- App47Logger.expects(:log_message).once
8
- App47Logger.log_debug('Foo')
9
- end
10
- should 'log a warn message with out exception' do
11
- App47Logger.expects(:log_message).once
12
- App47Logger.log_warn('Foo')
13
- end
14
- should 'log a warn message with exception' do
15
- App47Logger.expects(:log_message).twice
16
- App47Logger.log_warn('Foo', Exception.new)
17
- end
18
- should 'log a error message with out exception' do
19
- App47Logger.expects(:log_message).once
20
- App47Logger.log_error('Foo')
21
- end
22
- should 'log a error message with exception' do
23
- App47Logger.expects(:log_message).twice
24
- App47Logger.log_error('Foo', Exception.new)
25
- end
26
- end
27
-
28
- context 'as class method' do
29
- should 'log a debug message' do
30
- App47Logger.expects(:log_message).once
31
- log_debug('Foo')
32
- end
33
- should 'log a message' do
34
- App47Logger.expects(:log_message).once
35
- log_message(:debug, 'Foo')
36
- end
37
- should 'log a warn message with out exception' do
38
- App47Logger.expects(:log_message).once
39
- log_warn('Foo')
40
- end
41
- should 'log a warn message with exception' do
42
- App47Logger.expects(:log_message).twice
43
- log_warn('Foo', Exception.new)
44
- end
45
- should 'log a error message with out exception' do
46
- App47Logger.expects(:log_message).once
47
- SlackNotification.expects(:say)
48
- log_error('Foo')
49
- end
50
- should 'log a error message with exception' do
51
- App47Logger.expects(:log_message).twice
52
- SlackNotification.expects(:say)
53
- log_error('Foo', Exception.new)
54
- end
55
- end
56
-
57
- context 'log message' do
58
- should 'Log debug' do
59
- App47Logger.expects(:puts).once
60
- App47Logger.log_debug('Foo')
61
- end
62
- end
63
-
64
- context 'as a controller' do
65
- should 'log a controller' do
66
- App47Logger.expects(:log_message).once
67
- log_controller_error(nil)
68
- end
69
- should 'log a controller with exception' do
70
- App47Logger.expects(:log_message).twice
71
- log_controller_error(Exception.new('Message'))
72
- end
73
- end
74
- #
75
- # Support the testing of log_controller_error
76
- #
77
- def controller_name
78
- 'tester'
79
- end
80
-
81
- def action_name
82
- 'tester'
83
- end
84
-
85
- def params
86
- {}
87
- end
88
- end
@@ -1,54 +0,0 @@
1
- require 'test_helper'
2
-
3
- class CdnUrlTest < ActiveSupport::TestCase
4
-
5
- setup do
6
- @original_url = 'https://s3.amazon.com/test_bucket/test_cdn_url_models/id/original.png'
7
- @model = TestCdnUrlModel.new
8
- @model.file_url = @original_url
9
- assert @model.save
10
- end
11
-
12
- context 'CDN not setup' do
13
-
14
- should 'not respond to errant entry' do
15
- assert_raises(NoMethodError) { @model.cdn_bad_url }
16
- end
17
-
18
- should 'return the original url' do
19
- assert_equal @original_url, @model.file_url
20
- assert_equal @original_url, @model.cdn_file_url
21
- end
22
- end
23
-
24
- context 'CDN setup' do
25
- setup do
26
- @cdn_url = 'https://9asdfasd9asd.amazon.com'
27
- config = SystemConfiguration.configuration
28
- assert config.update cdn_url: @cdn_url
29
- end
30
- should 'return CDN url' do
31
- assert_equal @original_url, @model.file_url
32
- assert_not_equal @original_url, @model.cdn_file_url
33
- assert_equal "#{@cdn_url}/test_cdn_url_models/id/original.png", @model.cdn_file_url
34
- end
35
- should 'return CDN url with size' do
36
- assert_equal "#{@original_url}?size=medium", @model.image_url('medium')
37
- assert_equal "#{@cdn_url}/test_cdn_url_models/id/original.png?size=medium", @model.cdn_image_url('medium')
38
- end
39
- should 'return url' do
40
- assert @model.update file_url: 'https://s3.amazon.com/test_bucket/another_model/id/original.png'
41
- assert_equal 'https://s3.amazon.com/test_bucket/another_model/id/original.png', @model.cdn_file_url
42
- end
43
- end
44
- end
45
-
46
- class TestCdnUrlModel
47
- include Mongoid::Document
48
- include CdnUrl
49
- field :file_url, type: String
50
-
51
- def image_url(size)
52
- "#{file_url}?size=#{size}"
53
- end
54
- end
@@ -1,145 +0,0 @@
1
- require 'test_helper'
2
-
3
- #
4
- # Temp class for testing
5
- #
6
- class EmailModel
7
- include Mongoid::Document
8
- include Mongoid::Timestamps
9
- include EmailAble
10
- field :once, type: String
11
- end
12
-
13
- #
14
- # Test the email model
15
- #
16
- class EmailModelTest < ActiveSupport::TestCase
17
- should_have_field :email, type: String, klass: EmailModel
18
- should_have_field :email_bounced_at, type: Time, klass: EmailModel
19
- should_have_field :email_bounce_reason, type: String, klass: EmailModel
20
- should_have_field :unconfirmed_email, type: String, klass: EmailModel
21
- should_have_field :email_enabled, type: Mongoid::Boolean, default: true, klass: EmailModel
22
-
23
- context 'valid email' do
24
- should 'not be valid' do
25
- email = EmailModel.new
26
- email.email = 'nothing'
27
- refute email.valid?
28
- end
29
- should 'be valid' do
30
- email = EmailModel.new
31
- email.email = 'joe@abc.com'
32
- assert email.valid?
33
- assert email.valid_email?
34
- end
35
- end
36
-
37
- context 'valid_email?' do
38
- setup do
39
- @model = EmailModel.new
40
- @email = 'known@abc.com'
41
- @model.email = @email
42
- assert @model.save
43
- end
44
- should 'be valid by default' do
45
- assert @model.valid_email?
46
- end
47
- should 'not be valid with email_bounce_date' do
48
- @model.email_bounced_at = Time.now.utc
49
- refute @model.valid_email?
50
- end
51
- should 'not be valid with enabled turned off' do
52
- @model.email_enabled = false
53
- refute @model.valid_email?
54
- end
55
- should 'not be valid with enabled turned off and email_bounce_date' do
56
- @model.email_bounced_at = Time.now.utc
57
- @model.email_enabled = false
58
- refute @model.valid_email?
59
- end
60
- end
61
-
62
- context 'reset bounce status with mailgun' do
63
- setup do
64
- @model = EmailModel.new
65
- @email = 'known@abc.com'
66
- @model.email = @email
67
- @model.email_bounced_at = Time.now.utc
68
- @model.email_bounce_reason = 'Testing'
69
- assert @model.save
70
- end
71
- should 'not be called if not configured' do
72
- config = SystemConfiguration.configuration
73
- config.unset :mailgun_api_key
74
- assert config.save
75
- RestClient.expects(:delete).never
76
- @model.reset_bounce_status
77
- assert @model.valid_email?, @model.inspect
78
- end
79
- should 'reset bounce status' do
80
- refute @model.valid_email?
81
- config = SystemConfiguration.configuration
82
- config.smtp_name = 'app47'
83
- config.smtp_address = 'mail.app47.com'
84
- config.smtp_domain = 'app47.com'
85
- config.mailgun_api_key = 'key'
86
- assert config.save
87
- RestClient.expects(:delete).once.returns(MockHttpResponse.new)
88
- @model.reset_bounce_status
89
- assert_not_nil @model.reload
90
- assert @model.valid_email?
91
- end
92
- should 'handle error code from rest client' do
93
- App47Logger.expects(:log_error).once
94
- refute @model.valid_email?
95
- config = SystemConfiguration.configuration
96
- config.smtp_name = 'app47'
97
- config.smtp_address = 'mail.app47.com'
98
- config.smtp_domain = 'app47.com'
99
- config.mailgun_api_key = 'key'
100
- assert config.save
101
- RestClient.expects(:delete).once.raises(RestClient::Exception.new(MockHttpResponse.new(404)))
102
- @model.reset_bounce_status
103
- assert_not_nil @model.reload
104
- assert @model.valid_email?
105
- end
106
- end
107
-
108
- context 'gravatar_url' do
109
- setup do
110
- @model = EmailModel.new
111
- @email = 'known@abc.com'
112
- @model.email = @email
113
- assert @model.save
114
- end
115
- should 'go to gravatar site' do
116
- url = @model.gravatar_url
117
- assert url.start_with? 'https://www.gravatar.com/avatar/', url
118
- end
119
- should 'correct defaults' do
120
- url = @model.gravatar_url
121
- assert url.include?('s=32'), url
122
- assert url.include?('d=mm'), url
123
- end
124
- should 'override size' do
125
- url = @model.gravatar_url(1024)
126
- refute url.include?('s=32'), url
127
- assert url.include?('s=1024'), url
128
- end
129
- should 'override default' do
130
- url = @model.gravatar_url(1024, 'retro')
131
- refute url.include?('d=mm'), url
132
- assert url.include?('d=retro'), url
133
- end
134
- end
135
- end
136
- #
137
- # Mock class for testing
138
- #
139
- class MockHttpResponse
140
- attr_accessor :code
141
-
142
- def initialize(code = 200)
143
- @code = code
144
- end
145
- end
@@ -1,80 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SearchableTest < ActiveSupport::TestCase
4
-
5
- context 'Update search text on save' do
6
-
7
- should 'update name' do
8
- model = NameSearchable.new
9
- assert model.save
10
- assert_equal 'name', model.search_text
11
- end
12
-
13
- should 'update text' do
14
- model = NameEmailSearchable.new
15
- assert model.save
16
- assert_equal 'name email@abc.com', model.search_text
17
- end
18
- should 'update text handle nil values' do
19
- model = NameEmailCodeSearchable.new
20
- assert model.save
21
- assert_equal 'name email@abc.com', model.search_text
22
- end
23
- should 'update text with code' do
24
- model = NameEmailCodeSearchable.new
25
- model.code = 'FOOBar'
26
- assert model.save
27
- assert_equal 'name email@abc.com foobar', model.search_text
28
- end
29
- end
30
-
31
- context 'search for items' do
32
- should 'update text' do
33
- NameEmailSearchable.create
34
- NameEmailSearchable.create
35
- NameEmailSearchable.create
36
- model = NameEmailSearchable.new
37
- model.name = 'defJKL'
38
- assert model.save
39
- assert_not_nil model
40
- assert_equal 'defjkl email@abc.com', model.search_text
41
- assert_equal 1, NameEmailSearchable.matching_search_text('defjkl').count
42
- end
43
- should 'return sort order' do
44
- assert_equal [['name', 1], ['email', 1]], NameEmailSearchable.sort_order
45
- end
46
- end
47
- end
48
-
49
- class NameSearchable
50
- include Mongoid::Document
51
- include SearchAble
52
- field :name, type: String, default: 'Name'
53
- field :email, type: String, default: 'email@abc.com'
54
- end
55
-
56
- class NameEmailSearchable
57
- include Mongoid::Document
58
- include SearchAble
59
- field :name, type: String, default: 'Name'
60
- field :email, type: String, default: 'email@abc.com'
61
-
62
- def search_fields
63
- %w[name email]
64
- end
65
- end
66
-
67
- class NameEmailCodeSearchable
68
- include Mongoid::Document
69
- include SearchAble
70
- field :name, type: String, default: 'Name'
71
- field :email, type: String, default: 'email@abc.com'
72
- field :code, type: String
73
-
74
- private
75
-
76
- def search_fields
77
- %w(name email code)
78
- end
79
-
80
- end