mno-enterprise-core 3.0.7 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/mno_enterprise/login-background.jpg +0 -0
  3. data/app/assets/stylesheets/mno_enterprise/mail.css +27 -0
  4. data/app/helpers/mno_enterprise/application_helper.rb +14 -0
  5. data/app/helpers/mno_enterprise/impersonate_helper.rb +1 -1
  6. data/app/models/mno_enterprise/app.rb +2 -1
  7. data/app/models/mno_enterprise/base_resource.rb +1 -2
  8. data/app/models/mno_enterprise/impac/dashboard.rb +3 -1
  9. data/app/models/mno_enterprise/impac/kpi.rb +1 -1
  10. data/app/models/mno_enterprise/impac/widget.rb +1 -1
  11. data/app/models/mno_enterprise/org_invite.rb +2 -1
  12. data/app/models/mno_enterprise/tenant.rb +2 -4
  13. data/app/models/mno_enterprise/user.rb +6 -0
  14. data/app/pdf/mno_enterprise/invoice_pdf.rb +29 -12
  15. data/app/views/system_notifications/confirmation-instructions.html.erb +26 -0
  16. data/app/views/system_notifications/confirmation-instructions.text.erb +10 -0
  17. data/app/views/system_notifications/delete-request-instructions.html.erb +31 -0
  18. data/app/views/system_notifications/delete-request-instructions.text.erb +15 -0
  19. data/app/views/system_notifications/organization-invite-existing-user.html.erb +30 -0
  20. data/app/views/system_notifications/organization-invite-existing-user.text.erb +13 -0
  21. data/app/views/system_notifications/organization-invite-new-user.html.erb +30 -0
  22. data/app/views/system_notifications/organization-invite-new-user.text.erb +14 -0
  23. data/app/views/system_notifications/reconfirmation-instructions.html.erb +27 -0
  24. data/app/views/system_notifications/reconfirmation-instructions.text.erb +10 -0
  25. data/app/views/system_notifications/registration-instructions.html.erb +27 -0
  26. data/app/views/system_notifications/registration-instructions.text.erb +9 -0
  27. data/app/views/system_notifications/reset-password-instructions.html.erb +27 -0
  28. data/app/views/system_notifications/reset-password-instructions.text.erb +11 -0
  29. data/app/views/system_notifications/unlock-instructions.html.erb +27 -0
  30. data/app/views/system_notifications/unlock-instructions.text.erb +10 -0
  31. data/config/initializers/audit_log.rb +2 -0
  32. data/config/locales/templates/dashboard/organization/en.yml +2 -0
  33. data/config/locales/views/auth/registrations/en.yml +1 -1
  34. data/lib/devise/hooks/impersonatable.rb +14 -0
  35. data/lib/devise_extension.rb +9 -2
  36. data/lib/generators/mno_enterprise/install/templates/config/application.yml +6 -2
  37. data/lib/generators/mno_enterprise/install/templates/config/initializers/mno_enterprise.rb +6 -1
  38. data/lib/generators/mno_enterprise/install/templates/config/settings.yml +2 -0
  39. data/lib/generators/mno_enterprise/install/templates/config/settings/uat.yml +2 -2
  40. data/lib/generators/mno_enterprise/install/templates/stylesheets/main.less +4 -0
  41. data/lib/her_extension/model/relation.rb +0 -13
  42. data/lib/mandrill_client.rb +13 -41
  43. data/lib/mno_enterprise/concerns/models/ability.rb +12 -0
  44. data/lib/mno_enterprise/concerns/models/organization.rb +5 -2
  45. data/lib/mno_enterprise/core.rb +21 -8
  46. data/lib/mno_enterprise/mail_adapters/adapter.rb +51 -0
  47. data/lib/mno_enterprise/mail_adapters/mandrill_adapter.rb +39 -0
  48. data/lib/mno_enterprise/mail_adapters/smtp_adapter.rb +21 -0
  49. data/lib/mno_enterprise/mail_adapters/sparkpost_adapter.rb +56 -0
  50. data/lib/mno_enterprise/mail_adapters/test_adapter.rb +21 -0
  51. data/lib/mno_enterprise/mail_client.rb +28 -0
  52. data/lib/mno_enterprise/smtp_client.rb +32 -0
  53. data/lib/mno_enterprise/testing_support/factories/apps.rb +1 -2
  54. data/lib/mno_enterprise/testing_support/factories/impac/kpis.rb +1 -0
  55. data/lib/mno_enterprise/testing_support/factories/tenant.rb +1 -7
  56. data/lib/mno_enterprise/testing_support/mno_enterprise_api_test_helper.rb +1 -2
  57. data/lib/mno_enterprise/version.rb +1 -1
  58. data/spec/lib/her_extension/model/relation_spec.rb +0 -71
  59. data/spec/lib/mandrill_client_spec.rb +27 -42
  60. data/spec/lib/mno_enterprise/mail_adapters/adapter_spec.rb +29 -0
  61. data/spec/lib/mno_enterprise/mail_adapters/mandrill_adapter_spec.rb +53 -0
  62. data/spec/lib/mno_enterprise/mail_adapters/smtp_adapter_spec.rb +29 -0
  63. data/spec/lib/mno_enterprise/mail_adapters/sparkpost_adapter_spec.rb +60 -0
  64. data/spec/lib/mno_enterprise/mail_client_spec.rb +9 -0
  65. data/spec/lib/mno_enterprise/smtp_client_spec.rb +39 -0
  66. data/spec/models/mno_enterprise/ability_spec.rb +21 -0
  67. data/spec/models/mno_enterprise/base_resource_spec.rb +0 -22
  68. metadata +76 -24
  69. data/lib/her_extension/middleware/mnoe_raise_error.rb +0 -21
  70. data/lib/her_extension/model/associations/belongs_to_association.rb +0 -25
