[ARVADOS] created: 5a341ad3a358bfadb96c83fb95acb7ce3f50cd83
git at public.curoverse.com
git at public.curoverse.com
Tue Sep 30 11:07:57 EDT 2014
at 5a341ad3a358bfadb96c83fb95acb7ce3f50cd83 (commit)
commit 5a341ad3a358bfadb96c83fb95acb7ce3f50cd83
Author: Tom Clegg <tom at curoverse.com>
Date: Tue Sep 30 10:57:13 2014 -0400
3782: Isolate file_enumerator stubbing to the current test. Introduce mocha.
diff --git a/apps/workbench/Gemfile b/apps/workbench/Gemfile
index b96fee1..46d017e 100644
--- a/apps/workbench/Gemfile
+++ b/apps/workbench/Gemfile
@@ -43,6 +43,7 @@ group :test do
# still mandatory.
gem 'simplecov', '~> 0.7.1', require: false
gem 'simplecov-rcov', require: false
+ gem 'mocha', require: false
end
gem 'jquery-rails'
diff --git a/apps/workbench/Gemfile.lock b/apps/workbench/Gemfile.lock
index bdf3913..a676e54 100644
--- a/apps/workbench/Gemfile.lock
+++ b/apps/workbench/Gemfile.lock
@@ -117,9 +117,12 @@ GEM
mail (2.5.4)
mime-types (~> 1.16)
treetop (~> 1.4.8)
+ metaclass (0.0.4)
mime-types (1.25.1)
mini_portile (0.5.2)
minitest (5.3.3)
+ mocha (1.1.0)
+ metaclass (~> 0.0.1)
multi_json (1.10.0)
multipart-post (1.2.0)
net-scp (1.1.2)
@@ -241,6 +244,7 @@ DEPENDENCIES
less
less-rails
minitest (>= 5.0.0)
+ mocha
multi_json
oj
passenger
diff --git a/apps/workbench/test/functional/collections_controller_test.rb b/apps/workbench/test/functional/collections_controller_test.rb
index 674e908..9e668a8 100644
--- a/apps/workbench/test/functional/collections_controller_test.rb
+++ b/apps/workbench/test/functional/collections_controller_test.rb
@@ -3,6 +3,15 @@ require 'test_helper'
class CollectionsControllerTest < ActionController::TestCase
NONEXISTENT_COLLECTION = "ffffffffffffffffffffffffffffffff+0"
+ def stub_file_content
+ # For the duration of the current test case, stub file download
+ # content with a randomized (but recognizable) string. Return the
+ # string, the test case can use it in assertions.
+ txt = 'the quick brown fox ' + rand(2**32).to_s
+ @controller.stubs(:file_enumerator).returns([txt])
+ txt
+ end
+
def collection_params(collection_name, file_name=nil)
uuid = api_fixture('collections')[collection_name.to_s]['uuid']
params = {uuid: uuid, id: uuid}
@@ -42,14 +51,6 @@ class CollectionsControllerTest < ActionController::TestCase
assert_response response
end
- # Mock the collection file reader to avoid external calls and return
- # a predictable string.
- CollectionsController.class_eval do
- def file_enumerator(opts)
- [[opts[:arvados_api_token], opts[:uuid], opts[:file]].join('/')]
- end
- end
-
test "viewing a collection" do
show_collection(:foo_file, :active)
assert_equal([['.', 'foo', 3]], assigns(:object).files)
@@ -111,9 +112,10 @@ class CollectionsControllerTest < ActionController::TestCase
test "getting a file from Keep" do
params = collection_params(:foo_file, 'foo')
sess = session_for(:active)
+ expect_content = stub_file_content
get(:show_file, params, sess)
assert_response :success
- assert_equal(expected_contents(params, sess), @response.body,
+ assert_equal(expect_content, @response.body,
"failed to get a correct file from Keep")
end
@@ -135,9 +137,10 @@ class CollectionsControllerTest < ActionController::TestCase
params = collection_params(:foo_file, 'foo')
read_token = api_fixture('api_client_authorizations')['active']['api_token']
params[:reader_token] = read_token
+ expect_content = stub_file_content
get(:show_file, params)
assert_response :success
- assert_equal(expected_contents(params, read_token), @response.body,
+ assert_equal(expect_content, @response.body,
"failed to get a correct file from Keep using a reader token")
assert_not_equal(read_token, session[:arvados_api_token],
"using a reader token set the session's API token")
@@ -156,9 +159,10 @@ class CollectionsControllerTest < ActionController::TestCase
sess = session_for(:expired)
read_token = api_fixture('api_client_authorizations')['active']['api_token']
params[:reader_token] = read_token
+ expect_content = stub_file_content
get(:show_file, params, sess)
assert_response :success
- assert_equal(expected_contents(params, read_token), @response.body,
+ assert_equal(expect_content, @response.body,
"failed to get a correct file from Keep using a reader token")
assert_not_equal(read_token, session[:arvados_api_token],
"using a reader token set the session's API token")
diff --git a/apps/workbench/test/test_helper.rb b/apps/workbench/test/test_helper.rb
index 72469bc..1195798 100644
--- a/apps/workbench/test/test_helper.rb
+++ b/apps/workbench/test/test_helper.rb
@@ -22,6 +22,7 @@ end
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
+require 'mocha/mini_test'
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list