iugusdk 1.0.0.alpha.3 → 1.0.0.alpha.4

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 (51) hide show
  1. data/app/controllers/iugu/account_controller.rb +14 -5
  2. data/app/controllers/iugu/pricing_controller.rb +8 -0
  3. data/app/controllers/iugu/profile_controller.rb +15 -2
  4. data/app/controllers/iugu/registrations_controller.rb +8 -0
  5. data/app/controllers/iugu/sessions_controller.rb +8 -0
  6. data/app/models/account.rb +1 -13
  7. data/app/models/api_token.rb +32 -0
  8. data/app/models/user.rb +25 -0
  9. data/app/views/iugu/pricing/index.html.haml +14 -0
  10. data/app/views/iugu/settings/account.html.haml +21 -6
  11. data/app/views/iugu/settings/profile.html.haml +11 -1
  12. data/config/locales/iugu.en.yml +5 -1
  13. data/config/locales/iugu.pt-BR.yml +5 -1
  14. data/config/routes.rb +3 -0
  15. data/db/migrate/20121023113304_create_api_token.rb +15 -0
  16. data/lib/iugusdk/engine.rb +8 -0
  17. data/lib/iugusdk/iugusdk_base_controller.rb +16 -7
  18. data/lib/iugusdk/root_tenancy_url.rb +3 -3
  19. data/lib/iugusdk/session_parameter_middleware.rb +15 -0
  20. data/lib/iugusdk/version.rb +1 -1
  21. data/lib/iugusdk.rb +17 -0
  22. data/spec/controllers/account_controller_spec.rb +19 -8
  23. data/spec/controllers/pricing_controller_spec.rb +16 -0
  24. data/spec/controllers/profile_controller_spec.rb +13 -4
  25. data/spec/controllers/registration_controller_spec.rb +15 -1
  26. data/spec/dummy/config/application.rb +4 -1
  27. data/spec/dummy/config/initializers/iugusdk.rb +2 -0
  28. data/spec/dummy/db/migrate/20121108115535_remove_api_token_from_account.rb +7 -0
  29. data/spec/dummy/db/schema.rb +11 -1
  30. data/spec/dummy/log/development.log +2967 -0
  31. data/spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  32. data/spec/dummy/tmp/cache/assets/CF1/A70/sprockets%2F368a631d9662bcc4891c91f739b7be37 +0 -0
  33. data/spec/dummy/tmp/cache/assets/CF6/A50/sprockets%2Ff434c1ed5d55916f790cf698832f76b1 +0 -0
  34. data/spec/dummy/tmp/cache/assets/CF9/650/sprockets%2F5767184d0e9646ef1aec88c89a47b761 +0 -0
  35. data/spec/dummy/tmp/cache/assets/D12/D70/sprockets%2F9c37ed72a191cf588665dcb621f401c3 +0 -0
  36. data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  37. data/spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  38. data/spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  39. data/spec/dummy/tmp/cache/assets/D77/920/sprockets%2Faf0e746c541e6cf4540db92c87da579c +0 -0
  40. data/spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  41. data/spec/dummy/tmp/cache/assets/DDC/410/sprockets%2F91b38c54838c97f0815ebf8aabddfc4e +0 -0
  42. data/spec/dummy/tmp/cache/assets/E01/940/sprockets%2F5fe65d209f8e909c4f3b080fceacac1e +0 -0
  43. data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  44. data/spec/dummy/tmp/cache/sass/e35248e21fc26dee07372931d609e6a972a6818c/default.sassc +0 -0
  45. data/spec/fabricators/api_token_fabricator.rb +5 -0
  46. data/spec/models/account_spec.rb +0 -33
  47. data/spec/models/api_token_spec.rb +23 -0
  48. data/spec/models/user_spec.rb +9 -0
  49. data/spec/requests/account_spec.rb +19 -5
  50. data/spec/requests/user_spec.rb +18 -1
  51. metadata +289 -416
@@ -18,9 +18,13 @@ class Iugu::AccountController < Iugu::AccountSettingsController
18
18
  end
19
19
 
20
20
  def destroy
21
- account = current_user.accounts.find(params[:id])
22
- account.destroy
23
- redirect_to(account_settings_path, :notice => I18n.t("iugu.account_destruction_in") + account.destruction_job.run_at.to_s)
21
+ if IuguSDK::enable_account_cancel
22
+ account = current_user.accounts.find(params[:id])
23
+ account.destroy
24
+ redirect_to(account_settings_path, :notice => I18n.t("iugu.account_destruction_in") + account.destruction_job.run_at.to_s)
25
+ else
26
+ raise ActionController::RoutingError.new('Not found')
27
+ end
24
28
  end
