diff options
-rw-r--r-- | billing/app/controllers/billing_base_controller.rb | 2 | ||||
-rw-r--r-- | billing/app/controllers/subscriptions_controller.rb | 2 | ||||
-rw-r--r-- | billing/app/views/subscriptions/show.html.haml | 3 | ||||
-rw-r--r-- | billing/config/routes.rb | 4 | ||||
-rw-r--r-- | billing/test/integration/subscription_test.rb | 48 | ||||
-rw-r--r-- | config/application.rb | 2 | ||||
-rw-r--r-- | config/environments/production.rb | 11 | ||||
-rw-r--r-- | users/app/controllers/v1/users_controller.rb | 2 | ||||
-rw-r--r-- | users/app/models/user.rb | 4 | ||||
-rw-r--r-- | users/test/integration/browser/account_test.rb | 4 | ||||
-rw-r--r-- | users/test/unit/account_test.rb | 11 |
11 files changed, 70 insertions, 23 deletions
diff --git a/billing/app/controllers/billing_base_controller.rb b/billing/app/controllers/billing_base_controller.rb index c250831..0453677 100644 --- a/billing/app/controllers/billing_base_controller.rb +++ b/billing/app/controllers/billing_base_controller.rb @@ -7,7 +7,7 @@ class BillingBaseController < ApplicationController def assign_user if params[:user_id] @user = User.find(params[:user_id]) - elsif params[:action] == "confirm" or params[:action] == "destroy" # confirms and subscription deletes will come back with different ID set, so check for this first + elsif params[:action] == "confirm"# confirms will come back with different ID set, so check for this first # This is only for cases where an admin cannot apply action for customer, but should be all confirms @user = current_user elsif params[:id] diff --git a/billing/app/controllers/subscriptions_controller.rb b/billing/app/controllers/subscriptions_controller.rb index 4047847..4b1851a 100644 --- a/billing/app/controllers/subscriptions_controller.rb +++ b/billing/app/controllers/subscriptions_controller.rb @@ -3,7 +3,7 @@ class SubscriptionsController < BillingBaseController before_filter :fetch_subscription, :only => [:show, :destroy] before_filter :confirm_no_active_subscription, :only => [:new, :create] # for now, admins cannot create or destroy subscriptions for others: - before_filter :confirm_self, :only => [:destroy, :new, :create] + before_filter :confirm_self, :only => [:new, :create] def new # don't show link to subscribe if they are already subscribed? diff --git a/billing/app/views/subscriptions/show.html.haml b/billing/app/views/subscriptions/show.html.haml index ebb7e0d..39f4d1a 100644 --- a/billing/app/views/subscriptions/show.html.haml +++ b/billing/app/views/subscriptions/show.html.haml @@ -3,5 +3,4 @@ Current Subscription = render :partial => "subscription_details", :locals => {:subscription => @subscription} -- if @user == current_user - = link_to t(:cancel_subscription), subscription_path(@subscription.id), :confirm => t(:are_you_sure), :method => :delete, :class => 'btn btn-danger' if @subscription.status == 'Active' # permission check or should that just be on show? += link_to t(:cancel_subscription), user_subscription_path(@user, @subscription.id), :confirm => t(:are_you_sure), :method => :delete, :class => 'btn btn-danger' if @subscription.status == 'Active' # permission check or should that just be on show? diff --git a/billing/config/routes.rb b/billing/config/routes.rb index 8b7b5bf..e024f43 100644 --- a/billing/config/routes.rb +++ b/billing/config/routes.rb @@ -4,7 +4,7 @@ Rails.application.routes.draw do match 'payments/confirm' => 'payments#confirm', :as => :confirm_payment resources :users do resources :payments, :only => [:index] - resources :subscriptions, :only => [:index, :show] + resources :subscriptions, :only => [:index, :show, :destroy] end resources :customer, :only => [:new, :edit] @@ -14,7 +14,7 @@ Rails.application.routes.draw do match 'customer/show/:id' => 'customer#show', :as => :show_customer match 'credit_card_info/confirm' => 'credit_card_info#confirm', :as => :confirm_credit_card_info - resources :subscriptions, :only => [:new, :create, :update, :destroy] # index and show are within users path + resources :subscriptions, :only => [:new, :create, :update] # index, show & destroy are within users path #match 'transactions/:product_id/new' => 'transactions#new', :as => :new_transaction #match 'transactions/confirm/:product_id' => 'transactions#confirm', :as => :confirm_transaction diff --git a/billing/test/integration/subscription_test.rb b/billing/test/integration/subscription_test.rb new file mode 100644 index 0000000..7410118 --- /dev/null +++ b/billing/test/integration/subscription_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' +require 'fake_braintree' +require 'capybara/rails' + +class SubscriptionTest < ActionDispatch::IntegrationTest + include Warden::Test::Helpers + include Capybara::DSL + + setup do + Warden.test_mode! + @admin = User.find_by_login('admin') || FactoryGirl.create(:user, login: 'admin') + @customer = FactoryGirl.create(:customer) + @braintree_customer = FactoryGirl.create(:braintree_customer) + @customer.braintree_customer_id = @braintree_customer.id + @customer.save + @subscription = FakeBraintree::Subscription.new({:payment_method_token => @braintree_customer.credit_cards.first, :plan_id => '5'}, {:id => @braintree_customer.id, :merchant_id => Braintree::Configuration.merchant_id}) + # unfortunately @braintree_customer.credit_cards.first.subscriptions still returns empty array + end + + teardown do + Warden.test_reset! + @admin.destroy + @customer.destroy + end + + test "admin can cancel subscription for another" do + skip "not sure about testing admin cancelling subscription with fake_braintree" + login_as @admin + #visit user_subscriptions_path(@customer.user_id) + #delete :destroy, :id => @subscription.id + end + + #test "admin cannot add subscription for another" do + #end + + #test "authenticated user can cancel own subscription" do + #end + + #test "user cannot add subscription if they have active one" do + #end + + #test "user can view own subscriptions" + #end + + #test "admin can view another user's subscriptions" do + #end + +end diff --git a/config/application.rb b/config/application.rb index e8bb2f4..8587ffc 100644 --- a/config/application.rb +++ b/config/application.rb @@ -54,7 +54,7 @@ module LeapWeb # Configure sensitive parameters which will be filtered from the log file. config.filter_parameters += [:password] - if APP_CONFIG[:logfile] + if APP_CONFIG[:logfile].present? config.logger = Logger.new(APP_CONFIG[:logfile]) end diff --git a/config/environments/production.rb b/config/environments/production.rb index 32b4558..73e98e5 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -33,11 +33,12 @@ LeapWeb::Application.configure do # See everything in the log (default is :info) # config.log_level = :debug - # Prepend all log lines with the following tags - # config.log_tags = [ :subdomain, :uuid ] - - # Use a different logger for distributed setups - # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) + # Use syslog if no file has been specified + if APP_CONFIG[:logfile].blank? + # Prepend all log lines with the following tags + config.log_tags = [ :leap, :webapp ] + config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) + end # Use a different cache store in production # config.cache_store = :mem_cache_store diff --git a/users/app/controllers/v1/users_controller.rb b/users/app/controllers/v1/users_controller.rb index 01a1a2f..03a5a62 100644 --- a/users/app/controllers/v1/users_controller.rb +++ b/users/app/controllers/v1/users_controller.rb @@ -31,7 +31,7 @@ module V1 protected def account - Account.new(@user) + @user.account end end diff --git a/users/app/models/user.rb b/users/app/models/user.rb index 310eecd..a14fcb5 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -82,6 +82,10 @@ class User < CouchRest::Model::Base identity.keys[:pgp] end + def account + Account.new(self) + end + def identity @identity ||= Identity.for(self) end diff --git a/users/test/integration/browser/account_test.rb b/users/test/integration/browser/account_test.rb index ae4676c..8c2c997 100644 --- a/users/test/integration/browser/account_test.rb +++ b/users/test/integration/browser/account_test.rb @@ -13,9 +13,7 @@ class AccountTest < BrowserIntegrationTest assert page.has_content?("Sign Up") assert_equal '/', current_path assert user = User.find_by_login(username) - assert id = user.identity - id.destroy - user.destroy + user.account.destroy end test "successful login" do diff --git a/users/test/unit/account_test.rb b/users/test/unit/account_test.rb index 39969c0..94a9980 100644 --- a/users/test/unit/account_test.rb +++ b/users/test/unit/account_test.rb @@ -9,15 +9,14 @@ class AccountTest < ActiveSupport::TestCase assert id = user.identity assert_equal user.email_address, id.address assert_equal user.email_address, id.destination - id.destroy - user.destroy + user.account.destroy end test "create and remove a user account" do assert_no_difference "Identity.count" do assert_no_difference "User.count" do user = Account.create(FactoryGirl.attributes_for(:user)) - Account.new(user).destroy + user.account.destroy end end end @@ -26,7 +25,7 @@ class AccountTest < ActiveSupport::TestCase user = Account.create(FactoryGirl.attributes_for(:user)) old_id = user.identity old_email = user.email_address - Account.new(user).update(FactoryGirl.attributes_for(:user)) + user.account.update(FactoryGirl.attributes_for(:user)) user.reload old_id.reload assert user.valid? @@ -37,9 +36,7 @@ class AccountTest < ActiveSupport::TestCase assert_equal user.email_address, id.destination assert_equal user.email_address, old_id.destination assert_equal old_email, old_id.address - old_id.destroy - id.destroy - user.destroy + user.account.destroy end end |