Merge branch '20612-diag-ctr-api-access'
[arvados.git] / services / api / test / functional / application_controller_test.rb
index 3a4a244edd9cc1a57e89230c5bea17b97ba322bd..af7882141e31973c7e28d0f42da16abb088ed88c 100644 (file)
@@ -1,3 +1,7 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 require 'test_helper'
 
 class ApplicationControllerTest < ActionController::TestCase
@@ -24,25 +28,27 @@ class ApplicationControllerTest < ActionController::TestCase
 
   def check_404(errmsg="Path not found")
     assert_response 404
-    assert_equal([errmsg], json_response['errors'])
+    json_response['errors'].each do |err|
+      assert(err.include?(errmsg), "error message '#{err}' expected to include '#{errmsg}'")
+    end
     check_error_token
   end
 
   test "requesting nonexistent object returns 404 error" do
     authorize_with :admin
-    get(:show, id: BAD_UUID)
+    get(:show, params: {id: BAD_UUID})
     check_404
   end
 
   test "requesting object without read permission returns 404 error" do
     authorize_with :spectator
-    get(:show, id: specimens(:owned_by_active_user).uuid)
+    get(:show, params: {id: specimens(:owned_by_active_user).uuid})
     check_404
   end
 
   test "submitting bad object returns error" do
     authorize_with :spectator
-    post(:create, specimen: {badattr: "badvalue"})
+    post(:create, params: {specimen: {badattr: "badvalue"}})
     assert_response 422
     check_error_token
   end
@@ -51,7 +57,7 @@ class ApplicationControllerTest < ActionController::TestCase
     test "bogus boolean parameter #{bogus.inspect} returns error" do
       @controller = Arvados::V1::GroupsController.new
       authorize_with :active
-      post :create, {
+      post :create, params: {
         group: {},
         ensure_unique_name: bogus
       }
@@ -68,8 +74,8 @@ class ApplicationControllerTest < ActionController::TestCase
       test "boolean parameter #{boolparam.inspect} acceptable" do
         @controller = Arvados::V1::GroupsController.new
         authorize_with :active
-        post :create, {
-          group: {},
+        post :create, params: {
+          group: {group_class: "project"},
           ensure_unique_name: boolparam
         }
         assert_response :success
@@ -79,10 +85,11 @@ class ApplicationControllerTest < ActionController::TestCase
       test "boolean parameter #{boolparam.inspect} accepted as #{bool.inspect}" do
         @controller = Arvados::V1::GroupsController.new
         authorize_with :active
-        post :create, {
+        post :create, params: {
           group: {
             name: groups(:aproject).name,
-            owner_uuid: groups(:aproject).owner_uuid
+            owner_uuid: groups(:aproject).owner_uuid,
+            group_class: "project"
           },
           ensure_unique_name: boolparam
         }
@@ -90,4 +97,16 @@ class ApplicationControllerTest < ActionController::TestCase
       end
     end
   end
+
+  test "exceptions with backtraces get logged at exception_backtrace key" do
+    Group.stubs(:new).raises(Exception, 'Whoops')
+    Rails.logger.expects(:info).with(any_parameters) do |param|
+      param.include?('Whoops') and param.include?('"exception_backtrace":')
+    end
+    @controller = Arvados::V1::GroupsController.new
+    authorize_with :active
+    post :create, params: {
+      group: {},
+    }
+  end
 end