25
29
 
26
30
  def cancel_destruction
@@ -49,9 +53,14 @@ class Iugu::AccountController < Iugu::AccountSettingsController
49
53
  def generate_new_token
50
54
  if IuguSDK::enable_account_api
51
55
  @account = current_user.accounts.find(params[:account_id])
52
- @account.update_api_token
56
+ token = @account.tokens.create(description: params[:description], api_type: params[:api_type])
57
+ if token.new_record?
58
+ notice = token.errors.full_messages
59
+ else
60
+ notice = I18n.t("iugu.notices.new_token_generated")
61
+ end
53
62
  flash[:group] = :api_token
54
- redirect_to account_view_path(params[:account_id]), :notice => I18n.t("iugu.notices.new_token_generated")
63
+ redirect_to account_view_path(params[:account_id]), :notice => notice
55
64
  else
56
65
  raise ActionController::RoutingError.new('Not found')
57
66
  end
@@ -0,0 +1,8 @@
1
+ class Iugu::PricingController < ApplicationController
2
+ before_filter :verify_api_key, :only => [ :index ]
3
+
4
+ def index
5
+ @plans = Iugu::Api::Plan.all
6
+ end
7
+
8
+ end
@@ -25,8 +25,12 @@ class Iugu::ProfileController < Iugu::SettingsController
25
25
  end
26
26
 
27
27
  def destroy
28
- (user = current_user).destroy
29
- redirect_to(profile_settings_path, :notice => I18n.t("iugu.user_destruction_in") + user.destruction_job.run_at.to_s)
28
+ if IuguSDK::enable_user_cancel
29
+ (user = current_user).destroy
30
+ redirect_to(profile_settings_path, :notice => I18n.t("iugu.user_destruction_in") + user.destruction_job.run_at.to_s)
31
+ else
32
+ raise ActionController::RoutingError.new("Not found")
33
+ end
30
34
  end
31
35
 
32
36
  def cancel_destruction
@@ -63,4 +67,13 @@ class Iugu::ProfileController < Iugu::SettingsController
63
67
  end
64
68
  end
65
69
 
70
+ def renew_token
71
+ if IuguSDK::enable_user_api
72
+ current_user.token.refresh
73
+ redirect_to profile_settings_path
74
+ else
75
+ raise ActionController::RoutingError.new("Not found")
76
+ end
77
+ end
78
+
66
79
  end
@@ -3,6 +3,14 @@ class Iugu::RegistrationsController < Devise::RegistrationsController
3
3
 
4
4
  layout IuguSDK.alternative_layout
5
5
 
6
+ def new
7
+ if !IuguSDK::default_subscription_name && IuguSDK::enable_subscription_features
8
+ redirect_to pricing_index_path
9
+ else
10
+ super
11
+ end
12
+ end
13
+
6
14
  def try_first
7
15
  if IuguSDK::enable_guest_user
8
16
  @user = User.create_guest
@@ -1,5 +1,13 @@
1
1
  class Iugu::SessionsController < Devise::SessionsController
2
2
  after_filter :select_account, :only => :create
3
3
 
4
+ def after_sign_in_path_for(resource_or_scope)
5
+ IuguSDK::app_main_url
6
+ end
7
+
8
+ def after_sign_out_path_for(resource_or_scope)
9
+ IuguSDK::app_root_url
10
+ end
11
+
4
12
  layout IuguSDK.alternative_layout
5
13
  end
@@ -4,6 +4,7 @@ class Account < ActiveRecord::Base
4
4
  has_many :account_users, :dependent => :destroy, :include => [:roles,:account]
5
5
  has_many :account_domains, :dependent => :destroy
6
6
  has_many :users, :through => :account_users
7
+ has_many :tokens, :as => :tokenable, :class_name => "ApiToken"
7
8
  handle_asynchronously :destroy, :queue => Proc.new { |p| "account_#{p.id}_destroy" },
8
9
  :run_at => Proc.new { DateTime.now + IuguSDK::delay_account_exclusion }
9
10
 
@@ -13,7 +14,6 @@ class Account < ActiveRecord::Base
13
14
 
