summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzul <azul@riseup.net>2017-03-20 11:00:28 +0100
committerAzul <azul@riseup.net>2017-03-20 11:04:44 +0100
commit32b07d8c98719f3c52a3c5315da1f61c6e35cbd6 (patch)
treece9e94b23dc6b838a9e68a96b1d7cc811924f952
parentd7990f1b2af378ad071db6d94c5f95a50d6b7dcd (diff)
test: 404 response for missing key
enable testing error responses on the full rack stack.
-rw-r--r--config/environments/test.rb7
-rw-r--r--test/integration/key_discovery_test.rb23
-rw-r--r--test/support/browser_integration_test.rb21
-rw-r--r--test/support/rack_stack_test.rb32
4 files changed, 61 insertions, 22 deletions
diff --git a/config/environments/test.rb b/config/environments/test.rb
index 0ba4fbd..ecbbedc 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -18,12 +18,11 @@ Rails.application.configure do
config.serve_static_files = true
config.static_cache_control = 'public, max-age=3600'
- # Show full error reports and disable caching.
- config.consider_all_requests_local = true
+ # Disable caching.
config.action_controller.perform_caching = false
- # Raise exceptions instead of rendering exception templates.
- config.action_dispatch.show_exceptions = false
+ # Render the exception templates so we can test them as well.
+ config.action_dispatch.show_exceptions = true
# Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false
diff --git a/test/integration/key_discovery_test.rb b/test/integration/key_discovery_test.rb
new file mode 100644
index 0000000..2a38a78
--- /dev/null
+++ b/test/integration/key_discovery_test.rb
@@ -0,0 +1,23 @@
+require 'test_helper'
+
+# This is not really a browser test - key discovery is used from bitmask.
+# However we need to make sure to test the full rack stack to replicate
+# exception handling.
+class KeyDiscoveryTest < RackStackTest
+ include Capybara::DSL
+
+ setup do
+ # make sure we test the whole stack...
+ Capybara.current_driver = Capybara.javascript_driver
+ end
+
+ teardown do
+ # Revert Capybara.current_driver to Capybara.default_driver
+ Capybara.use_default_driver
+ end
+
+ def test_404_on_non_existing_user
+ visit '/key/asjkholifweatg'
+ assert_equal 404, status_code
+ end
+end
diff --git a/test/support/browser_integration_test.rb b/test/support/browser_integration_test.rb
index 1f5e3d2..c0fef0a 100644
--- a/test/support/browser_integration_test.rb
+++ b/test/support/browser_integration_test.rb
@@ -1,33 +1,18 @@
+require_relative 'rack_stack_test'
+
#
# BrowserIntegrationTest
#
# Use this class for capybara based integration tests for the ui.
#
-require 'capybara/rails'
-class BrowserIntegrationTest < ActionDispatch::IntegrationTest
+class BrowserIntegrationTest < RackStackTest
# let's use dom_id inorder to identify sections
include ActionView::RecordIdentifier
CONFIG_RU = (Rails.root + 'config.ru').to_s
OUTER_APP = Rack::Builder.parse_file(CONFIG_RU).first
- require 'capybara/poltergeist'
-
- Capybara.register_driver :rack_test do |app|
- Capybara::RackTest::Driver.new(app)
- end
-
- Capybara.register_driver :poltergeist do |app|
- Capybara::Poltergeist::Driver.new(app)
- end
-
- # this is integration testing. So let's make the whole
- # rack stack available...
- Capybara.app = OUTER_APP
- Capybara.run_server = true
- Capybara.app_host = 'http://lvh.me:3003'
- Capybara.server_port = 3003
Capybara.javascript_driver = :poltergeist
Capybara.default_max_wait_time = 5
diff --git a/test/support/rack_stack_test.rb b/test/support/rack_stack_test.rb
new file mode 100644
index 0000000..eb49d1e
--- /dev/null
+++ b/test/support/rack_stack_test.rb
@@ -0,0 +1,32 @@
+require 'capybara/rails'
+#
+# RackStackTest
+#
+# Tests that will use the entire rack stack from capybara.
+#
+class RackStackTest < ActionDispatch::IntegrationTest
+
+ CONFIG_RU = (Rails.root + 'config.ru').to_s
+ OUTER_APP = Rack::Builder.parse_file(CONFIG_RU).first
+
+ # this is integration testing. So let's make the whole
+ # rack stack available...
+ Capybara.app = OUTER_APP
+ Capybara.run_server = true
+ Capybara.app_host = 'http://lvh.me:3003'
+ Capybara.server_port = 3003
+
+ # WARNING: this creates an error in the test as soon as there
+ # is an error in rails. Use the javascript driver for testing
+ # error rendering
+ Capybara.register_driver :rack_test do |app|
+ Capybara::RackTest::Driver.new(app)
+ end
+
+ require 'capybara/poltergeist'
+
+ Capybara.register_driver :poltergeist do |app|
+ Capybara::Poltergeist::Driver.new(app)
+ end
+
+end