diff --git a/Gemfile b/Gemfile index 60a997ef..3f3cf2a9 100644 --- a/Gemfile +++ b/Gemfile @@ -56,17 +56,18 @@ end group :test do gem 'faker' - gem 'fabrication', require: 'fabrication' + gem 'fabrication', require: 'fabrication' gem 'minitest' - gem 'minitest-reporters', require: 'minitest/reporters' - gem 'rack-test', require: 'rack/test' - gem 'mocha', require: nil - gem 'rake', require: nil + gem 'minitest-reporters', require: 'minitest/reporters' + gem 'rack-test', require: 'rack/test' + gem 'mocha', require: nil + gem 'rake', require: nil gem 'poltergeist' - gem 'phantomjs', require: 'phantomjs/poltergeist' + gem 'phantomjs', require: 'phantomjs/poltergeist' gem 'capybara_minitest_spec' - gem 'rack_session_access', require: nil - gem 'webmock', require: nil + gem 'rack_session_access', require: nil + gem 'webmock', require: nil + gem 'stripe-ruby-mock', '~> 2.0.1', require: 'stripe_mock' platform :mri do gem 'simplecov', require: nil diff --git a/Gemfile.lock b/Gemfile.lock index 94876208..2000c14d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -16,6 +16,7 @@ GEM extlib (>= 0.9.15) multi_json (>= 1.0.0) bcrypt (3.1.7) + blankslate (3.1.3) builder (3.2.2) byebug (2.7.0) columnize (~> 0.3) @@ -41,6 +42,7 @@ GEM connection_pool (2.0.0) crack (0.4.2) safe_yaml (~> 1.0.0) + dante (0.2.0) dav4rack (0.3.0) nokogiri (>= 1.4.2) rack (>= 1.1.0) @@ -73,6 +75,11 @@ GEM hashie (2.0.5) hiredis (0.5.0) i18n (0.6.9) + jimson-temp (0.9.5) + blankslate (>= 3.1.2) + multi_json (~> 1.0) + rack (~> 1.4) + rest-client (~> 1.0) json (1.8.1) jwt (0.1.11) multi_json (>= 1.5) @@ -189,6 +196,10 @@ GEM json (~> 1.8.1) mime-types (>= 1.25, < 3.0) rest-client (~> 1.4) + stripe-ruby-mock (2.0.1) + dante (>= 0.2.0) + jimson-temp + stripe (>= 1.15.0) thread (0.1.4) thread_safe (0.3.4) tilt (1.4.1) @@ -261,6 +272,7 @@ DEPENDENCIES sinatra-flash sinatra-xsendfile stripe + stripe-ruby-mock (~> 2.0.1) thread tilt webmock diff --git a/tests/acceptance/admin_tests.rb b/tests/acceptance/admin_tests.rb new file mode 100644 index 00000000..3f6923c7 --- /dev/null +++ b/tests/acceptance/admin_tests.rb @@ -0,0 +1,54 @@ +require_relative './environment.rb' + +describe '/admin' do + include Capybara::DSL + + before do + Capybara.reset_sessions! + @admin = Fabricate :site, is_admin: true + @site = Fabricate :site + page.set_rack_session id: @admin.id + visit '/admin' + end + + describe 'permissions' do + include Capybara::DSL + + it 'works for admin site' do + page.body.must_match /Administration/ + end + + it 'fails for site without admin' do + page.set_rack_session id: @site.id + visit '/admin' + page.current_path.must_equal '/' + end + end + + describe 'supporter upgrade' do + include Capybara::DSL + + before do + @stripe_helper = StripeMock.create_test_helper + StripeMock.start + @plan = @stripe_helper.create_plan id: 'special', amount: 0 + end + + after do + StripeMock.stop + end + + it 'works for valid site' do + within(:css, '#upgradeToSupporter') do + fill_in 'username', with: @site.username + click_button 'Upgrade to Supporter' + @site.reload + @site.stripe_customer_id.wont_be_nil + @site.stripe_subscription_id.wont_be_nil + @site.values[:plan_type].must_equal 'special' + @site.supporter?.must_equal true + end + end + + end +end \ No newline at end of file diff --git a/views/admin.erb b/views/admin.erb index 32f85ef2..4fffb3e8 100644 --- a/views/admin.erb +++ b/views/admin.erb @@ -52,13 +52,13 @@

Upgrade to Supporter

-
+ <%== csrf_token_input_html %>

This site will be upgraded to the supporter plan.

Site Name:

-

+