Merge branch 'master' into 3836-remove-collection-from-project-bug
[arvados.git] / services / api / test / test_helper.rb
index caf3e09ea3c689251d513f0a8f73ae4c623060cf..996d91606de78332f7e91a8d57b554bfc38a5a8d 100644 (file)
@@ -38,6 +38,7 @@ module ArvadosTestSupport
 end
 
 class ActiveSupport::TestCase
+  include FactoryGirl::Syntax::Methods
   fixtures :all
 
   include ArvadosTestSupport
@@ -67,8 +68,41 @@ class ActiveSupport::TestCase
     self.request.headers["Accept"] = "text/json"
   end
 
-  def authorize_with(api_client_auth_name)
-    ArvadosApiToken.new.call ({"rack.input" => "", "HTTP_AUTHORIZATION" => "OAuth2 #{api_client_authorizations(api_client_auth_name).api_token}"})
+  def authorize_with api_client_auth_name
+    authorize_with_token api_client_authorizations(api_client_auth_name).api_token
+  end
+
+  def authorize_with_token token
+    t = token
+    t = t.api_token if t.respond_to? :api_token
+    ArvadosApiToken.new.call("rack.input" => "",
+                             "HTTP_AUTHORIZATION" => "OAuth2 #{t}")
+  end
+end
+
+class ActionController::TestCase
+  setup do
+    @counter = 0
+  end
+
+  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]"
+    end
+  end
+
+  [:get, :post, :put, :patch, :delete].each do |method|
+    define_method method do |action, *args|
+      check_counter action
+      super action, *args
+    end
   end
 end