14
15
  attr_accessible :subdomain, :name
15
16
 
16
- before_create :set_first_token
17
17
  after_create :set_first_subdomain, :unless => :subdomain?
18
18
 
19
19
  def self.get_from_domain(domain)
@@ -46,24 +46,12 @@ class Account < ActiveRecord::Base
46
46
  (super.blank? ? "#{I18n.t('iugu.account')} ##{id}" : super)
47
47
  end
48
48
 
49
- def update_api_token
50
- self.update_attribute(:api_token, generate_api_token)
51
- end
52
-
53
49
  private
54
50
 
55
- def set_first_token
56
- self.api_token = generate_api_token
57
- end
58
-
59
51
  def set_first_subdomain
60
52
  self.update_attribute(:subdomain, "#{IuguSDK::account_alias_prefix}#{id}")
61
53
  end
62
54
 
63
- def generate_api_token
64
- Digest::MD5.hexdigest("#{SecureRandom.hex(10)}-#{DateTime.now.to_s}")
65
- end
66
-
67
55
  def subdomain_blacklist
68
56
  if subdomain
69
57
  IuguSDK::custom_domain_invalid_prefixes.each do |invalid_prefix|
@@ -0,0 +1,32 @@
1
+ class ApiToken < ActiveRecord::Base
2
+ belongs_to :tokenable, :polymorphic => true
3
+
4
+ before_create :set_first_token
5
+
6
+ validates :token, :uniqueness => true
7
+ validates :description, :uniqueness => { :scope => [:tokenable_id, :tokenable_type] }
8
+ validates :description, :tokenable, :api_type, :presence => true
9
+ validate :valid_account_api_type, :if => Proc.new { tokenable_type == "Account" }
10
+
11
+ def refresh
12
+ self.token = generate_api_token
13
+ save
14
+ end
15
+
16
+
17
+ private
18
+
19
+ def set_first_token
20
+ self.token = generate_api_token
21
+ end
22
+
23
+ def generate_api_token
24
+ Digest::MD5.hexdigest("#{SecureRandom.hex(10)}-#{DateTime.now.to_s}")
25
+ end
26
+
27
+ def valid_account_api_type
28
+ errors.add(:api_type, I18n.t('errors.messages.not_supported_api_type')) unless IuguSDK::account_api_tokens.include? api_type
29
+ end
30
+
31
+
32
+ end
data/app/models/user.rb CHANGED
@@ -6,6 +6,7 @@ class User < ActiveRecord::Base
6
6
  has_many :account_users, :dependent => :destroy, :include => [:roles,:account]
7
7
  has_many :accounts, :through => :account_users
8
8
  has_many :social_accounts, :dependent => :destroy
9
+ has_one :token, :as => :tokenable, :class_name => "ApiToken"
9
10
 
10
11
  handle_asynchronously :destroy, :queue => Proc.new { |p| "user_#{p.id}_destroy" },
11
12
  :run_at => Proc.new { DateTime.now + IuguSDK::delay_user_exclusion }
@@ -22,6 +23,8 @@ class User < ActiveRecord::Base
22
23
 
23
24
  before_create :skip_confirmation!, :unless => Proc.new { IuguSDK::enable_user_confirmation }
24
25
 
26
+ after_create :init_token, :if => Proc.new { IuguSDK::enable_user_api }
27
+
25
28
  after_create :create_account_for_user
26
29
 
27
30
  after_create :send_welcome_mail, :if => Proc.new { |r| IuguSDK::enable_welcome_mail && !r.email.blank? }
@@ -132,8 +135,28 @@ class User < ActiveRecord::Base
132
135
  end
133
136
  end
134
137
 
138
+ def access_token
139
+ "none"
140
+ end
141
+
142
+ # def to_json
143
+ # super(:only => [:email,:id])
144
+ # end
145
+ def as_json(options = nil)
146
+ {
147
+ id: id,
148
+ email: email,
149
+ locale: locale,
150
+ access_token: access_token
151
+ }
152
+ end
153
+
135
154
  private
136
155
 
156
+ def init_token
157
+ self.token = ApiToken.create(tokenable: self, api_type: "USER", description: "User")
158
+ end
159
+
137
160
  def destroy_private_accounts
138
161
  self.accounts.each do |acc|
139
162
  acc.destroy if acc.account_users.count <= 1
@@ -161,4 +184,6 @@ class User < ActiveRecord::Base
161
184
  account_user = new_account.account_users.create( { :user => self } )
