mno-enterprise-api 3.0.4 → 3.0.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.
- checksums.yaml +4 -4
- data/app/controllers/mno_enterprise/impersonate_controller.rb +2 -1
- data/app/controllers/mno_enterprise/jpi/v1/admin/invoices_controller.rb +27 -13
- data/app/controllers/mno_enterprise/jpi/v1/app_instances_sync_controller.rb +2 -2
- data/app/controllers/mno_enterprise/status_controller.rb +4 -2
- data/app/views/mno_enterprise/auth/confirmations/_form.html.haml +2 -2
- data/app/views/mno_enterprise/auth/registrations/_form.html.haml +1 -1
- data/app/views/mno_enterprise/jpi/v1/impac/kpis/_kpi.json.jbuilder +1 -1
- data/app/views/mno_enterprise/jpi/v1/organizations/_credit_card.json.jbuilder +2 -2
- data/spec/controllers/mno_enterprise/impersonate_controller_spec.rb +14 -4
- data/spec/controllers/mno_enterprise/jpi/v1/admin/invoices_controller_spec.rb +14 -4
- data/spec/controllers/mno_enterprise/jpi/v1/app_instances_sync_controller_spec.rb +8 -0
- data/spec/controllers/mno_enterprise/jpi/v1/impac/kpis_controller_spec.rb +2 -2
- data/spec/controllers/mno_enterprise/pages_controller_spec.rb +4 -0
- data/spec/controllers/mno_enterprise/status_controller_spec.rb +4 -0
- data/spec/controllers/mno_enterprise/webhook/o_auth_controller_spec.rb +5 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7e106e124a8c96884a2b7ac9c9542ab67460442
|
4
|
+
data.tar.gz: c127898de52fae7ee5a694698b222cfbdc1cca5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8809f71f724734c1e723dcd7e8081eb159b0ef821fd17c70e70c281a1709b7aed178ffd0191e36bfcb5d12c346864b49a1975b6c7c630817ef45143ef85d4f3
|
7
|
+
data.tar.gz: ebdb4218b0d0f97aeac0c89d760eb68db8ab6f2ae390b1f2f67c8f4dc7bd5dbfb70b1f3785a0508f16ef0b4f1bf3f633bb42f44047a5860d9b84847e42dc9175
|
@@ -8,6 +8,7 @@ module MnoEnterprise
|
|
8
8
|
# Perform the user impersonate action
|
9
9
|
# GET /impersonate/user/123
|
10
10
|
def create
|
11
|
+
session[:impersonator_redirect_path] = params[:redirect_path].presence
|
11
12
|
@user = MnoEnterprise::User.find(params[:user_id])
|
12
13
|
if @user.present?
|
13
14
|
impersonate(@user)
|
@@ -24,7 +25,7 @@ module MnoEnterprise
|
|
24
25
|
# user = current_user
|
25
26
|
revert_impersonate
|
26
27
|
end
|
27
|
-
redirect_to '/admin/'
|
28
|
+
redirect_to session.delete(:impersonator_redirect_path).presence || '/admin/'
|
28
29
|
end
|
29
30
|
|
30
31
|
private
|
@@ -13,35 +13,49 @@ module MnoEnterprise
|
|
13
13
|
|
14
14
|
# GET /mnoe/jpi/v1/admin/invoices/current_billing_amount
|
15
15
|
def current_billing_amount
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
render json:
|
16
|
+
# Backward compatibility with old MnoHub (<= v1.0.2)
|
17
|
+
# TODO: Remove once all mnohub are migrated to newer versions
|
18
|
+
tenant.respond_to?(:current_billing_amount) && current_billing = tenant.current_billing_amount
|
19
|
+
|
20
|
+
render json: {current_billing_amount: format_money(current_billing)}
|
21
21
|
end
|
22
22
|
|
23
23
|
# GET /mnoe/jpi/v1/admin/invoices/last_invoicing_amount
|
24
24
|
def last_invoicing_amount
|
25
|
-
tenant_billing =
|
26
|
-
render json: {last_invoicing_amount:
|
25
|
+
tenant_billing = tenant.last_customers_invoicing_amount
|
26
|
+
render json: {last_invoicing_amount: format_money(tenant_billing)}
|
27
27
|
end
|
28
28
|
|
29
29
|
# GET /mnoe/jpi/v1/admin/invoices/outstanding_amount
|
30
30
|
def outstanding_amount
|
31
|
-
tenant_billing =
|
32
|
-
render json: {outstanding_amount:
|
31
|
+
tenant_billing = tenant.last_customers_outstanding_amount
|
32
|
+
render json: {outstanding_amount: format_money(tenant_billing)}
|
33
33
|
end
|
34
34
|
|
35
35
|
# GET /mnoe/jpi/v1/admin/invoices/last_portfolio_amount
|
36
36
|
def last_portfolio_amount
|
37
|
-
tenant_billing =
|
38
|
-
render json: {last_portfolio_amount:
|
37
|
+
tenant_billing = tenant.last_portfolio_amount
|
38
|
+
render json: {last_portfolio_amount: format_money(tenant_billing)}
|
39
39
|
end
|
40
40
|
|
41
41
|
# GET /mnoe/jpi/v1/admin/invoices/last_commission_amount
|
42
42
|
def last_commission_amount
|
43
|
-
tenant_billing =
|
44
|
-
render json: {last_commission_amount:
|
43
|
+
tenant_billing = tenant.last_commission_amount
|
44
|
+
render json: {last_commission_amount: format_money(tenant_billing)}
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def tenant
|
50
|
+
@tenant ||= MnoEnterprise::Tenant.show
|
51
|
+
end
|
52
|
+
|
53
|
+
def format_money(money)
|
54
|
+
if money
|
55
|
+
{amount: money.amount, currency: money.currency_as_string}
|
56
|
+
else
|
57
|
+
{amount: 'N/A', currency: ''}
|
58
|
+
end
|
45
59
|
end
|
46
60
|
end
|
47
61
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module MnoEnterprise
|
2
2
|
class Jpi::V1::AppInstancesSyncController < Jpi::V1::BaseResourceController
|
3
|
+
CONNECTOR_STATUS_RUNNING = ['PENDING', 'RUNNING']
|
3
4
|
|
4
5
|
# GET /mnoe/jpi/v1/organization/org-fbba/app_instances_sync
|
5
6
|
def index
|
@@ -28,9 +29,8 @@ module MnoEnterprise
|
|
28
29
|
def results(connectors)
|
29
30
|
{
|
30
31
|
connectors: connectors,
|
31
|
-
is_syncing: connectors.any?{|c| c[:status]
|
32
|
+
is_syncing: connectors.any? { |c| CONNECTOR_STATUS_RUNNING.include?(c[:status]) }
|
32
33
|
}
|
33
34
|
end
|
34
|
-
|
35
35
|
end
|
36
36
|
end
|
@@ -13,13 +13,15 @@ module MnoEnterprise
|
|
13
13
|
# {
|
14
14
|
# 'app-version': '9061048-6811c4a',
|
15
15
|
# 'mno-enterprise-version': '0.0.1',
|
16
|
-
# 'env': 'test'
|
16
|
+
# 'env': 'test',
|
17
|
+
# 'mno-api-host': 'https://uat.maestrano.io'
|
17
18
|
# }
|
18
19
|
def version
|
19
20
|
data = {
|
20
21
|
'app-version' => MnoEnterprise::APP_VERSION,
|
21
22
|
'mno-enteprise-version' => MnoEnterprise::VERSION,
|
22
|
-
'env' => Rails.env
|
23
|
+
'env' => Rails.env,
|
24
|
+
'mno-api-host' => MnoEnterprise.mno_api_host
|
23
25
|
}
|
24
26
|
render json: data
|
25
27
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
%div{ 'ng-init' => "user = { $pwdScore: {}, name: '#{resource.name}', surname: '#{resource.surname}' }" }
|
1
|
+
%div{ 'ng-init' => "user = { $pwdScore: {}, name: '#{resource.name}', surname: '#{resource.surname}', phone: '#{resource.phone}' }" }
|
2
2
|
|
3
3
|
= form_for(resource, as: resource_name, :url => mno_enterprise.user_confirmation_finalize_path, :html => { 'name' => 'loginForm', :class => 'autofill-detect text-center' }) do |f|
|
4
4
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
.col-sm-12
|
19
19
|
.phone
|
20
20
|
= f.select :phone_country_code, options_for_select(Country.all.map { |country,code| c = Country.new(code); ["#{c.alpha2} +#{c.country_code}", code]}, MnoEnterprise.app_country), {}, class: 'form-control unstyled'
|
21
|
-
= f.text_field :phone, placeholder: "*Phone", required: true, 'ng-model' => 'user.
|
21
|
+
= f.text_field :phone, placeholder: "*Phone", required: true, 'ng-model' => 'user.phone', class: 'form-control'
|
22
22
|
|
23
23
|
%br
|
24
24
|
|
@@ -25,7 +25,7 @@
|
|
25
25
|
.checkbox-section.text-center
|
26
26
|
= check_box_tag 'tos', 'accept', false, :required => true, :style => "margin-top: -3px;", 'ng-model' => 'acceptTos'
|
27
27
|
%label{for: 'tos'}= t('mno_enterprise.auth.registrations.new.user_accept')
|
28
|
-
= link_to t('.tos'), MnoEnterprise.router.terms_url, target: '_blank'
|
28
|
+
= link_to t('mno_enterprise.auth.registrations.new.tos'), MnoEnterprise.router.terms_url, target: '_blank'
|
29
29
|
|
30
30
|
%br
|
31
31
|
.row
|
@@ -1 +1 @@
|
|
1
|
-
json.extract! kpi, :id, :
|
1
|
+
json.extract! kpi, :id, :element_watched, :endpoint, :source, :targets, :settings, :extra_params
|
@@ -2,6 +2,6 @@ json.credit_card do
|
|
2
2
|
if credit_card
|
3
3
|
json.extract! credit_card, :id, :title,:first_name,:last_name,:month,:year,:country,:billing_address,:billing_city,:billing_postcode, :billing_country
|
4
4
|
json.number credit_card.masked_number
|
5
|
-
json.verification_value 'CVV'
|
5
|
+
json.verification_value credit_card.id ? 'CVV' : nil
|
6
6
|
end
|
7
|
-
end
|
7
|
+
end
|
@@ -30,13 +30,23 @@ module MnoEnterprise
|
|
30
30
|
|
31
31
|
describe "#destroy" do
|
32
32
|
subject { get :destroy }
|
33
|
-
before { get :create, user_id: user2.id }
|
34
33
|
|
35
|
-
|
34
|
+
context 'without redirect_path' do
|
35
|
+
before { get :create, user_id: user2.id }
|
36
36
|
|
37
|
-
|
37
|
+
it { expect(controller.current_user.id).to eq(user2.id) }
|
38
|
+
|
39
|
+
it { subject; expect(controller.current_user.id).to eq(user.id) }
|
40
|
+
|
41
|
+
it { is_expected.to redirect_to('/admin/') }
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'with a redirect_path' do
|
45
|
+
before { get :create, user_id: user2.id, redirect_path: '/admin/redirect#path' }
|
46
|
+
|
47
|
+
it { is_expected.to redirect_to('/admin/redirect#path') }
|
48
|
+
end
|
38
49
|
end
|
39
50
|
end
|
40
51
|
end
|
41
|
-
|
42
52
|
end
|
@@ -39,16 +39,13 @@ module MnoEnterprise
|
|
39
39
|
# Stub invoice and invoice call
|
40
40
|
let(:invoice) { build(:invoice) }
|
41
41
|
let(:user) { build(:user, :admin) }
|
42
|
-
let(:tenant) { build(:tenant) }
|
43
|
-
let(:org1) { build(:organization, current_billing: Money.new(10_000,'AUD')) }
|
44
|
-
let(:org2) { build(:organization, current_billing: Money.new(1000,'AUD')) }
|
42
|
+
let(:tenant) { build(:tenant, current_billing_amount: Money.new(11_000,'AUD')) }
|
45
43
|
|
46
44
|
before do
|
47
45
|
api_stub_for(get: "/invoices", response: from_api([invoice]))
|
48
46
|
api_stub_for(get: "/invoices/#{invoice.id}", response: from_api(invoice))
|
49
47
|
api_stub_for(get: "/users", response: from_api([user]))
|
50
48
|
api_stub_for(get: "/users/#{user.id}", response: from_api(user))
|
51
|
-
api_stub_for(get: "/organizations", response: from_api([org1, org2]))
|
52
49
|
api_stub_for(get: "/tenant", response: from_api(tenant))
|
53
50
|
sign_in user
|
54
51
|
end
|
@@ -85,6 +82,19 @@ module MnoEnterprise
|
|
85
82
|
describe 'GET #current_billing_amount' do
|
86
83
|
subject { get :current_billing_amount }
|
87
84
|
|
85
|
+
context 'with an old MnoHub' do
|
86
|
+
let(:tenant) { build(:old_tenant) }
|
87
|
+
|
88
|
+
before { subject }
|
89
|
+
|
90
|
+
it { expect(response).to be_success }
|
91
|
+
|
92
|
+
it 'returns the sum of the current_billing' do
|
93
|
+
expected = {'current_billing_amount' => {"amount"=>"N/A", "currency"=>""}}
|
94
|
+
expect(response.body).to eq(expected.to_json)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
88
98
|
context 'success' do
|
89
99
|
before { subject }
|
90
100
|
|
@@ -74,6 +74,14 @@ module MnoEnterprise
|
|
74
74
|
before { subject }
|
75
75
|
it { expect(JSON.parse(response.body)['is_syncing']).to be_falsey }
|
76
76
|
end
|
77
|
+
|
78
|
+
context "when connector is pending" do
|
79
|
+
let(:progress_results) { { connectors: [
|
80
|
+
HashWithIndifferentAccess.new({name: 'a_name', status: 'PENDING', date: nil})
|
81
|
+
] } }
|
82
|
+
before { subject }
|
83
|
+
it { expect(JSON.parse(response.body)['is_syncing']).to be_truthy }
|
84
|
+
end
|
77
85
|
end
|
78
86
|
|
79
87
|
describe "POST #create" do
|
@@ -46,7 +46,7 @@ module MnoEnterprise
|
|
46
46
|
end
|
47
47
|
|
48
48
|
describe 'PUT #update' do
|
49
|
-
let(:kpi_hash) { from_api(kpi)[:data].except(:dashboard).merge(
|
49
|
+
let(:kpi_hash) { from_api(kpi)[:data].except(:dashboard).merge(element_watched: 'New Watchable') }
|
50
50
|
|
51
51
|
subject { put :update, id: kpi.id, kpi: kpi_hash }
|
52
52
|
|
@@ -59,7 +59,7 @@ module MnoEnterprise
|
|
59
59
|
|
60
60
|
it "updates the kpi" do
|
61
61
|
subject
|
62
|
-
expect(assigns(:kpi).
|
62
|
+
expect(assigns(:kpi).element_watched).to eq('New Watchable')
|
63
63
|
end
|
64
64
|
|
65
65
|
it { subject; expect(response.code).to eq('200') }
|
@@ -9,6 +9,10 @@ module MnoEnterprise
|
|
9
9
|
render_views
|
10
10
|
routes { MnoEnterprise::Engine.routes }
|
11
11
|
|
12
|
+
# Freeze time (JWT are time dependent)
|
13
|
+
before { Timecop.freeze }
|
14
|
+
after { Timecop.return }
|
15
|
+
|
12
16
|
# Stub controller ability
|
13
17
|
let!(:ability) { stub_ability }
|
14
18
|
let(:extra_params) { {some: 'param'} }
|
@@ -33,7 +37,7 @@ module MnoEnterprise
|
|
33
37
|
it_behaves_like 'a user protected resource'
|
34
38
|
|
35
39
|
it { subject; expect(response).to be_success }
|
36
|
-
it {
|
40
|
+
it { subject; expect(assigns(:redirect_to)).to eq(redirect_url) }
|
37
41
|
|
38
42
|
Webhook::OAuthController::PROVIDERS_WITH_OPTIONS.each do |provider|
|
39
43
|
describe "#{provider.capitalize} provider" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mno-enterprise-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.5
|
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: 2016-
|
12
|
+
date: 2016-09-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mno-enterprise-core
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 3.0.
|
20
|
+
version: 3.0.5
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - '='
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 3.0.
|
27
|
+
version: 3.0.5
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: jbuilder
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -337,7 +337,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
337
337
|
version: '0'
|
338
338
|
requirements: []
|
339
339
|
rubyforge_project:
|
340
|
-
rubygems_version: 2.
|
340
|
+
rubygems_version: 2.5.1
|
341
341
|
signing_key:
|
342
342
|
specification_version: 4
|
343
343
|
summary: Maestrano Enterprise - API
|