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,25 +0,0 @@
1
- require 'test_helper'
2
-
3
- class JobCronTabTest < ActiveSupport::TestCase
4
-
5
- #
6
- # Temp class for testing
7
- #
8
- class EmailModel
9
- include Mongoid::Document
10
- include Mongoid::Timestamps
11
- include EmailAble
12
- field :once, type: String
13
- end
14
-
15
-
16
- context 'ensure_cron_tabs' do
17
- should 'start out with no cron tabs' do
18
- assert_empty Cron::JobTab.all
19
- end
20
- should 'load everything in the cron tab' do
21
- Cron::JobTab.ensure_cron_tabs
22
- assert_not_empty Cron::JobTab.all
23
- end
24
- end
25
- end
@@ -1,127 +0,0 @@
1
- require 'test_helper'
2
-
3
- class NotificationTest < ActiveSupport::TestCase
4
-
5
- should_have_field :retries, type: Integer, default: 0, klass: Notification
6
- should_have_field :state, type: String, default: 'new', klass: Notification
7
- should_have_field :to, type: String, klass: Notification
8
- should_have_field :message, type: String, klass: Notification
9
- should_have_field :error_message, type: String, klass: Notification
10
- should_have_field :last_viewed_at, type: Time, klass: Notification
11
- should_have_field :viewed_count, type: Integer, default: 0, klass: Notification
12
-
13
- setup do
14
- @account = FactoryBot.create(:account)
15
- end
16
-
17
- should 'Determine which states are deletable' do
18
- notification = FactoryBot.create(:notification)
19
- assert notification.deletable?
20
- notification.set(state: Notification::STATE_SUBMITTED)
21
- refute notification.deletable?
22
- notification.set(state: Notification::STATE_PROCESSING)
23
- refute notification.deletable?
24
- notification.set(state: Notification::STATE_PROCESSED)
25
- assert notification.deletable?
26
- notification.set(state: Notification::STATE_INVALID)
27
- assert notification.deletable?
28
- notification.set(state: Notification::STATE_RETRYING)
29
- refute notification.deletable?
30
- notification.set(state: Notification::STATE_VIEWED)
31
- assert notification.deletable?
32
- end
33
-
34
- should 'Determine which states are sendable' do
35
- notification = FactoryBot.create(:notification)
36
- assert notification.sendable?
37
- notification.set(state: Notification::STATE_SUBMITTED)
38
- refute notification.sendable?
39
- notification.set(state: Notification::STATE_PROCESSING)
40
- refute notification.sendable?
41
- notification.set(state: Notification::STATE_PROCESSED)
42
- assert notification.sendable?
43
- notification.set(state: Notification::STATE_INVALID)
44
- assert notification.sendable?
45
- notification.set(state: Notification::STATE_RETRYING)
46
- refute notification.sendable?
47
- notification.set(state: Notification::STATE_VIEWED)
48
- assert notification.sendable?
49
- end
50
-
51
-
52
- should 'find file based template' do
53
- notification = FactoryBot.create(:notification, account: @account)
54
- notification.message_from_template('notification_failure', {error_message: 'Yo, Adrian'})
55
- assert notification.message.include? 'Failed to send the following notification'
56
- assert notification.message.include? 'Yo, Adrian'
57
- end
58
-
59
-
60
- # should 'find account based template' do
61
- # template = AccountEmailTemplate.new
62
- # template.account = @account
63
- # template.name = 'enterprise_app_store_user_invite'
64
- # template.template = 'custom baby {{ name }}'
65
- # template.subject = 'yo'
66
- # assert template.save
67
- #
68
- # notification = FactoryBot.create(:notification, account: @account)
69
- # notification.message_from_template('enterprise_app_store_user_invite', {'name'=> 'foo'})
70
- # assert_equal '<body><pre>custom baby foo</pre></body>', notification.message
71
- # end
72
-
73
- should 'mark notification as viewed' do
74
- notification = FactoryBot.create(:notification, account:@account)
75
- assert_not_nil notification
76
- assert_equal 0, notification.viewed_count
77
- assert_nil notification.last_viewed_at
78
-
79
- # Allow some breather room
80
- sleep 1
81
-
82
- notification.viewed
83
- assert_not_nil notification.reload
84
- assert_equal Notification::STATE_VIEWED, notification.state
85
- assert_equal 1, notification.viewed_count
86
- first_date = notification.last_viewed_at
87
-
88
- # Allow some breather room
89
- sleep 1
90
-
91
- # view it a second time, should up the counter
92
- notification.viewed
93
- assert_not_nil notification.reload
94
- assert_equal Notification::STATE_VIEWED, notification.state
95
- assert_equal 2, notification.viewed_count
96
- assert_not_equal first_date, notification.last_viewed_at, notification.inspect
97
- end
98
-
99
-
100
- context 'use both token and strings' do
101
- setup do
102
- @liquid_text = 'Yo {{ name }}'
103
- @notification = Notification.new
104
- end
105
-
106
- should 'work with strings' do
107
- params = { 'name' => 'chris' }
108
- assert_equal 'Yo chris', @notification.send(:render_liquid_text, @liquid_text, params)
109
- end
110
-
111
- should 'work with tokens' do
112
- params = { name: 'chris' }
113
- assert_equal 'Yo chris', @notification.send(:render_liquid_text, @liquid_text, params)
114
- end
115
-
116
- should 'handle true values' do
117
- liquid_text = 'Yo{% if show %} {{ name }}{% endif %}'
118
- params = { name: 'chris', show: true}
119
- assert_equal 'Yo chris', @notification.send(:render_liquid_text, liquid_text, params)
120
- end
121
- should 'handle false values' do
122
- liquid_text = 'Yo{% if show %} {{ name }}{% endif %}'
123
- params = { name: 'chris', show: false}
124
- assert_equal 'Yo', @notification.send(:render_liquid_text, liquid_text, params)
125
- end
126
- end
127
- end
@@ -1,86 +0,0 @@
1
- require 'test_helper'
2
-
3
- #
4
- # Test the RedisConfiguration model
5
- #
6
- class RedisConfigurationTest < ActiveSupport::TestCase
7
- context 'default file' do
8
- should 'return the default configuration file the config file' do
9
- config = RedisConfiguration.load
10
- refute config[:url].eql?('redis://127.0.0.1:6379'), config.inspect
11
- assert_equal 0, config[:db], config.inspect
12
- end
13
- should 'override the database' do
14
- config = RedisConfiguration.load(9)
15
- refute config[:url].eql?('redis://127.0.0.1:6379'), config.inspect
16
- assert_equal 9, config[:db], config.inspect
17
- end
18
- end
19
- context 'no file' do
20
- setup do
21
- RedisConfiguration.expects(:config_file_path).returns('config/nothing').at_least_once
22
- end
23
- should 'return default' do
24
- config = RedisConfiguration.load
25
- assert_equal '127.0.0.1', config[:host], config.inspect
26
- assert_equal 6379, config[:port], config.inspect
27
- assert_equal 0, config[:db], config.inspect
28
- end
29
- should 'set the database' do
30
- config = RedisConfiguration.load(5)
31
- assert_equal '127.0.0.1', config[:host], config.inspect
32
- assert_equal 6379, config[:port], config.inspect
33
- assert_equal 5, config[:db], config.inspect
34
- end
35
- end
36
- context 'url' do
37
- setup do
38
- RedisConfiguration.expects(:config_file_path).returns('test/fixtures/redis/url.yml').at_least_once
39
- end
40
- should 'return url configuration' do
41
- config = RedisConfiguration.load
42
- # assert_equal 'redis://localhost:6379/0', config[:url], config.inspect
43
- end
44
- end
45
- context 'host' do
46
- setup do
47
- RedisConfiguration.expects(:config_file_path).returns('test/fixtures/redis/host.yml').at_least_once
48
- end
49
- should 'load from file' do
50
- config = RedisConfiguration.load
51
- assert_equal '127.0.0.1', config[:host], config.inspect
52
- assert_equal 6378, config[:port], config.inspect
53
- assert_equal 8, config[:db], config.inspect
54
- assert_equal 'cache', config[:namespace], config.inspect
55
- end
56
- should 'load from file and override database number' do
57
- config = RedisConfiguration.load(6)
58
- assert_equal '127.0.0.1', config[:host], config.inspect
59
- assert_equal 6378, config[:port], config.inspect
60
- assert_equal 6, config[:db], config.inspect
61
- end
62
- end
63
- context 'sentinel' do
64
- setup do
65
- RedisConfiguration.expects(:config_file_path).returns('test/fixtures/redis/sentinel.yml').at_least_once
66
- end
67
- should 'load file' do
68
- config = RedisConfiguration.load
69
- assert_equal 'redis://production', config[:url], config.inspect
70
- assert_equal 'master', config[:role], config.inspect
71
- sentinels = config[:sentinels]
72
- assert_not_nil sentinels
73
- assert_equal 3, sentinels.count
74
- assert_equal 'host1', sentinels.first[:host]
75
- assert_equal 0, config[:db], config.inspect
76
- assert_equal 'cache', config[:namespace], config.inspect
77
- end
78
- should 'load file and set database' do
79
- config = RedisConfiguration.load(8)
80
- sentinels = config[:sentinels]
81
- assert_not_nil sentinels
82
- assert_equal 3, sentinels.count, config.inspect
83
- assert_equal 8, config[:db], config.inspect
84
- end
85
- end
86
- end
@@ -1,91 +0,0 @@
1
- require 'test_helper'
2
- require 'notification_test_helper'
3
-
4
- class SlackNotificationTest < ActiveSupport::TestCase
5
- include App47Logger
6
- include NotificationTestHelper
7
-
8
- should_have_field :from, type: String, klass: SlackNotification
9
-
10
- setup do
11
- config = SystemConfiguration.configuration
12
- config.update_attribute :slack_api_url, 'https://slack.com?api_key'
13
- end
14
-
15
- context 'send messages' do
16
- should 'an array' do
17
- stub = stub_request(:post, "https://slack.com/?api_key").
18
- with(body: "{\"text\":\"one\\ntwo\\nthree\",\"channel\":\"support\",\"username\":\"test\"}").
19
- to_return(status: 200, body: "", headers: {})
20
- SlackNotification.say %w[one two three]
21
- assert_requested stub
22
- end
23
- should 'to fred' do
24
- stub = stub_request(:post, "https://slack.com/?api_key").
25
- with(body: "{\"text\":\"one\\ntwo\\nthree\",\"channel\":\"fred\",\"username\":\"test\"}").
26
- to_return(status: 200, body: "", headers: {})
27
- SlackNotification.say %w[one two three], to: 'fred'
28
- assert_requested stub
29
- end
30
- should 'sysconfig slack_support_channel' do
31
- assert SystemConfiguration.configuration.update slack_support_channel: 'a'
32
- stub = stub_request(:post, "https://slack.com/?api_key").
33
- with(body: "{\"text\":\"one\\ntwo\\nthree\",\"channel\":\"a\",\"username\":\"test\"}").
34
- to_return(status: 200, body: "", headers: {})
35
- SlackNotification.say %w[one two three]
36
- assert_requested stub
37
- end
38
- should 'handle errors' do
39
- RestClient.expects(:post).once.raises('Doh')
40
- App47Logger.expects(:log_warn).once
41
- SlackNotification.say %w[one two three]
42
- slack = SlackNotification.first
43
- assert_not_nil slack
44
- refute slack.successful?, slack.inspect
45
- assert_equal 'Doh', slack.error_message, slack.inspect
46
- end
47
- should 'record error on not configured' do
48
- assert SystemConfiguration.configuration.update slack_api_url: nil
49
- SlackNotification.say %w[one two three]
50
- slack = SlackNotification.first
51
- assert_not_nil slack
52
- refute slack.successful?, slack.inspect
53
- assert_equal 'Slack is not configured', slack.error_message, slack.inspect
54
- end
55
- end
56
- context 'No slack notification' do
57
- should 'not create a slack notification with log_debug' do
58
- App47Logger.expects(:log_message).with(:warn, 'Test log message').once
59
- log_warn 'Test log message'
60
- assert_no_slacks
61
- end
62
- end
63
- context 'send notification' do
64
- should 'Log error message' do
65
- stub = stub_request(:post, "https://slack.com/?api_key").
66
- with(body: "{\"text\":\"*ERROR:* `Test log message`\",\"channel\":\"support\",\"username\":\"test\"}").
67
- to_return(status: 200, body: "", headers: {})
68
- App47Logger.expects(:log_message).with(:error, 'Test log message').once
69
- log_error 'Test log message'
70
- assert_slacks_count
71
- assert_slacks_includes('Test log message')
72
- assert_requested stub
73
- end
74
- should 'Log error with exception' do
75
- stub = stub_request(:post, "https://slack.com/?api_key").
76
- with(body: "{\"text\":\"*ERROR:* `Test log message` - `Ex`\",\"channel\":\"support\",\"username\":\"test\"}").
77
- to_return(status: 200, body: "", headers: {})
78
- App47Logger.expects(:log_message).with(:error, 'Test log message').once
79
- App47Logger.expects(:log_message).with(:error, 'Ex').once
80
- ex = Exception.new('Ex')
81
- log_error 'Test log message', ex
82
- assert_slacks_count
83
- assert_slacks_includes(['Test log message', ex.message])
84
- assert_requested stub
85
- end
86
- should 'send a message to slack' do
87
- stub_request(:post, SystemConfiguration.slack_api_url).to_return(status: 200)
88
- SlackNotification.say 'mess'
89
- end
90
- end
91
- end
@@ -1,69 +0,0 @@
1
- require 'test_helper'
2
- require 'notification_test_helper'
3
-
4
- class SmsNotificationTest < ActiveSupport::TestCase
5
- include App47Logger
6
- include NotificationTestHelper
7
-
8
- should_have_field :sid, type: String, klass: SmsNotification
9
-
10
-
11
-
12
- context 'No twilio configuration' do
13
- should 'not create a slack notification with log_debug' do
14
- sms = SmsNotification.new to: '+15713326267'
15
- assert_equal 'sms', sms.delivery_channel
16
- sms.message = 'test my sms'
17
- assert sms.valid?, sms.errors.inspect
18
- sms.send_notification
19
- assert sms.reload
20
- assert sms.successful?, sms.inspect
21
- assert_sms_count
22
- end
23
- end
24
- context 'Twilio configured' do
25
- setup do
26
- assert SystemConfiguration.configuration.update twilio_account_id: 'a1',
27
- twilio_auth_token: 'abc123',
28
- twilio_phone_number: '123456789'
29
- assert SystemConfiguration.twilio_configured?
30
- end
31
- should 'send message' do
32
- stub = stub_request(:post, "https://api.twilio.com/2010-04-01/Accounts/a1/Messages.json").
33
- with( body: {"Body"=>"test my sms", "From"=>"123456789", "To"=>"+15713326267"}).
34
- to_return(status: 200, body: {
35
- "sid": "SM91256e0d99b54ae5a52efdec70b12f0d",
36
- "date_created": "Thu, 26 Mar 2020 14:52:03 +0000",
37
- "date_updated": "Thu, 26 Mar 2020 14:52:03 +0000",
38
- "date_sent": nil,
39
- "account_sid": "AC59d5e7ec06ddb4ea3843feb75daeb276",
40
- "to": "+15713326267",
41
- "from": "+12404938962",
42
- "messaging_service_sid": nil,
43
- "body": "Hi",
44
- "status": "queued",
45
- "num_segments": "1",
46
- "num_media": "0",
47
- "direction": "outbound-api",
48
- "api_version": "2010-04-01",
49
- "price": nil,
50
- "price_unit": "USD",
51
- "error_code": nil,
52
- "error_message": nil,
53
- "uri": "/2010-04-01/Accounts/AC59d5e7ec06ddb4ea3843feb75daeb276/Messages/SM91256e0d99b54ae5a52efdec70b12f0d.json",
54
- "subresource_uris": {
55
- "media": "/2010-04-01/Accounts/AC59d5e7ec06ddb4ea3843feb75daeb276/Messages/SM91256e0d99b54ae5a52efdec70b12f0d/Media.json"
56
- }
57
- }.to_json, headers: {})
58
- sms = SmsNotification.new to: '+15713326267'
59
- sms.message = 'test my sms'
60
- assert sms.valid?, sms.errors.inspect
61
- sms.send_notification
62
- assert sms.reload
63
- assert_equal 'SM91256e0d99b54ae5a52efdec70b12f0d', sms.sid
64
- assert sms.successful?, sms.inspect
65
- assert_sms_count
66
- assert_requested stub
67
- end
68
- end
69
- end
@@ -1,66 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SmtpConfigurationTest < ActiveSupport::TestCase
4
-
5
- should_have_field :email_address, type: String, klass: SmtpConfiguration
6
- should_have_field :domain, type: String, klass: SmtpConfiguration
7
- should_have_field :port, type: Integer, default: 587, klass: SmtpConfiguration
8
- should_have_field :authentication_method, type: String, klass: SmtpConfiguration
9
- should_have_field :confirmation_token, type: String, klass: SmtpConfiguration
10
- should_have_field :confirmed, type: Mongoid::Boolean, default: false, klass: SmtpConfiguration
11
- should_have_field :verification_message, type: String, klass: SmtpConfiguration
12
-
13
-
14
- setup do
15
- @account = FactoryBot.create(:account)
16
- assert_not_nil @account
17
- end
18
-
19
- context 'get the config' do
20
- should 'not get a nil smtp configuration' do
21
- assert_not_nil @account.fetch_smtp_configuration
22
- end
23
- should 'update token when active' do
24
- smtp = @account.fetch_smtp_configuration
25
- smtp.active = true
26
- assert_nil smtp.confirmation_token
27
- refute smtp.confirmed?
28
- assert_nil smtp.verification_message
29
- smtp.update_token
30
- assert_not_nil smtp.verification_message, smtp.inspect
31
- assert_not_nil smtp.confirmation_token, smtp.inspect
32
- refute smtp.confirmed?, smtp.inspect
33
- end
34
- should 'dont update token when inactive' do
35
- smtp = @account.fetch_smtp_configuration
36
- smtp.active = false
37
- assert_nil smtp.confirmation_token
38
- refute smtp.confirmed?
39
- assert_nil smtp.verification_message
40
- smtp.update_token
41
- assert_not_nil smtp.verification_message, smtp.inspect
42
- assert_nil smtp.confirmation_token, smtp.inspect
43
- refute smtp.confirmed?, smtp.inspect
44
- end
45
- should 'validate the token' do
46
- smtp = @account.fetch_smtp_configuration
47
- smtp.active = true
48
- refute smtp.confirmed?
49
- smtp.update_token
50
- smtp.validate_token(smtp.confirmation_token)
51
- assert smtp.confirmed?
52
- assert_nil smtp.confirmation_token
53
- assert_nil smtp.verification_message
54
- end
55
- should 'not validate the token' do
56
- smtp = @account.fetch_smtp_configuration
57
- smtp.active = true
58
- refute smtp.confirmed?
59
- smtp.update_token
60
- smtp.validate_token('abc123')
61
- refute smtp.confirmed?
62
- assert_not_nil smtp.confirmation_token
63
- assert_not_nil smtp.verification_message
64
- end
65
- end
66
- end