162
185
  end
163
186
  end
187
+
188
+
164
189
  end
@@ -0,0 +1,14 @@
1
+ Pricing
2
+ %br
3
+ - @plans.each do |plan|
4
+ = plan.name
5
+ - plan.prices.each do |price|
6
+ = "-"
7
+ = price.value_cents
8
+ = price.currency
9
+ - plan.features.each do |feature|
10
+ - if feature.important
11
+ = "-"
12
+ = feature.name
13
+ %br
14
+
@@ -42,23 +42,38 @@
42
42
  = link_to I18n.t("iugu.payment_history")
43
43
 
44
44
 
45
+ %br
45
46
  - if IuguSDK::enable_account_api
46
47
  - if current_user.is?(:owner, @account)
47
- %br
48
+ %h2
49
+ = I18n.t("iugu.api_tokens")
48
50
  - if flash[:group] == :api_token
49
51
  %div
50
- = flash[:notice]
52
+ - if flash[:notice].class == Array
53
+ %ul
54
+ - flash[:notice].each do |e|
55
+ %li
56
+ = e
57
+ - else
58
+ = flash[:notice]
51
59
  %div
52
- = I18n.t("iugu.api_token")
53
- = link_to I18n.t("iugu.generate_new_token"), account_generate_new_token_path(@account.id), :method => :post
60
+ - @account.tokens.each do |token|
61
+ = "#{token.description} - #{token.api_type} - #{token.token} - #{token.created_at}"
62
+ %br
54
63
  %br
55
- = @account.api_token
64
+ = form_tag(account_generate_new_token_path(@account.id), :method => :post) do
65
+ = I18n.t('iugu.api_type')
66
+ = select_tag :api_type, options_for_select(IuguSDK::account_api_tokens)
67
+ = I18n.t('iugu.description')
68
+ = text_field_tag :description
69
+ = submit_tag I18n.t('iugu.create')
56
70
 
57
71
  - if current_user.is?(:owner, @account)
58
72
  %br
59
73
  %br
60
74
  - unless @account.destroying?
61
- = link_to I18n.t("iugu.cancel_account"), account_destroy_path(@account.id), :method => :delete
75
+ - if IuguSDK::enable_account_cancel
76
+ = link_to I18n.t("iugu.cancel_account"), account_destroy_path(@account.id), :method => :delete
62
77
  - else
63
78
  - if IuguSDK::delay_account_exclusion > 0
64
79
  = link_to I18n.t("iugu.undo"), account_cancel_destruction_path(@account.id), :method => :delete
@@ -58,6 +58,15 @@
58
58
  = f.submit "OK"
59
59
  %br
60
60
 
61
+ - if IuguSDK::enable_user_api
62
+ %h3
63
+ Api Token
64
+ = @user.token.token
65
+ %br
66
+ = link_to "Renew", renew_user_token_path
67
+ %br
68
+ %br
69
+
61
70
  - if IuguSDK::enable_signup_form
62
71
  %div
63
72
  %h3
@@ -91,7 +100,8 @@
91
100
  - unless @user.destruction_job.locked_at
92
101
  = link_to I18n.t("iugu.undo"), profile_cancel_destruction_path, :confirm => I18n.t("iugu.are_you_sure?")
93
102
  - else
94
- = link_to I18n.t("iugu.remove_user"), profile_destroy_path, :confirm => I18n.t("iugu.are_you_sure?")
103
+ - if IuguSDK::enable_user_cancel
104
+ = link_to I18n.t("iugu.remove_user"), profile_destroy_path, :confirm => I18n.t("iugu.are_you_sure?")
95
105
  %br
96
106
 
97
107
  - if IuguSDK::enable_social_linking
@@ -5,6 +5,7 @@ en:
5
5
  invalid_role: "Not a valid role"
6
6
  only_social_and_no_email: "You need email and password to unlink this Social Account"
7
7
  email_already_in_use: "This email is already in use"
8
+ not_supported_api_type: "not supported api type"
8
9
  iugu:
9
10
  welcome: "Welcome"
10
11
  edit: "Edit"
@@ -19,6 +20,7 @@ en:
19
20
  back_to: "Back to"
20
21
  back: "Back"
21
22
  save: "Save"
23
+ create: "Create"
22
24
  invited_by: "Invited by"
23
25
  accept: "Accept"
24
26
  invite: "Invite"
