2044: Workbench supports API select parameter.
authorBrett Smith <brett@curoverse.com>
Thu, 3 Jul 2014 18:10:31 +0000 (14:10 -0400)
committerBrett Smith <brett@curoverse.com>
Mon, 21 Jul 2014 16:35:57 +0000 (12:35 -0400)
This can help ensure symmetry between admin and non-admin requests for
the user index.

apps/workbench/app/models/arvados_base.rb
apps/workbench/app/models/arvados_resource_list.rb
apps/workbench/test/unit/group_test.rb
apps/workbench/test/unit/user_test.rb

index 6d427fdda1114658f09b3ed054e1856636a5cc1e..1dac43fa61a7ffbd2c100b3f932b4568f174ee73 100644 (file)
@@ -131,6 +131,10 @@ class ArvadosBase < ActiveRecord::Base
     ArvadosResourceList.new(self).limit(*args)
   end
 
+  def self.select(*args)
+    ArvadosResourceList.new(self).select(*args)
+  end
+
   def self.eager(*args)
     ArvadosResourceList.new(self).eager(*args)
   end
index dedd18c81d7eb21193523a52c2dde99cee3176cf..3164c790d0701a4f6d67ff797e01f4da91e3d11f 100644 (file)
@@ -26,6 +26,12 @@ class ArvadosResourceList
     self
   end
 
+  def select(columns)
+    @select ||= []
+    @select += columns
+    self
+  end
+
   def filter _filters
     @filters ||= []
     @filters += _filters
@@ -64,6 +70,7 @@ class ArvadosResourceList
     api_params[:eager] = '1' if @eager
     api_params[:limit] = @limit if @limit
     api_params[:offset] = @offset if @offset
+    api_params[:select] = @select if @select
     api_params[:order] = @orderby_spec if @orderby_spec
     api_params[:filters] = @filters if @filters
     res = arvados_api_client.api @resource_class, '', api_params
index 435463a83e0bbd66682339649d9ffd1b7c70ef9f..c555c4a62453618442dd12681dde03e408ba395c 100644 (file)
@@ -25,4 +25,13 @@ class GroupTest < ActiveSupport::TestCase
     assert_equal(expect_name, oi.name_for(expect_uuid),
                  "Expected name_for '#{expect_uuid}' to be '#{expect_name}'")
   end
+
+  test "can select specific group columns" do
+    use_token :admin
+    Group.select(["uuid", "name"]).limit(5).each do |user|
+      assert_not_nil user.uuid
+      assert_not_nil user.name
+      assert_nil user.owner_uuid
+    end
+  end
 end
index 20cde7e868c0459d553a81747e32b98746cd7f2e..89e95dff8c071a5e6e9373d4ac8ab5ddd43f01ef 100644 (file)
@@ -1,4 +1,12 @@
 require 'test_helper'
 
 class UserTest < ActiveSupport::TestCase
+  test "can select specific user columns" do
+    use_token :admin
+    User.select(["uuid", "is_active"]).limit(5).each do |user|
+      assert_not_nil user.uuid
+      assert_not_nil user.is_active
+      assert_nil user.first_name
+    end
+  end
 end