Merge branch 'master' into 4644-collection-file-filtering
[arvados.git] / services / api / app / controllers / database_controller.rb
index 4a872ebb0231f56b0ff45c3e792fe6d5b63ed645..a2e15ed1561db247521eb8b65da36cadb08f9853 100644 (file)
@@ -3,7 +3,25 @@ class DatabaseController < ApplicationController
   skip_before_filter :render_404_if_no_object
   before_filter :admin_required
   def reset
-    raise ArvadosModel::PermissionDeniedError unless ENV['RAILS_ENV'] == 'test'
+    raise ArvadosModel::PermissionDeniedError unless Rails.env == 'test'
+
+    # Sanity check: If someone has actually logged in here, this might
+    # not really be a throwaway database. Client test suites should
+    # use @example.com email addresses when creating user records, so
+    # we can tell they're not valuable.
+    user_uuids = User.
+      where('email is null or email not like ?', '%@example.com').
+      collect &:uuid
+    fixture_uuids =
+      YAML::load_file(File.expand_path('../../../test/fixtures/users.yml',
+                                       __FILE__)).
+      values.collect { |u| u['uuid'] }
+    unexpected_uuids = user_uuids - fixture_uuids
+    if unexpected_uuids.any?
+      logger.error("Running in test environment, but non-fixture users exist: " +
+                   "#{unexpected_uuids}")
+      raise ArvadosModel::PermissionDeniedError
+    end
 
     require 'active_record/fixtures'