@@ -83,7 +85,9 @@ en:
83
85
  did_not_receive_confirmation_instructions?: "Didn't receive confirmation instructions?"
84
86
  plan_name: "Plan name"
85
87
  custom_domains: "Custom domains"
86
- api_token: "Api token"
88
+ api_tokens: "Api tokens"
89
+ api_type: "Api type"
90
+ description: "Description"
87
91
  i_dont_have_any_accounts: "I don't have any accounts"
88
92
  owner: "owner"
89
93
  admin: "admin"
@@ -5,6 +5,7 @@ pt-BR:
5
5
  invalid_role: "Cargo invalido"
6
6
  only_social_and_no_email: "Você precisa de um email para poder apagar essa rede social"
7
7
  email_already_in_use: "Esse email já foi utilizado"
8
+ not_supported_api_type: "tipo de api não suportado"
8
9
  iugu:
9
10
  welcome: "Bem vindo"
10
11
  edit: "Editar"
@@ -19,6 +20,7 @@ pt-BR:
19
20
  back_to: "Voltar para"
20
21
  back: "Voltar"
21
22
  save: "Salvar"
23
+ create: "Criar"
22
24
  invited_by: "Convidado por"
23
25
  accept: "Aceitar"
24
26
  invite: "Convidar"
@@ -83,7 +85,9 @@ pt-BR:
83
85
  did_not_receive_confirmation_instructions?: "Não recebeu as instruções para confirmação?"
84
86
  plan_name: "Nome do Plano"
85
87
  custom_domains: "Dominios customizados"
86
- api_token: "Token da api"
88
+ api_tokens: "Tokens da api"
89
+ api_type: "Tipo de api"
90
+ description: "Descrição"
87
91
  i_dont_have_any_accounts: "Eu não tenho nenhuma conta"
88
92
  owner: "dono"
89
93
  admin: "administrador"
data/config/routes.rb CHANGED
@@ -33,6 +33,7 @@ Rails.application.routes.draw do
33
33
  get "settings/profile/cancel_destruction" => "iugu/profile#cancel_destruction", :as => "profile_cancel_destruction"
34
34
  post "settings/profile" => "iugu/profile#update", :as => "profile_update"
35
35
  get "settings/profile/social/destroy" => "iugu/profile#destroy_social", :as => "social_destroy"
36
+ get "settings/profile/renew_token" => "iugu/profile#renew_token", :as => "renew_user_token"
36
37
  post 'become_user' => 'iugu/profile#become_user', :as => 'become_user'
37
38
 
38
39
  get '/settings/account/:account_id/invite' => 'iugu/invitations#new', :as => 'new_invite'
@@ -42,6 +43,8 @@ Rails.application.routes.draw do
42
43
  get "/settings/account/(:id)/user/:user_id/roles" => "iugu/account_roles#edit", :as => "account_roles_edit"
43
44
  post "/settings/account/(:id)/user/:user_id/roles" => "iugu/account_roles#update", :as => "account_roles_update"
44
45
 
46
+ get '/pricing' => 'iugu/pricing#index', :as => 'pricing_index'
47
+
45
48
  devise_for :users,
46
49
  :path => 'account',
47
50
  :module => 'iugu',
@@ -0,0 +1,15 @@
1
+ class CreateApiToken < ActiveRecord::Migration
2
+ def up
3
+ create_table :api_tokens do |t|
4
+ t.column :token, :string
5
+ t.column :description, :string
6
+ t.column :api_type, :string
7
+ t.references :tokenable, :polymorphic => true
8
+ t.timestamps
9
+ end
10
+ end
11
+
12
+ def down
13
+ drop_table :api_tokens
14
+ end
15
+ end
@@ -1,6 +1,14 @@
1
1
  module IuguSDK
2
2
  class Engine < Rails::Engine
3
3
 
4
+ initializer "iugusdk.load_app_root" do |app|
5
+
6
+ IuguSDK.app_root = app.root
7
+
8
+ app.config.middleware.insert_before( app.config.session_store, SessionParameterMiddleware, app.config.session_options[:key])
9
+
10
+ end
11
+
4
12
  initializer 'iugusdk.action_controller' do |app|
5
13
  ActiveSupport.on_load(:action_controller) do
6
14
  include IuguSDK::Controllers::Helpers
@@ -9,17 +9,26 @@ module IuguSDKBaseController
9
9
  end
10
10
 
11
11
  def configure_locale
