8703: add "components" hash to job.
[arvados.git] / services / api / test / functional / arvados / v1 / jobs_controller_test.rb
index b8b061f69b774fb7f2b330517d37d00f1da4e64a..f68e50caec6e19c7b855bd024a5f3ecc814d54e7 100644 (file)
@@ -392,4 +392,90 @@ class Arvados::V1::JobsControllerTest < ActionController::TestCase
     post :lock, {id: jobs(:running).uuid}
     assert_response 403 # forbidden
   end
+
+  test 'reject invalid commit in remote repository' do
+    authorize_with :active
+    url = "http://localhost:1/fake/fake.git"
+    fetch_remote_from_local_repo url, :foo
+    post :create, job: {
+      script: "hash",
+      script_version: "abc123",
+      repository: url,
+      script_parameters: {}
+    }
+    assert_response 422
+  end
+
+  test 'tag remote commit in internal repository' do
+    authorize_with :active
+    url = "http://localhost:1/fake/fake.git"
+    fetch_remote_from_local_repo url, :foo
+    post :create, job: {
+      script: "hash",
+      script_version: "master",
+      repository: url,
+      script_parameters: {}
+    }
+    assert_response :success
+    assert_equal('077ba2ad3ea24a929091a9e6ce545c93199b8e57',
+                 internal_tag(json_response['uuid']))
+  end
+
+  test 'tag local commit in internal repository' do
+    authorize_with :active
+    post :create, job: {
+      script: "hash",
+      script_version: "master",
+      repository: "active/foo",
+      script_parameters: {}
+    }
+    assert_response :success
+    assert_equal('077ba2ad3ea24a929091a9e6ce545c93199b8e57',
+                 internal_tag(json_response['uuid']))
+  end
+
+  test 'get job with components' do
+    authorize_with :active
+    get :show, {id: jobs(:running_job_with_components).uuid}
+    assert_response :success
+    assert_not_nil json_response["components"]
+    assert_equal ["component1", "component2"], json_response["components"].keys
+  end
+
+  test 'update job with components with no lock' do
+    authorize_with :active
+    put :update, {
+      id: jobs(:running_job_with_components).uuid,
+      job: {
+        components: {}
+      }
+    }
+    assert_response 403
+  end
+
+  test 'update job with components' do
+    authorize_with :admin
+    put :update, {
+      id: jobs(:running_job_with_components).uuid,
+      job: {
+        components: {}
+      }
+    }
+    assert_response :success
+  end
+
+  test 'add components to job locked by active user as system user' do
+    authorize_with :system_user
+    put :update, {
+      id: jobs(:running).uuid,
+      job: {
+        components: {"component1" => "value1", "component2" => "value2"}
+      }
+    }
+    assert_response :success
+    assert_not_nil json_response["components"]
+    keys = json_response["components"].keys
+    assert_equal ["component1", "component2"], keys
+    assert_equal "value1", json_response["components"][keys[0]]
+  end
 end