11821: add include_trash for collections.index and recursive for groups.contents...
authorradhika <radhika@curoverse.com>
Fri, 9 Jun 2017 15:56:45 +0000 (11:56 -0400)
committerradhika <radhika@curoverse.com>
Fri, 9 Jun 2017 15:56:45 +0000 (11:56 -0400)
services/api/app/controllers/arvados/v1/collections_controller.rb
services/api/app/controllers/arvados/v1/groups_controller.rb
services/api/test/functional/arvados/v1/schema_controller_test.rb

index e3c10b78eee427ec093db7483d9e64a47c8212b8..5c09b1fccdf09f0af508490ac34803efd5b61237 100644 (file)
@@ -3,6 +3,16 @@ require "arvados/keep"
 class Arvados::V1::CollectionsController < ApplicationController
   include DbCurrentTime
 
+  def self._index_requires_parameters
+    (super rescue {}).
+      merge({
+        include_trash: {
+          type: 'boolean', required: false, description: "Include collections whose is_trashed attribute is true."
+        },
+      })
+  end
+
+
   def create
     if resource_attrs[:uuid] and (loc = Keep::Locator.parse(resource_attrs[:uuid]))
       resource_attrs[:portable_data_hash] = loc.to_s
index 4c33be666d5006949e229f11bbae2dea699be16b..fc80a652dc0da16f3ab82634467a66d0f447b08f 100644 (file)
@@ -6,6 +6,9 @@ class Arvados::V1::GroupsController < ApplicationController
               uuid: {
                 type: 'string', required: false, default: nil
               },
+              recursive: {
+                type: 'boolean', required: false, description: 'Include contents from child groups recursively.'
+              },
             })
     params.delete(:select)
     params
index 710182174621b0bcf1eaddc8432b4ca824182949..57dffca67cfcd33117e79bb760a58bcbd31d3e69 100644 (file)
@@ -61,4 +61,38 @@ class Arvados::V1::SchemaControllerTest < ActionController::TestCase
       refute_includes(discovery_doc['resources'][r]['methods'].keys(), 'create')
     end
   end
+
+  test "groups contents parameters" do
+    get :index
+    assert_response :success
+
+    discovery_doc = JSON.parse(@response.body)
+
+    group_index_params = discovery_doc['resources']['groups']['methods']['index']['parameters']
+    group_contents_params = discovery_doc['resources']['groups']['methods']['contents']['parameters']
+
+    assert_equal group_contents_params.keys.sort, (group_index_params.keys - ['select'] + ['uuid', 'recursive']).sort
+
+    recursive_param = group_contents_params['recursive']
+    assert_equal 'boolean', recursive_param['type']
+    assert_equal false, recursive_param['required']
+    assert_equal 'query', recursive_param['location']
+  end
+
+  test "collections index parameters" do
+    get :index
+    assert_response :success
+
+    discovery_doc = JSON.parse(@response.body)
+
+    specimens_index_params = discovery_doc['resources']['specimens']['methods']['index']['parameters']  # no changes from super
+    coll_index_params = discovery_doc['resources']['collections']['methods']['index']['parameters']
+
+    assert_equal coll_index_params.keys.sort, (specimens_index_params.keys + ['include_trash']).sort
+
+    include_trash_param = coll_index_params['include_trash']
+    assert_equal 'boolean', include_trash_param['type']
+    assert_equal false, include_trash_param['required']
+    assert_equal 'query', include_trash_param['location']
+  end
 end