12
- @matched_locale_from_browser = request.preferred_language_from(AvailableLanguage.all.values)
13
- if signed_in?
14
- if current_user.locale.blank?
15
- locale = "en"
12
+ if(params[:hl])
13
+ locale = params[:hl] if AvailableLanguage.all.values.include? params[:hl]
14
+ end
15
+ unless locale
16
+ @matched_locale_from_browser = request.preferred_language_from(AvailableLanguage.all.values)
17
+ if signed_in?
18
+ if current_user.locale.blank?
19
+ locale = "en"
20
+ else
21
+ locale = current_user.locale
22
+ end
16
23
  else
17
- locale = current_user.locale
24
+ locale = @matched_locale_from_browser
18
25
  end
19
- else
20
- locale = @matched_locale_from_browser
21
26
  end
22
27
  I18n.locale = locale
23
28
  end
24
29
 
30
+ def verify_api_key
31
+ raise ActionController::RoutingError.new("iws_api_key missing") unless IuguSDK::iws_api_key
32
+ end
33
+
25
34
  end
@@ -14,10 +14,10 @@ module IuguSDK
14
14
  # - Return true if request.host is not found in the invalid array
15
15
  def self.matches?(request)
16
16
  application_domain = IuguSDK::application_main_host
17
- valids = [ application_domain, ['www.',application_domain].join ]
17
+ valids = [ application_domain, ['www.',application_domain].join, 'localhost' ]
18
18
  unless Rails.env.production?
19
- first_part_uri = application_domain.gsub('.dev','')
20
- return true if request.host.match("#{first_part_uri}\.[^\.]+\.[^\.]+\.[^\.]+\.[^\.]+\.xip.io")
19
+ # first_part_uri = application_domain.gsub('.dev','')
20
+ return true if request.host.match("#{application_domain}\.[^\.]+\.[^\.]+\.[^\.]+\.[^\.]+\.xip.io")
21
21
  end
22
22
  valids.include?( request.host )
23
23
  end
@@ -0,0 +1,15 @@
1
+ require 'rack/utils'
2
+
3
+ class SessionParameterMiddleware
4
+ def initialize(app, session_key = '_session_id')
5
+ @app = app
6
+ @session_key = session_key
7
+ end
8
+
9
+ def call(env)
10
+ # if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
11
+ params = ::Rack::Utils.parse_query(env['QUERY_STRING'])
12
+ env['HTTP_COOKIE'] = [ @session_key, params[@session_key] ].join('=').freeze unless params[@session_key].nil?
13
+ @app.call(env)
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module IuguSDK
2
- VERSION = "1.0.0.alpha.3"
2
+ VERSION = "1.0.0.alpha.4"
3
3
  end
data/lib/iugusdk.rb CHANGED
@@ -4,6 +4,7 @@ require 'simple_form'
4
4
  require 'iugusdk/controllers/helpers'
5
5
  require 'iugusdk/valid_tenancy_urls'
6
6
  require 'iugusdk/root_tenancy_url'
7
+ require 'iugusdk/session_parameter_middleware'
7
8
  require "iugusdk/engine"
8
9
  require "iugusdk/iugusdk_base_controller"
9
10
  require "http_accept_language"
@@ -62,6 +63,12 @@ module IuguSDK
62
63
  mattr_accessor :enable_account_api
63
64
  self.enable_account_api = false
64
65
 
66
+ mattr_accessor :account_api_tokens
67
+ self.account_api_tokens = []
68
+
69
+ mattr_accessor :enable_user_api
70
+ self.enable_user_api = false
71
+
65
72
  mattr_accessor :enable_social_login
66
73
  self.enable_social_login = false
67
74
 
@@ -95,6 +102,14 @@ module IuguSDK
95
102
  mattr_accessor :enable_welcome_mail
96
103
  self.enable_welcome_mail = false
97
104
 
105
+ mattr_accessor :enable_account_cancel
106
+ self.enable_account_cancel = true
107
+
108
+ mattr_accessor :enable_user_cancel
109
+ self.enable_user_cancel = true
110
+
111
+ mattr_accessor :iws_api_key
112
+
98
113
  self.application_title = 'Application Name'
99
114
 
100
115
  self.app_main_url = '/'
@@ -105,11 +120,13 @@ module IuguSDK
105
120
  self.default_layout = "settings"
106
121
  self.alternative_layout = "application"
107
122
 
