3198: Implement rename() (efficient move within/between collections).
[arvados.git] / services / api / test / test_helper.rb
index 996d91606de78332f7e91a8d57b554bfc38a5a8d..bf5afea1e2dd6b44fa68332df4c1f1512855a472 100644 (file)
@@ -25,7 +25,7 @@ require 'rails/test_help'
 
 module ArvadosTestSupport
   def json_response
-    ActiveSupport::JSON.decode @response.body
+    Oj.load response.body
   end
 
   def api_token(api_client_auth_name)
@@ -49,6 +49,29 @@ class ActiveSupport::TestCase
     Thread.current[:api_client_uuid] = nil
     Thread.current[:api_client] = nil
     Thread.current[:user] = nil
+    restore_configuration
+  end
+
+  def assert_not_allowed
+    # Provide a block that calls a Rails boolean "true or false" success value,
+    # like model.save or model.destroy.  This method will test that it either
+    # returns false, or raises a Permission Denied exception.
+    begin
+      refute(yield)
+    rescue ArvadosModel::PermissionDeniedError
+    end
+  end
+
+  def add_permission_link from_who, to_what, perm_type
+    act_as_system_user do
+      Link.create!(tail_uuid: from_who.uuid,
+                   head_uuid: to_what.uuid,
+                   link_class: 'permission',
+                   name: perm_type)
+    end
+  end
+
+  def restore_configuration
     # Restore configuration settings changed during tests
     $application_config.each do |k,v|
       if k.match /^[^.]*$/
@@ -88,13 +111,7 @@ class ActionController::TestCase
   def check_counter action
     @counter += 1
     if @counter == 2
-      # TODO: when existing mistakes are fixed, start failing broken
-      # test cases like this:
-      #
-      # assert_equal 1, 2, "Multiple actions in functional test"
-      #
-      # Meanwhile, just warn (just once per test case):
-      $stderr.puts " [WARNING: Multiple actions in functional test]"
+      assert_equal 1, 2, "Multiple actions in functional test"
     end
   end