5105: Add API stub helpers and basic ArvadosApiClient unit tests.
[arvados.git] / apps / workbench / test / test_helper.rb
index a763b2b74f5da6a190758e4020727b4619f45c06..335fcd0ee51b76fd04077cfbcbfc0bb39d381ced 100644 (file)
@@ -86,6 +86,32 @@ module ApiFixtureLoader
   end
 end
 
+module ApiMockHelpers
+  def self.included base
+    base.class_eval do
+      def stub_api_calls_with_body body, status_code=200
+        resp = mock
+        stubbed_client = ArvadosApiClient.new
+        stubbed_client.instance_eval do
+          resp.responds_like_instance_of HTTP::Message
+          resp.stubs(:content).returns body
+          resp.stubs(:status_code).returns status_code
+          @api_client = HTTPClient.new
+          @api_client.stubs(:post).returns resp
+        end
+        ArvadosApiClient.stubs(:new_or_current).returns(stubbed_client)
+      end
+
+      def stub_api_calls_with_invalid_json
+        stub_api_calls_with_body ']"omg,bogus"['
+      end
+    end
+  end
+end
+class ActiveSupport::TestCase
+  include ApiMockHelpers
+end
+
 class ActiveSupport::TestCase
   include ApiFixtureLoader
   def session_for api_client_auth_name
@@ -122,12 +148,7 @@ class ApiServerForTests
   def run_test_server
     env_script = nil
     Dir.chdir PYTHON_TESTS_DIR do
-      env = {
-        'RAILS_ENV' => 'test',
-        'ARVADOS_WEBSOCKETS' => 'yes'
-      }
-      cmd = ['python', './run_test_server.py', 'start', '--auth', 'admin']
-      env_script = check_call({}.merge(ENV).merge(env), cmd)
+      env_script = check_call %w(python ./run_test_server.py start --auth admin)
     end
     test_env = {}
     env_script.each_line do |line|
@@ -144,7 +165,7 @@ class ApiServerForTests
   def stop_test_server
     Dir.chdir PYTHON_TESTS_DIR do
       # This is a no-op if we're running within run-tests.sh
-      check_call ['python', './run_test_server.py', 'stop']
+      check_call %w(python ./run_test_server.py stop)
     end
     @@server_is_running = false
   end