123
+
108
124
  def initialize
109
125
  end
110
126
 
111
127
  def self.setup
112
128
  yield self
129
+ Iugu::Api.token = iws_api_key if self.iws_api_key
113
130
  end
114
131
 
115
132
  end
@@ -35,15 +35,25 @@ describe Iugu::AccountController do
35
35
 
36
36
  context "destroy" do
37
37
  login_as_user
38
- context "when using right id" do
39
- before do
40
- get :destroy, :id => @user.accounts.first.id
38
+ context "when enable_account_cancel == true" do
39
+ context "and using right id" do
40
+ before do
41
+ IuguSDK::enable_account_cancel = true
42
+ get :destroy, :id => @user.accounts.first.id
43
+ end
44
+
45
+ it { response.should redirect_to account_settings_path }
46
+
47
+ it 'should start destruction job' do
48
+ @user.accounts.first.destroying?.should be_true
49
+ end
41
50
  end
51
+ end
42
52
 
43
- it { response.should redirect_to account_settings_path }
44
-
45
- it 'should start destruction job' do
46
- @user.accounts.first.destroying?.should be_true
53
+ context "when enable_account_cancel == false" do
54
+ it 'should raise RoutingError' do
55
+ IuguSDK::enable_account_cancel = false
56
+ lambda{ get :destroy, :id => @user.accounts.first.id }.should raise_error ActionController::RoutingError
47
57
  end
48
58
  end
49
59
 
@@ -116,8 +126,9 @@ describe Iugu::AccountController do
116
126
  login_as_user
117
127
  before(:each) do
118
128
  IuguSDK::enable_account_api = true
129
+ IuguSDK::account_api_tokens = [ 'test' ]
119
130
  @account = @user.accounts.last
120
- post :generate_new_token, :account_id => @account.id
131
+ post :generate_new_token, :account_id => @account.id, :description => 'token x', :api_type => 'test'
121
132
  end
122
133
 
123
134
  it { response.should redirect_to account_view_path(@account.id) }
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Iugu::PricingController do
4
+ login_as_user
5
+ describe "unless iws_api_key" do
6
+ before do
7
+ IuguSDK::iws_api_key = nil
8
+ end
9
+ it 'should raise routing error' do
10
+ lambda {
11
+ get :index
12
+ }.should raise_error ActionController::RoutingError
13
+ end
14
+ end
15
+
16
+ end
@@ -39,13 +39,22 @@ describe Iugu::ProfileController do
39
39
 
40
40
  context "destroy" do
41
41
  login_as_user
42
+ context "when enable_user_cancel == true" do
43
+ before(:each) do
44
+ IuguSDK::enable_user_cancel = true
45
+ get :destroy
46
+ end
42
47
 
43
- before(:each) do
44
- get :destroy
48
+ it 'user should be destroyed' do
49
+ @user.destroying?.should be_true
50
+ end
45
51
  end
46
52
 
47
- it 'user should be destroyed' do
48
- @user.destroying?.should be_true
53
+ context "when enable_user_cancel == false" do
54
+ it 'should raise RoutingError' do
55
+ IuguSDK::enable_user_cancel = false
56
+ lambda{get :destroy}.should raise_error ActionController::RoutingError
57
+ end
49
58
  end
50
59
 
51
60
  end
@@ -26,7 +26,21 @@ describe Iugu::RegistrationsController do
26
26
  }.should raise_error ActionController::RoutingError
27
27
  end
28
28
  end
29
-
29
+
30
+ end
31
+
32
+ context "new" do
33
+ context "when enable_subscription_features == true and default_subscription_name = nil " do
34
+ before(:each) do
35
+ IuguSDK::enable_subscription_features = true
36
+ IuguSDK::default_subscription_name = nil
37
+ end
38
+ it 'should redirect to pricing' do
39
+ get :new
40
+ response.should redirect_to pricing_index_path
41
+ end
42
+ end
43
+
30
44
  end
31
45
 
32
46
  end
@@ -58,8 +58,11 @@ module Dummy
58
58
  password: "envioiugu",
59
59
  authentication: :plain,
60
60
  enable_starttls_auto: true
61
- }
61
+ }
62
62
 
63
+ # config.session_store :disabled
64
+ # config.middleware.delete(ActionDispatch::Cookies)
65
+ # config.middleware.delete(ActionDispatch::Session::CookieStore)
63
66
 
64
67
  end
65
68
  end