X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a2bcc06c1bda757ed8c869d7f9ad235f56abdcf4..5c8437e59cbfd13b99d402b42b6bdfc18aa82bf8:/apps/workbench/test/functional/application_controller_test.rb diff --git a/apps/workbench/test/functional/application_controller_test.rb b/apps/workbench/test/functional/application_controller_test.rb index bb863053da..50f990aa0b 100644 --- a/apps/workbench/test/functional/application_controller_test.rb +++ b/apps/workbench/test/functional/application_controller_test.rb @@ -83,7 +83,7 @@ class ApplicationControllerTest < ActionController::TestCase [:preload_log_collections_for_objects, nil], [:log_collections_for_object, nil], [:preload_objects_for_dataclass, 'input not an array'], - [:preload_objects_for_dataclass, nil], + [:preload_objects_for_dataclass, nil], [:object_for_dataclass, 'some_dataclass', nil], [:object_for_dataclass, nil, 'some_uuid'], ].each do |input| @@ -245,4 +245,62 @@ class ApplicationControllerTest < ActionController::TestCase assert collections[uuid1], 'Expected collections for the passed in uuid' end + test "object for dataclass" do + use_token :active + + ac = ApplicationController.new + + dataclass = ArvadosBase.resource_class_for_uuid(api_fixture('jobs')['running']['uuid']) + uuid = api_fixture('jobs')['running']['uuid'] + + obj = ac.send :object_for_dataclass, dataclass, uuid + + assert obj, 'Expected object' + assert 'Job', obj.class + assert_equal uuid, obj['uuid'], 'Expected uuid not found' + assert_equal api_fixture('jobs')['running']['script_version'], obj['script_version'], + 'Expected script_version not found' + end + + test "preload objects for dataclass" do + use_token :active + + ac = ApplicationController.new + + dataclass = ArvadosBase.resource_class_for_uuid(api_fixture('jobs')['running']['uuid']) + + uuid1 = api_fixture('jobs')['running']['uuid'] + uuid2 = api_fixture('jobs')['running_cancelled']['uuid'] + + uuids = [uuid1, uuid2] + users = ac.send :preload_objects_for_dataclass, dataclass, uuids + + assert users, 'Expected objects' + assert users.is_a?(Hash), 'Expected a hash' + + assert users.size == 2, 'Expected two objects in the preloaded hash' + assert users[uuid1], 'Expected user object for the passed in uuid' + assert users[uuid2], 'Expected user object for the passed in uuid' + + # invoke again for this same input. this time, the preloaded data will be returned + users = ac.send :preload_objects_for_dataclass, dataclass, uuids + assert users, 'Expected objects' + assert users.is_a?(Hash), 'Expected a hash' + assert users.size == 2, 'Expected two objects in the preloaded hash' + + # invoke again for this with one more uuid + uuids << api_fixture('jobs')['foobar']['uuid'] + users = ac.send :preload_objects_for_dataclass, dataclass, uuids + assert users, 'Expected objects' + assert users.is_a?(Hash), 'Expected a hash' + assert users.size == 3, 'Expected two objects in the preloaded hash' + end + + test "requesting a nonexistent object returns 404" do + # We're really testing ApplicationController's find_object_by_uuid. + # It's easiest to do that by instantiating a concrete controller. + @controller = NodesController.new + get(:show, {id: "zzzzz-zzzzz-zzzzzzzzzzzzzzz"}, session_for(:admin)) + assert_response 404 + end end