@@ -2,15 +2,20 @@ require "rails_helper"
2
2
 
3
3
  describe MandrillClient do
4
4
  subject { MandrillClient }
5
-
6
- describe 'email' do
5
+
6
+ before { allow(subject).to receive(:warn) }
7
+
8
+ describe '.deliver' do
9
+ before { MnoEnterprise::MailClient.adapter = :mandrill }
10
+ after { MnoEnterprise::MailClient.adapter = :test }
11
+
7
12
  let(:template) { :some_template }
8
13
  let(:from) {{ name: "John", email: 'j@e.com' }}
9
14
  let(:to) {{ name: "John", email: 'j@e.com' }}
10
15
  let(:vars) {{ some: 'var' }}
11
16
 
12
17
  it 'sends the right template with the right parameters' do
13
- expect(subject).to receive(:send_template).with(template,[],{
18
+ expect(MnoEnterprise::MailAdapters::MandrillAdapter).to receive(:send_template).with(template,[],{
14
19
  from_name: from[:name],
15
20
  from_email: from[:email],
16
21
  to: [{email: to[:email], type: :to, name: to[:name]}],
@@ -18,47 +23,27 @@ describe MandrillClient do
18
23
  })
19
24
  subject.deliver(template,from,to,vars)
20
25
  end
26
+
27
+ it 'prints a deprecation warning' do
28
+ expect(subject).to receive(:warn)
29
+ subject.deliver(template,from,to,vars)
30
+ end
21
31
  end
22
32
 
23
- describe "send_template" do
24
- let!(:orig_delivery_method) { Rails.configuration.action_mailer.delivery_method }
25
- before { MandrillClient.instance_variable_set("@client",nil) }
26
- before { Rails.configuration.action_mailer.delivery_method = :foo_method }
27
- after { Rails.configuration.action_mailer.delivery_method = orig_delivery_method }
28
-
29
- it 'delegates the method to a mandrill client' do
30
- messages = double('messages')
31
- mandrill = double('mandrill', messages: messages)
32
- expect(Mandrill::API).to receive(:new).and_return(mandrill)
33
-
34
- args = ['template_name', [], { foo: 'bar' }]
35
- expect(messages).to receive(:send_template).with(*args)
36
- MandrillClient.send_template(*args)
37
- end
38
-
39
- describe 'with nil delivery method' do
40
- before { Rails.configuration.action_mailer.delivery_method = nil }
41
-
42
- it 'delegates the method to a mandrill client' do
43
- messages = double('messages')
44
- mandrill = double('mandrill', messages: messages)
45
- expect(Mandrill::API).to receive(:new).and_return(mandrill)
46
-
47
- args = ['template_name', [], { foo: 'bar' }]
48
- expect(messages).to receive(:send_template).with(*args)
49
- MandrillClient.send_template(*args)
50
- end
33
+ describe '.send_template' do
34
+ let(:args) { ['template_name', [], { foo: 'bar' }] }
35
+
36
+ it 'delegates the method to the email adapter' do
37
+ adapter = double('adapter')
38
+ expect(MnoEnterprise::MailClient).to receive(:adapter).and_return(adapter)
39
+
40
+ expect(adapter).to receive(:send_template).with(*args)
41
+ subject.send_template(*args)
51
42
  end
52
-
53
- describe 'with :test delivery method' do
54
- before { Rails.configuration.action_mailer.delivery_method = :test }
55
-
56
- it 'does not send any email' do
57
- # test no expectation failure
58
- allow(Mandrill::API).to receive(:new).and_return(double('mandrill'))
59
- MandrillClient.send_template('1',[],{})
60
- end
43
+
44
+ it 'prints a deprecation warning' do
45
+ expect(subject).to receive(:warn)
46
+ subject.send_template(*args)
61
47
  end
62
-
63
48
  end
64
- end
49
+ end
@@ -0,0 +1,29 @@
1
+ require "rails_helper"
2
+
3
+ describe MnoEnterprise::MailAdapters::Adapter do
4
+ subject { described_class }
5
+
6
+ describe '.test?' do
7
+ subject { described_class.test? }
8
+
9
+ around do |example|
10
+ orig_delivery_method = Rails.configuration.action_mailer.delivery_method
11
+ example.run
12
+ Rails.configuration.action_mailer.delivery_method = orig_delivery_method
13
+ end
14
+
15
+ context 'with delivery method' do
16
+ before { Rails.configuration.action_mailer.delivery_method = :method }
17
+ it { is_expected.to be false }
18
+ end
19
+ context 'with nil delivery method' do
20
+ before { Rails.configuration.action_mailer.delivery_method = nil }
21
+ it { is_expected.to be false }
22
+ end
23
+
24
+ context 'with :test delivery method' do
25
+ before { Rails.configuration.action_mailer.delivery_method = :test }
26
+ it { is_expected.to be true }
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,53 @@
1
+ require "rails_helper"
2
+
3
+ describe MnoEnterprise::MailAdapters::MandrillAdapter do
4
+ subject { described_class }
5
+
6
+ describe '.deliver' do
7
+ let(:template) { :some_template }
8
+ let(:from) {{ name: "John", email: 'j@e.com' }}
9
+ let(:to) {{ name: "John", email: 'j@e.com' }}
10
+ let(:vars) {{ some: 'var' }}
11
+
12
+ it 'send the correct template with the correct parameters' do
13
+ expect(subject).to receive(:send_template).with(template,[],{
14
+ from_name: from[:name],
15
+ from_email: from[:email],
16
+ to: [{email: to[:email], type: :to, name: to[:name]}],
17
+ global_merge_vars: [{name: vars.keys.first.to_s, content: vars.values.first}]
18
+ })
19
+ subject.deliver(template, from, to, vars)
20
+ end
21
+ end
22
+
23
+ describe '.send_template' do
24
+ before { described_class.instance_variable_set("@client", nil) }
25
+ let(:args) { ['template_name', [], { foo: 'bar', content: {} }] }
26
+
27
+ subject { described_class.send_template(*args) }
28
+
29
+ context 'when not .test?' do
30
+ before { allow(described_class).to receive(:test?) { false } }
31
+
32
+ it 'delegates the method to a sparkpost client' do
33
+ # Stub Mandrill client
34
+ messages = double('messages')
35
+ mandrill = double('mandrill', messages: messages)
36
+ expect(Mandrill::API).to receive(:new).and_return(mandrill)
37
+
38
+ expect(messages).to receive(:send_template).with(*args)
39
+ subject
40
+ end
41
+ end
42
+
43
+ context 'when .test?' do
44
+ before { allow(described_class).to receive(:test?) { true } }
45
+
46
+ it 'does not send any emails' do
47
+ # Dummy client without any methods
48
+ allow(Mandrill::API).to receive(:new).and_return('mandrill')
49
+ expect { subject }.to change(described_class.base_deliveries,:count).by(1)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,29 @@
1
+ require "rails_helper"
2
+
3
+ describe MnoEnterprise::MailAdapters::SmtpAdapter do
4
+ describe '.deliver' do
5
+ before { described_class.instance_variable_set("@client", nil) }
6
+
7
+ let(:template) { :some_template }
8
+ let(:from) {{ name: "John", email: "j@e.com" }}
9
+ let(:to) {{ name: "John", email: "j@e.com" }}
10
+ let(:vars) {{ some: 'var' }}
11
+ let(:opts) {{ some: 'opt' }}
12
+
13
+ subject { described_class.deliver(template, from, to, vars, opts) }
14
+
15
+ it 'delegates the method to a smtp client' do
16
+ # Stub SmptClient
17
+ smtp = double('smtpclient')
18
+ smtp_mail = double('smtpmail')
19
+
20
+ expect(MnoEnterprise::SmtpClient).to receive(:new).and_return(smtp)
21
+
22
+ expect(smtp).to receive(:deliver).with(template, from, to, vars, opts).and_return(smtp_mail)
23
+ expect(smtp_mail).to receive(:deliver)
24
+
25
+ subject
26
+ end
27
+ end
28
+ end
29
+
@@ -0,0 +1,60 @@
1
+ require "rails_helper"
2
+
3
+ describe MnoEnterprise::MailAdapters::SparkpostAdapter do
4
+ subject { described_class }
5
+ before { ENV["SPARKPOST_API_KEY"] = "secret" }
6
+
7
+ describe '.deliver' do
8
+ let(:template) { :some_template }
9
+ let(:from) {{ name: "John", email: 'j@e.com' }}
10
+ let(:to) {{ name: "John", email: 'j@e.com' }}
11
+ let(:vars) {{ some: 'var' }}
12
+
13
+ it 'send the correct template with the correct parameters' do
14
+ expect(subject).to receive(:send_template).with(
15
+ template,
16
+ [],
17
+ {
18
+ recipients: [address: to],
19
+ content: {
20
+ from: from,
21
+ template_id: template
22
+ },
23
+ substitution_data: vars
24
+ }
25
+ )
26
+ subject.deliver(template, from, to, vars)
27
+ end
28
+ end
29
+
30
+ describe '.send_template' do
31
+ before { described_class.instance_variable_set("@client", nil) }
32
+
33
+ subject { described_class.send_template('template_name', [], { foo: 'bar', content: {} }) }
34
+
35
+ context 'when not .test?' do
36
+ before { allow(described_class).to receive(:test?) { false } }
37
+
38
+ it 'delegates the method to a sparkpost client' do
39
+ # Stub SparkPost client
40
+ transmission = double('transmission')
41
+ sparkpost = double('sparkpost', transmission: transmission)
42
+ expect(SparkPost::Client).to receive(:new).and_return(sparkpost)
43
+
44
+ expect(transmission).to receive(:send_payload)
45
+ subject
46
+ end
47
+ end
48
+
49
+ context 'when .test?' do
50
+ before { allow(described_class).to receive(:test?) { true } }
51
+
52
+ it 'does not send any emails' do
53
+ # Dummy client without any methods
54
+ allow(SparkPost::Client).to receive(:new).and_return(double('sparkpost'))
55
+
56
+ expect { subject }.to change(described_class.base_deliveries,:count).by(1)
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,9 @@
1
+ require "rails_helper"
2
+
3
+ describe MnoEnterprise::MailClient do
4
+ subject { described_class }
5
+
6
+ describe '#deliver' do
7
+
8
+ end
9
+ end
@@ -0,0 +1,39 @@
1
+ require 'rails_helper'
2
+
3
+ describe MnoEnterprise::SmtpClient do
4
+ let(:client) { described_class.send(:new) }
5
+
6
+ describe '#deliver' do
7
+ subject do
8
+ client.deliver(
9
+ 'reset-password-instructions',
10
+ {name: 'John', email: 'john.doe@example.com'},
11
+ {name: 'Joe', email: 'joe.blogg@example.com'},
12
+ )
13
+ end
14
+
15
+ it 'calls mail with the correct params' do
16
+ expected_params = {
17
+ from: 'John <john.doe@example.com>',
18
+ to: 'joe.blogg@example.com',
19
+ subject: 'Reset password instructions',
20
+ template_path: 'system_notifications',
21
+ template_name: 'reset-password-instructions'
22
+ }
23
+ expect(client).to receive(:mail).with(expected_params)
24
+ subject
25
+ end
26
+ end
27
+
28
+ describe '#format_sender' do
29
+ it do
30
+ sender = {name: 'John', email: 'john.doe@example.com'}
31
+ expect(client.format_sender(sender)).to eq('John <john.doe@example.com>')
32
+ end
33
+ end
34
+ describe '#humanize' do
35
+ it 'returns a humanized template subject' do
36
+ expect(client.humanize('reset-password-instructions')).to eq('Reset password instructions')
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,21 @@
1
+ require 'rails_helper'
2
+ require 'cancan/matchers'
3
+
4
+ # TODO: add more ability tests
5
+ RSpec.describe MnoEnterprise::Ability, type: :model do
6
+ subject(:ability) { described_class.new(user) }
7
+ let(:user) { FactoryGirl.build(:user, admin_role: admin_role) }
8
+ let(:admin_role) { nil }
9
+ let(:organization) { FactoryGirl.build(:organization) }
10
+
11
+ before { allow(user).to receive(:role).with(organization) { nil } }
12
+
13
+ context 'when User#admin_role is admin' do
14
+ let(:admin_role) { 'admin' }
15
+ it { is_expected.to be_able_to(:manage_app_instances, organization) }
16
+ end
17
+
18
+ context 'when no User#admin_role' do
19
+ it { is_expected.not_to be_able_to(:manage_app_instances, organization) }
20
+ end
21
+ end
@@ -2,28 +2,6 @@ require 'rails_helper'
2
2
 
3
3
  module MnoEnterprise
4
4
  RSpec.describe BaseResource, type: :model do
5
- describe 'Error Handling' do
6
- class Test < BaseResource; end
7
-
8
- context 'Connection Errors' do
9
- ((502..504).to_a<<407).each do |code|
10
- it "handles #{code} error" do
11
- api_stub_for(get: "/tests/1", code: code)
12
- expect { Test.find(1) }.to raise_error(Faraday::ConnectionFailed)
13
- end
14
- end
15
- end
16
-
17
- context 'Server Errors' do
18
- [401, 500].each do |code|
19
- it "handles #{code} error" do
20
- api_stub_for(get: "/tests/1", code: code)
21
- expect { Test.find(1) }.to raise_error(Faraday::Error::ClientError)
22
- end
23
- end
24
- end
25
- end
26
-
27
5
  describe '#cache_key' do
28
6
  context 'for existing record' do
29
7
  let(:user) { build(:user) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mno-enterprise-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.7
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnaud Lachaume
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-06-05 00:00:00.000000000 Z
12
+ date: 2016-07-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -115,26 +115,6 @@ dependencies:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: '1.4'
118
- - !ruby/object:Gem::Dependency
119
- name: mandrill-api
120
- requirement: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '1.0'
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- version: 1.0.53
128
- type: :runtime
129
- prerelease: false
130
- version_requirements: !ruby/object:Gem::Requirement
131
- requirements:
132
- - - "~>"
133
- - !ruby/object:Gem::Version
134
- version: '1.0'
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: 1.0.53
138
118
  - !ruby/object:Gem::Dependency
139
119
  name: deepstruct
140
120
  requirement: !ruby/object:Gem::Requirement
@@ -203,6 +183,26 @@ dependencies:
203
183
  - - ">="
204
184
  - !ruby/object:Gem::Version
205
185
  version: 6.5.1
186
+ - !ruby/object:Gem::Dependency
187
+ name: mandrill-api
188
+ requirement: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '1.0'
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: 1.0.53
196
+ type: :runtime
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '1.0'
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: 1.0.53
206
206
  - !ruby/object:Gem::Dependency
207
207
  name: redcarpet
208
208
  requirement: !ruby/object:Gem::Requirement
@@ -265,6 +265,20 @@ dependencies:
265
265
  - - "~>"
266
266
  - !ruby/object:Gem::Version
267
267
  version: 1.0.0
268
+ - !ruby/object:Gem::Dependency
269
+ name: sparkpost
270
+ requirement: !ruby/object:Gem::Requirement
271
+ requirements:
272
+ - - "~>"
273
+ - !ruby/object:Gem::Version
274
+ version: 0.1.4
275
+ type: :development
276
+ prerelease: false
277
+ version_requirements: !ruby/object:Gem::Requirement
278
+ requirements:
279
+ - - "~>"
280
+ - !ruby/object:Gem::Version
281
+ version: 0.1.4
268
282
  description: Core functionnality of MNOE. This handles the core functionnality.
269
283
  email:
270
284
  - developers@maestrano.com
@@ -274,7 +288,9 @@ extra_rdoc_files: []
274
288
  files:
275
289
  - LICENSE
276
290
  - Rakefile
291
+ - app/assets/images/mno_enterprise/login-background.jpg
277
292
  - app/assets/images/mno_enterprise/main-logo.png
293
+ - app/assets/stylesheets/mno_enterprise/mail.css
278
294
  - app/controllers/mno_enterprise/application_controller.rb
279
295
  - app/helpers/mno_enterprise/application_helper.rb
280
296
  - app/helpers/mno_enterprise/impersonate_helper.rb
@@ -299,6 +315,22 @@ files:
299
315
  - app/models/mno_enterprise/tenant_invoice.rb
300
316
  - app/models/mno_enterprise/user.rb
301
317
  - app/pdf/mno_enterprise/invoice_pdf.rb
318
+ - app/views/system_notifications/confirmation-instructions.html.erb
319
+ - app/views/system_notifications/confirmation-instructions.text.erb
320
+ - app/views/system_notifications/delete-request-instructions.html.erb
321
+ - app/views/system_notifications/delete-request-instructions.text.erb
322
+ - app/views/system_notifications/organization-invite-existing-user.html.erb
323
+ - app/views/system_notifications/organization-invite-existing-user.text.erb
324
+ - app/views/system_notifications/organization-invite-new-user.html.erb
325
+ - app/views/system_notifications/organization-invite-new-user.text.erb
326
+ - app/views/system_notifications/reconfirmation-instructions.html.erb
327
+ - app/views/system_notifications/reconfirmation-instructions.text.erb
328
+ - app/views/system_notifications/registration-instructions.html.erb
329
+ - app/views/system_notifications/registration-instructions.text.erb
330
+ - app/views/system_notifications/reset-password-instructions.html.erb
331
+ - app/views/system_notifications/reset-password-instructions.text.erb
332
+ - app/views/system_notifications/unlock-instructions.html.erb
333
+ - app/views/system_notifications/unlock-instructions.text.erb
302
334
  - config/initializers/audit_log.rb
303
335
  - config/initializers/config.rb
304
336
  - config/locales/devise.en.yml
@@ -403,6 +435,7 @@ files:
403
435
  - lib/accountingjs_serializer.rb
404
436
  - lib/devise/controllers/extension_helpers.rb
405
437
  - lib/devise/extension_routes.rb
438
+ - lib/devise/hooks/impersonatable.rb
406
439
  - lib/devise/hooks/password_expirable.rb
407
440
  - lib/devise/models/password_expirable.rb
408
441
  - lib/devise/models/remote_authenticatable.rb
@@ -445,10 +478,8 @@ files:
445
478
  - lib/generators/mno_enterprise/templates/scripts/upstart/app.conf
446
479
  - lib/her_extension/her_orm_adapter.rb
447
480
  - lib/her_extension/middleware/mnoe_api_v1_parse_json.rb
448
- - lib/her_extension/middleware/mnoe_raise_error.rb
449
481
  - lib/her_extension/model/associations/association.rb
450
482
  - lib/her_extension/model/associations/association_proxy.rb
451
- - lib/her_extension/model/associations/belongs_to_association.rb
452
483
  - lib/her_extension/model/associations/has_many_association.rb
453
484
  - lib/her_extension/model/attributes.rb
454
485
  - lib/her_extension/model/orm.rb
@@ -475,6 +506,13 @@ files:
475
506
  - lib/mno_enterprise/core.rb
476
507
  - lib/mno_enterprise/database_extendable.rb
477
508
  - lib/mno_enterprise/engine.rb
509
+ - lib/mno_enterprise/mail_adapters/adapter.rb
510
+ - lib/mno_enterprise/mail_adapters/mandrill_adapter.rb
511
+ - lib/mno_enterprise/mail_adapters/smtp_adapter.rb
512
+ - lib/mno_enterprise/mail_adapters/sparkpost_adapter.rb
513
+ - lib/mno_enterprise/mail_adapters/test_adapter.rb
514
+ - lib/mno_enterprise/mail_client.rb
515
+ - lib/mno_enterprise/smtp_client.rb
478
516
  - lib/mno_enterprise/testing_support/ability_test_helper.rb
479
517
  - lib/mno_enterprise/testing_support/common_rake.rb
480
518
  - lib/mno_enterprise/testing_support/factories.rb
@@ -509,7 +547,14 @@ files:
509
547
  - spec/lib/her_extension/model/relation_spec.rb
510
548
  - spec/lib/mandrill_client_spec.rb
511
549
  - spec/lib/mno_enterprise/core_engine_spec.rb
550
+ - spec/lib/mno_enterprise/mail_adapters/adapter_spec.rb
551
+ - spec/lib/mno_enterprise/mail_adapters/mandrill_adapter_spec.rb
552
+ - spec/lib/mno_enterprise/mail_adapters/smtp_adapter_spec.rb
553
+ - spec/lib/mno_enterprise/mail_adapters/sparkpost_adapter_spec.rb
554
+ - spec/lib/mno_enterprise/mail_client_spec.rb
555
+ - spec/lib/mno_enterprise/smtp_client_spec.rb
512
556
  - spec/mno_enterprise_spec.rb
557
+ - spec/models/mno_enterprise/ability_spec.rb
513
558
  - spec/models/mno_enterprise/app_instance_spec.rb
514
559
  - spec/models/mno_enterprise/app_spec.rb
515
560
  - spec/models/mno_enterprise/base_resource_spec.rb
@@ -550,10 +595,17 @@ test_files:
550
595
  - spec/models/mno_enterprise/app_instance_spec.rb
551
596
  - spec/models/mno_enterprise/impac/dashboard_spec.rb
552
597
  - spec/models/mno_enterprise/deletion_request_spec.rb
598
+ - spec/models/mno_enterprise/ability_spec.rb
553
599
  - spec/models/mno_enterprise/invoice_spec.rb
554
600
  - spec/models/mno_enterprise/user_spec.rb
555
601
  - spec/models/mno_enterprise/base_resource_spec.rb
556
602
  - spec/spec_helper.rb
603
+ - spec/lib/mno_enterprise/smtp_client_spec.rb
604
+ - spec/lib/mno_enterprise/mail_adapters/smtp_adapter_spec.rb
605
+ - spec/lib/mno_enterprise/mail_adapters/mandrill_adapter_spec.rb
606
+ - spec/lib/mno_enterprise/mail_adapters/sparkpost_adapter_spec.rb
607
+ - spec/lib/mno_enterprise/mail_adapters/adapter_spec.rb
608
+ - spec/lib/mno_enterprise/mail_client_spec.rb
557
609
  - spec/lib/mno_enterprise/core_engine_spec.rb
558
610
  - spec/lib/her_extension/her_orm_adapter.rb
559
611
  - spec/lib/her_extension/model/relation_spec.rb