taverna-player 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/Gemfile +18 -0
- data/LICENCE.rdoc +29 -0
- data/README.rdoc +663 -0
- data/Rakefile +65 -0
- data/app/assets/javascripts/taverna_player/application.js +14 -0
- data/app/assets/javascripts/taverna_player/runs.js +42 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/assets/stylesheets/taverna_player/application.css +13 -0
- data/app/assets/stylesheets/taverna_player/coderay.css +120 -0
- data/app/controllers/taverna_player/application_controller.rb +16 -0
- data/app/controllers/taverna_player/runs_controller.rb +18 -0
- data/app/controllers/taverna_player/service_credentials_controller.rb +18 -0
- data/app/helpers/taverna_player/application_helper.rb +55 -0
- data/app/helpers/taverna_player/runs_helper.rb +84 -0
- data/app/models/taverna_player/interaction.rb +25 -0
- data/app/models/taverna_player/run.rb +117 -0
- data/app/models/taverna_player/run_port.rb +148 -0
- data/app/models/taverna_player/service_credential.rb +56 -0
- data/app/views/layouts/taverna_player/embedded.html.erb +27 -0
- data/app/views/taverna_player/runs/_button.html.erb +19 -0
- data/app/views/taverna_player/runs/_info.html.erb +56 -0
- data/app/views/taverna_player/runs/_info.json.jbuilder +2 -0
- data/app/views/taverna_player/runs/_inputs.html.erb +34 -0
- data/app/views/taverna_player/runs/_inputs.json.jbuilder +8 -0
- data/app/views/taverna_player/runs/_interaction.html.erb +68 -0
- data/app/views/taverna_player/runs/_outputs.html.erb +41 -0
- data/app/views/taverna_player/runs/_poll.html.erb +27 -0
- data/app/views/taverna_player/runs/create.json.jbuilder +3 -0
- data/app/views/taverna_player/runs/embedded/_button.html.erb +19 -0
- data/app/views/taverna_player/runs/embedded/_info.html.erb +25 -0
- data/app/views/taverna_player/runs/embedded/_inputs.html.erb +32 -0
- data/app/views/taverna_player/runs/embedded/_outputs.html.erb +32 -0
- data/app/views/taverna_player/runs/embedded/new.html.erb +58 -0
- data/app/views/taverna_player/runs/embedded/show.html.erb +39 -0
- data/app/views/taverna_player/runs/embedded/show.js.erb +35 -0
- data/app/views/taverna_player/runs/index.html.erb +40 -0
- data/app/views/taverna_player/runs/index.json.jbuilder +1 -0
- data/app/views/taverna_player/runs/new.html.erb +56 -0
- data/app/views/taverna_player/runs/new.json.jbuilder +1 -0
- data/app/views/taverna_player/runs/show.html.erb +29 -0
- data/app/views/taverna_player/runs/show.js.erb +25 -0
- data/app/views/taverna_player/runs/show.json.jbuilder +25 -0
- data/app/views/taverna_player/service_credentials/_form.html.erb +53 -0
- data/app/views/taverna_player/service_credentials/edit.html.erb +18 -0
- data/app/views/taverna_player/service_credentials/index.html.erb +41 -0
- data/app/views/taverna_player/service_credentials/new.html.erb +17 -0
- data/app/views/taverna_player/service_credentials/show.html.erb +36 -0
- data/config/routes.rb +34 -0
- data/db/migrate/20130313105546_create_taverna_player_runs.rb +16 -0
- data/db/migrate/20130315163019_create_taverna_player_run_ports.rb +15 -0
- data/db/migrate/20130318170744_add_attachment_file_to_taverna_player_run_ports.rb +6 -0
- data/db/migrate/20130319183634_create_delayed_jobs.rb +22 -0
- data/db/migrate/20130320102600_add_status_message_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130321100110_add_depth_and_metadata_to_taverna_player_run_ports.rb +6 -0
- data/db/migrate/20130704095504_add_attachment_results_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130705142704_add_embedded_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130714140911_create_taverna_player_interactions.rb +13 -0
- data/db/migrate/20130717083653_add_proxy_to_taverna_player_runs.rb +6 -0
- data/db/migrate/20130717155415_add_stop_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130811152840_add_attachment_log_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130811211725_change_taverna_player_runs_state_column.rb +5 -0
- data/db/migrate/20130812155839_add_name_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130918135348_create_taverna_player_service_credentials.rb +15 -0
- data/db/migrate/20130919154200_add_displayed_to_taverna_player_interactions.rb +5 -0
- data/db/migrate/20131007153209_add_job_ref_to_taverna_player_runs.rb +13 -0
- data/db/migrate/20131010094537_add_reply_caching_to_taverna_player_interactions.rb +19 -0
- data/db/migrate/20131017141514_add_failure_message_to_taverna_player_run.rb +5 -0
- data/db/migrate/20131018152940_add_serial_number_to_taverna_player_interactions.rb +5 -0
- data/db/migrate/20131018160715_add_parent_run_id_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20131102113933_add_page_uri_to_taverna_player_interaction.rb +5 -0
- data/db/migrate/20131105115218_remove_proxy_from_taverna_player_runs.rb +11 -0
- data/db/migrate/20131105141934_change_taverna_player_interactions_output_value_column_name.rb +5 -0
- data/db/migrate/20131112165520_add_user_to_taverna_player_run.rb +5 -0
- data/lib/generators/taverna_player/callbacks_generator.rb +25 -0
- data/lib/generators/taverna_player/controllers_generator.rb +30 -0
- data/lib/generators/taverna_player/install_generator.rb +30 -0
- data/lib/generators/taverna_player/job_generator.rb +26 -0
- data/lib/generators/taverna_player/models_generator.rb +27 -0
- data/lib/generators/taverna_player/renderers_generator.rb +26 -0
- data/lib/generators/taverna_player/views_generator.rb +27 -0
- data/lib/generators/templates/ReadMe.txt +118 -0
- data/lib/generators/templates/callbacks/render_callbacks.rb +56 -0
- data/lib/generators/templates/callbacks/worker_callbacks.rb +31 -0
- data/lib/generators/templates/controllers/runs_controller.rb +20 -0
- data/lib/generators/templates/controllers/service_credentials_controller.rb +20 -0
- data/lib/generators/templates/initializer.rb +154 -0
- data/lib/generators/templates/models/run.rb +20 -0
- data/lib/tasks/delete-cancelled-runs.rake +26 -0
- data/lib/tasks/delete-old-embedded-runs.rake +26 -0
- data/lib/taverna-player.rb +139 -0
- data/lib/taverna_player/concerns/controllers/runs_controller.rb +281 -0
- data/lib/taverna_player/concerns/controllers/service_credentials_controller.rb +89 -0
- data/lib/taverna_player/concerns/models/run.rb +205 -0
- data/lib/taverna_player/engine.rb +23 -0
- data/lib/taverna_player/model_proxy.rb +51 -0
- data/lib/taverna_player/output_renderer.rb +96 -0
- data/lib/taverna_player/render_callbacks.rb +41 -0
- data/lib/taverna_player/version.rb +15 -0
- data/lib/taverna_player/worker.rb +325 -0
- data/script/delayed_job +5 -0
- data/script/rails +8 -0
- data/taverna_player.gemspec +46 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +16 -0
- data/test/dummy/app/assets/stylesheets/application.css +14 -0
- data/test/dummy/app/controllers/application_controller.rb +15 -0
- data/test/dummy/app/controllers/home_controller.rb +16 -0
- data/test/dummy/app/controllers/taverna_player/runs_controller.rb +25 -0
- data/test/dummy/app/controllers/taverna_player/service_credentials_controller.rb +25 -0
- data/test/dummy/app/controllers/workflows_controller.rb +17 -0
- data/test/dummy/app/models/user.rb +15 -0
- data/test/dummy/app/models/workflow.rb +32 -0
- data/test/dummy/app/views/home/index.html.erb +18 -0
- data/test/dummy/app/views/layouts/application.html.erb +43 -0
- data/test/dummy/app/views/workflows/index.html.erb +35 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +58 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/taverna_player.example.rb +40 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +22 -0
- data/test/dummy/db/migrate/20130314103555_create_workflows.rb +12 -0
- data/test/dummy/db/migrate/20130318141557_create_taverna_player_runs.taverna_player.rb +17 -0
- data/test/dummy/db/migrate/20130318141558_create_taverna_player_run_ports.taverna_player.rb +16 -0
- data/test/dummy/db/migrate/20130318173013_add_attachment_file_to_taverna_player_run_ports.taverna_player.rb +7 -0
- data/test/dummy/db/migrate/20130319183816_create_delayed_jobs.taverna_player.rb +23 -0
- data/test/dummy/db/migrate/20130320102635_add_status_message_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130321161859_add_depth_and_metadata_to_taverna_player_run_ports.taverna_player.rb +7 -0
- data/test/dummy/db/migrate/20130704100146_add_attachment_results_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130705142816_add_embedded_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130714142144_create_taverna_player_interactions.taverna_player.rb +14 -0
- data/test/dummy/db/migrate/20130717084809_add_proxy_to_taverna_player_runs.taverna_player.rb +7 -0
- data/test/dummy/db/migrate/20130718102707_add_stop_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130811204449_add_attachment_log_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130811212709_change_taverna_player_runs_state_column.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130812161152_add_name_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130918155525_create_taverna_player_service_credentials.taverna_player.rb +16 -0
- data/test/dummy/db/migrate/20130919155202_add_displayed_to_taverna_player_interactions.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131007153659_add_job_ref_to_taverna_player_runs.taverna_player.rb +14 -0
- data/test/dummy/db/migrate/20131016123941_add_reply_caching_to_taverna_player_interactions.taverna_player.rb +20 -0
- data/test/dummy/db/migrate/20131017141614_add_failure_message_to_taverna_player_run.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131018153316_add_serial_number_to_taverna_player_interactions.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131018164614_add_parent_run_id_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131102114343_add_page_uri_to_taverna_player_interaction.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131105115724_remove_proxy_from_taverna_player_runs.taverna_player.rb +12 -0
- data/test/dummy/db/migrate/20131105142417_change_taverna_player_interactions_output_value_column_name.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131112165815_add_user_to_taverna_player_run.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131114130937_create_users.rb +10 -0
- data/test/dummy/db/schema.rb +123 -0
- data/test/dummy/lib/callbacks.rb +35 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/delayed_job +5 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/functional/home_controller_test.rb +28 -0
- data/test/dummy/test/functional/workflows_controller_test.rb +21 -0
- data/test/fixtures/files/crassostrea_gigas.csv +737 -0
- data/test/fixtures/taverna_player/interactions.yml +32 -0
- data/test/fixtures/taverna_player/run_ports.yml +54 -0
- data/test/fixtures/taverna_player/runs.yml +69 -0
- data/test/fixtures/taverna_player/service_credentials.yml +25 -0
- data/test/fixtures/users.yml +16 -0
- data/test/fixtures/workflows.yml +32 -0
- data/test/functional/taverna_player/runs_controller_test.rb +316 -0
- data/test/functional/taverna_player/service_credentials_controller_test.rb +99 -0
- data/test/taverna_player_test.rb +25 -0
- data/test/test_helper.rb +33 -0
- data/test/unit/helpers/taverna_player/application_helper_test.rb +70 -0
- data/test/unit/helpers/taverna_player/runs_helper_test.rb +45 -0
- data/test/unit/taverna_player/interaction_test.rb +47 -0
- data/test/unit/taverna_player/run_port_test.rb +309 -0
- data/test/unit/taverna_player/run_test.rb +196 -0
- data/test/unit/taverna_player/service_credential_test.rb +64 -0
- data/test/workflows/hello.t2flow +164 -0
- data/test/workflows/list_with_errors.t2flow +107 -0
- data/test/workflows/pass_through.t2flow +12 -0
- metadata +539 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
3
|
+
#
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
5
|
+
#
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
8
|
+
# number 283359.
|
9
|
+
#
|
10
|
+
# Author: Robert Haines
|
11
|
+
#------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
one:
|
14
|
+
unique_id: b6d0dad1-ef0a-436a-bd16-62f3fe767801
|
15
|
+
serial: ask0
|
16
|
+
replied: false
|
17
|
+
displayed: false
|
18
|
+
run_id: 4
|
19
|
+
|
20
|
+
two:
|
21
|
+
unique_id: 602f98fc-f1b7-4fbd-9ee3-d4aa001492bb
|
22
|
+
serial: Nested_workflow:Interaction0
|
23
|
+
replied: true
|
24
|
+
displayed: true
|
25
|
+
run_id: 3
|
26
|
+
|
27
|
+
three:
|
28
|
+
unique_id: 101d727f-31cf-4601-8c3c-9d936b9e6c5e
|
29
|
+
serial: Nested_workflow:Interaction0
|
30
|
+
replied: false
|
31
|
+
displayed: true
|
32
|
+
run_id: 5
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
3
|
+
#
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
5
|
+
#
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
8
|
+
# number 283359.
|
9
|
+
#
|
10
|
+
# Author: Robert Haines
|
11
|
+
#------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
one:
|
14
|
+
id: 1
|
15
|
+
name: Message
|
16
|
+
value: Hello, World!
|
17
|
+
port_type: TavernaPlayer::RunPort::Output
|
18
|
+
run_id: 1
|
19
|
+
depth: 0
|
20
|
+
metadata: "---\n:size: 13\n:type: text/plain"
|
21
|
+
|
22
|
+
two:
|
23
|
+
id: 2
|
24
|
+
name: OUT
|
25
|
+
port_type: TavernaPlayer::RunPort::Output
|
26
|
+
run_id: 2
|
27
|
+
depth: 1
|
28
|
+
metadata: "---\n:size:\n- 7\n- 7\n- 974\n- 974\n- 7\n:type:\n- text/plain\n- text/plain\n- application/x-error\n- application/x-error\n- text/plain"
|
29
|
+
|
30
|
+
three:
|
31
|
+
id: 3
|
32
|
+
name: IN_Value
|
33
|
+
value: Rob
|
34
|
+
port_type: TavernaPlayer::RunPort::Input
|
35
|
+
run_id: 3
|
36
|
+
depth: 0
|
37
|
+
|
38
|
+
four:
|
39
|
+
id: 4
|
40
|
+
name: OUT
|
41
|
+
value: Rob
|
42
|
+
port_type: TavernaPlayer::RunPort::Output
|
43
|
+
run_id: 3
|
44
|
+
depth: 0
|
45
|
+
metadata: "---\n:size: 3\n:type: text/plain"
|
46
|
+
|
47
|
+
five:
|
48
|
+
id: 5
|
49
|
+
name: Long_N_unnecessary_Name_OUT
|
50
|
+
value: (http://example.com/path?query=1)
|
51
|
+
port_type: TavernaPlayer::RunPort::Output
|
52
|
+
run_id: 4
|
53
|
+
depth: 0
|
54
|
+
metadata: "---\n:size: 33\n:type: text/plain"
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
3
|
+
#
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
5
|
+
#
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
8
|
+
# number 283359.
|
9
|
+
#
|
10
|
+
# Author: Robert Haines
|
11
|
+
#------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
one:
|
14
|
+
id: 1
|
15
|
+
run_id: 9dcfbaf1-4c55-40f0-9853-baa7f8410879
|
16
|
+
name: Test run 1
|
17
|
+
saved_state: pending
|
18
|
+
create_time: 2013-03-13 10:55:46
|
19
|
+
start_time: 2013-03-13 10:56:00
|
20
|
+
finish_time: 2013-03-13 10:56:32
|
21
|
+
workflow_id: 1
|
22
|
+
|
23
|
+
two:
|
24
|
+
id: 2
|
25
|
+
run_id: 13246c77-ffa3-449f-9b18-0f085717f8eb
|
26
|
+
name: Test run 2
|
27
|
+
saved_state: running
|
28
|
+
create_time: 2013-03-13 10:55:46
|
29
|
+
start_time: 2013-03-13 10:55:55
|
30
|
+
finish_time: 2013-03-13 10:57:07
|
31
|
+
workflow_id: 2
|
32
|
+
|
33
|
+
three:
|
34
|
+
id: 3
|
35
|
+
run_id: f8250afc-09c1-4129-ab28-e889a284594f
|
36
|
+
name: Test run 3
|
37
|
+
saved_state: finished
|
38
|
+
create_time: 2013-03-13 10:55:46
|
39
|
+
start_time: 2013-03-13 10:55:48
|
40
|
+
finish_time: 2013-03-13 10:58:22
|
41
|
+
workflow_id: 3
|
42
|
+
embedded: true
|
43
|
+
|
44
|
+
four:
|
45
|
+
id: 4
|
46
|
+
run_id: f8250afc-09c1-4129-ab28-e889a284594f
|
47
|
+
name: Test run 4
|
48
|
+
saved_state: running
|
49
|
+
create_time: 2013-03-13 10:55:46
|
50
|
+
start_time: 2013-03-13 10:55:48
|
51
|
+
workflow_id: 1
|
52
|
+
|
53
|
+
five:
|
54
|
+
id: 5
|
55
|
+
run_id: f8250afc-09c1-4129-ab28-e889a284594f
|
56
|
+
name: Test run 5
|
57
|
+
saved_state: running
|
58
|
+
create_time: 2013-03-13 10:55:46
|
59
|
+
start_time: 2013-03-13 10:55:48
|
60
|
+
workflow_id: 1
|
61
|
+
|
62
|
+
six:
|
63
|
+
id: 6
|
64
|
+
run_id: f8250afc-09c1-4129-ab28-e889a284594f
|
65
|
+
name: Test run 6
|
66
|
+
saved_state: failed
|
67
|
+
create_time: 2013-03-13 10:55:46
|
68
|
+
start_time: 2013-03-13 10:55:48
|
69
|
+
workflow_id: 1
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
3
|
+
#
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
5
|
+
#
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
8
|
+
# number 283359.
|
9
|
+
#
|
10
|
+
# Author: Robert Haines
|
11
|
+
#------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
one:
|
14
|
+
uri: rserve://example.com:6311
|
15
|
+
name: My R Server
|
16
|
+
description: R Server
|
17
|
+
login: myname
|
18
|
+
password: insecure!
|
19
|
+
|
20
|
+
two:
|
21
|
+
uri: http://example.org/my_service
|
22
|
+
name: My Web Service
|
23
|
+
description: Web Service
|
24
|
+
login: aname
|
25
|
+
password: bad-password!
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
3
|
+
#
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
5
|
+
#
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
8
|
+
# number 283359.
|
9
|
+
#
|
10
|
+
# Author: Robert Haines
|
11
|
+
#------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
one:
|
14
|
+
id: 1
|
15
|
+
name: Rob
|
16
|
+
email: rob@example.com
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
3
|
+
#
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
5
|
+
#
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
8
|
+
# number 283359.
|
9
|
+
#
|
10
|
+
# Author: Robert Haines
|
11
|
+
#------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
one:
|
14
|
+
id: 1
|
15
|
+
title: Hello, World!
|
16
|
+
author: Robert Haines
|
17
|
+
description: Say "Hello, World!"
|
18
|
+
file: test/workflows/hello.t2flow
|
19
|
+
|
20
|
+
two:
|
21
|
+
id: 2
|
22
|
+
title: List of Fail
|
23
|
+
author: Robert Haines
|
24
|
+
description: Produce a list littered with errors
|
25
|
+
file: test/workflows/list_with_errors.t2flow
|
26
|
+
|
27
|
+
three:
|
28
|
+
id: 3
|
29
|
+
title: Pass Through
|
30
|
+
author: Robert Haines
|
31
|
+
description: Pass the input straight through to the output
|
32
|
+
file: test/workflows/pass_through.t2flow
|
@@ -0,0 +1,316 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
3
|
+
#
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
5
|
+
#
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
8
|
+
# number 283359.
|
9
|
+
#
|
10
|
+
# Author: Robert Haines
|
11
|
+
#------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
require 'test_helper'
|
14
|
+
|
15
|
+
module TavernaPlayer
|
16
|
+
class RunsControllerTest < ActionController::TestCase
|
17
|
+
setup do
|
18
|
+
@run1 = taverna_player_runs(:one)
|
19
|
+
@run2 = taverna_player_runs(:two)
|
20
|
+
@run3 = taverna_player_runs(:three)
|
21
|
+
@run4 = taverna_player_runs(:four)
|
22
|
+
@run5 = taverna_player_runs(:five)
|
23
|
+
@int = taverna_player_interactions(:one)
|
24
|
+
@workflow = workflows(:one)
|
25
|
+
@routes = TavernaPlayer::Engine.routes
|
26
|
+
end
|
27
|
+
|
28
|
+
test "should route to runs" do
|
29
|
+
assert_routing "/runs",
|
30
|
+
{ :controller => "taverna_player/runs", :action => "index" }, {}, {},
|
31
|
+
"Did not route correctly"
|
32
|
+
end
|
33
|
+
|
34
|
+
test "should route to a run" do
|
35
|
+
assert_routing "/runs/1",
|
36
|
+
{ :controller => "taverna_player/runs", :action => "show",
|
37
|
+
:id => "1" }, {}, {}, "Did not route correctly"
|
38
|
+
end
|
39
|
+
|
40
|
+
test "should route to a run output" do
|
41
|
+
assert_routing "/runs/1/output/OUT",
|
42
|
+
{ :controller => "taverna_player/runs", :action => "output",
|
43
|
+
:id => "1", :port => "OUT" }, {}, {}, "Did not route correctly"
|
44
|
+
end
|
45
|
+
|
46
|
+
test "should route to a deep run output" do
|
47
|
+
assert_routing "/runs/1/output/OUT/0/0",
|
48
|
+
{ :controller => "taverna_player/runs", :action => "output",
|
49
|
+
:id => "1", :port => "OUT", :path => "0/0" }, {}, {},
|
50
|
+
"Did not route correctly"
|
51
|
+
end
|
52
|
+
|
53
|
+
test "should route to a run input" do
|
54
|
+
assert_routing "/runs/1/input/IN",
|
55
|
+
{ :controller => "taverna_player/runs", :action => "input",
|
56
|
+
:id => "1", :port => "IN" }, {}, {}, "Did not route correctly"
|
57
|
+
end
|
58
|
+
|
59
|
+
test "should route to cancel on a run" do
|
60
|
+
assert_routing({ :method => "put", :path => "/runs/1/cancel" },
|
61
|
+
{ :controller => "taverna_player/runs", :action => "cancel",
|
62
|
+
:id => "1" }, {}, {}, "Did not route correctly")
|
63
|
+
end
|
64
|
+
|
65
|
+
test "should route to interaction write proxy" do
|
66
|
+
assert_routing({ :method => "post",
|
67
|
+
:path => "/runs/1/interaction/#{@int.unique_id}" },
|
68
|
+
{ :controller => "taverna_player/runs", :action => "write_interaction",
|
69
|
+
:id => "1", :int_id => @int.unique_id }, {}, {},
|
70
|
+
"Did not route correctly")
|
71
|
+
end
|
72
|
+
|
73
|
+
test "should route to interaction read proxy" do
|
74
|
+
assert_routing "/runs/1/interaction/#{@int.unique_id}",
|
75
|
+
{ :controller => "taverna_player/runs", :action => "read_interaction",
|
76
|
+
:id => "1", :int_id => @int.unique_id, }, {}, {},
|
77
|
+
"Did not route correctly"
|
78
|
+
end
|
79
|
+
|
80
|
+
test "should route to results download" do
|
81
|
+
assert_routing "/runs/1/download/results",
|
82
|
+
{ :controller => "taverna_player/runs", :action => "download_results",
|
83
|
+
:id => "1" }, {}, {}, "Did not route correctly"
|
84
|
+
end
|
85
|
+
|
86
|
+
test "should route to log download" do
|
87
|
+
assert_routing "/runs/1/download/log",
|
88
|
+
{ :controller => "taverna_player/runs", :action => "download_log",
|
89
|
+
:id => "1" }, {}, {}, "Did not route correctly"
|
90
|
+
end
|
91
|
+
|
92
|
+
test "should route to output port download" do
|
93
|
+
assert_routing "/runs/1/download/output/Message",
|
94
|
+
{ :controller => "taverna_player/runs", :action => "download_output",
|
95
|
+
:id => "1", :port => "Message" }, {}, {}, "Did not route correctly"
|
96
|
+
end
|
97
|
+
|
98
|
+
test "should get index and be overridden" do
|
99
|
+
get :index, :use_route => :taverna_player
|
100
|
+
assert_response :success, "Response was not success"
|
101
|
+
assert_not_nil assigns(:runs), "Did not assign a valid runs instance"
|
102
|
+
assert_not_nil assigns(:override)
|
103
|
+
assert_template "application", "Did not render with the correct layout"
|
104
|
+
end
|
105
|
+
|
106
|
+
test "should get new and not be overridden" do
|
107
|
+
get :new, :workflow_id => 1, :use_route => :taverna_player
|
108
|
+
assert_response :success, "Response was not success"
|
109
|
+
refute assigns(:override)
|
110
|
+
assert_template "application", "Did not render with the correct layout"
|
111
|
+
end
|
112
|
+
|
113
|
+
test "should get new embedded" do
|
114
|
+
get :new, :workflow_id => 1, :embedded => "true",
|
115
|
+
:use_route => :taverna_player
|
116
|
+
assert_response :success, "Response was not success"
|
117
|
+
assert_template "taverna_player/embedded",
|
118
|
+
"Did not render with the correct layout"
|
119
|
+
end
|
120
|
+
|
121
|
+
test "should show run with no interactions" do
|
122
|
+
get :show, :id => @run1, :use_route => :taverna_player
|
123
|
+
assert_response :success, "Response was not success"
|
124
|
+
refute assigns(:interaction), "No interactions for this run"
|
125
|
+
assert_template "application", "Did not render with the correct layout"
|
126
|
+
end
|
127
|
+
|
128
|
+
test "should show run with an undisplayed interaction" do
|
129
|
+
get :show, :id => @run4, :use_route => :taverna_player
|
130
|
+
assert_response :success, "Response was not success"
|
131
|
+
assert assigns(:interaction), "Should have an interaction for this run"
|
132
|
+
assert assigns(:new_interaction), "Should have new interaction flag"
|
133
|
+
assert_template "application", "Did not render with the correct layout"
|
134
|
+
end
|
135
|
+
|
136
|
+
test "should show run with a displayed interaction" do
|
137
|
+
get :show, :id => @run5, :use_route => :taverna_player
|
138
|
+
assert_response :success, "Response was not success"
|
139
|
+
assert assigns(:interaction), "Should have an interaction for this run"
|
140
|
+
refute assigns(:new_interaction), "Should not have new interaction flag"
|
141
|
+
assert_template "application", "Did not render with the correct layout"
|
142
|
+
end
|
143
|
+
|
144
|
+
test "should show run embedded ignoring replied interaction" do
|
145
|
+
get :show, :id => @run3, :use_route => :taverna_player
|
146
|
+
assert_response :success, "Response was not success"
|
147
|
+
refute assigns(:interaction), "Should not show replied interaction"
|
148
|
+
refute assigns(:new_interaction), "Should not have new interaction flag"
|
149
|
+
assert_template "taverna_player/embedded",
|
150
|
+
"Did not render with the correct layout"
|
151
|
+
end
|
152
|
+
|
153
|
+
test "should create run via browser" do
|
154
|
+
assert_difference("Run.count") do
|
155
|
+
post :create, :run => { :workflow_id => @workflow.id }
|
156
|
+
end
|
157
|
+
|
158
|
+
assert_redirected_to run_path(assigns(:run)),
|
159
|
+
"Did not redirect correctly"
|
160
|
+
assert_equal "Run was successfully created.", flash[:notice],
|
161
|
+
"Incorrect or missing flash notice"
|
162
|
+
assert assigns(:run).valid?, "Created run was invalid"
|
163
|
+
refute assigns(:run).user_id.nil?, "Run should have a user_id"
|
164
|
+
end
|
165
|
+
|
166
|
+
test "should create embedded run via browser" do
|
167
|
+
assert_difference("Run.count") do
|
168
|
+
post :create,
|
169
|
+
:run => { :workflow_id => @workflow.id, :embedded => "true" }
|
170
|
+
end
|
171
|
+
|
172
|
+
assert_redirected_to run_path(assigns(:run)),
|
173
|
+
"Did not redirect correctly"
|
174
|
+
assert_equal "Run was successfully created.", flash[:notice],
|
175
|
+
"Incorrect or missing flash notice"
|
176
|
+
assert assigns(:run).valid?, "Created run was invalid"
|
177
|
+
assert assigns(:run).embedded?, "Run not marked as embedded"
|
178
|
+
assert assigns(:run).user_id.nil?, "Run should not have a user_id"
|
179
|
+
end
|
180
|
+
|
181
|
+
test "should create run via json" do
|
182
|
+
assert_difference("Run.count") do
|
183
|
+
post :create, :run => { :workflow_id => @workflow.id },
|
184
|
+
:format => :json
|
185
|
+
end
|
186
|
+
|
187
|
+
assert_response :created, "Response was not created"
|
188
|
+
assert_equal "Run was successfully created.", flash[:notice],
|
189
|
+
"Incorrect or missing flash notice"
|
190
|
+
assert assigns(:run).valid?, "Created run was invalid"
|
191
|
+
refute assigns(:run).user_id.nil?, "Run should have a user_id"
|
192
|
+
end
|
193
|
+
|
194
|
+
test "should create embedded run via json" do
|
195
|
+
assert_difference("Run.count") do
|
196
|
+
post :create,
|
197
|
+
:run => { :workflow_id => @workflow.id, :embedded => "true" },
|
198
|
+
:format => :json
|
199
|
+
end
|
200
|
+
|
201
|
+
assert_response :created, "Response was not created"
|
202
|
+
assert_equal "Run was successfully created.", flash[:notice],
|
203
|
+
"Incorrect or missing flash notice"
|
204
|
+
assert assigns(:run).valid?, "Created run was invalid"
|
205
|
+
assert assigns(:run).embedded?, "Run not marked as embedded"
|
206
|
+
assert assigns(:run).user_id.nil?, "Run should not have a user_id"
|
207
|
+
end
|
208
|
+
|
209
|
+
test "should not destroy running run via browser" do
|
210
|
+
@request.env["HTTP_REFERER"] = "/runs"
|
211
|
+
assert_no_difference(["Run.count", "RunPort::Output.count"],
|
212
|
+
"Run count and output port count changed") do
|
213
|
+
delete :destroy, :id => @run1, :use_route => :taverna_player
|
214
|
+
end
|
215
|
+
|
216
|
+
assert_equal "Run must be cancelled before deletion.", flash[:error],
|
217
|
+
"Incorrect or missing flash notice"
|
218
|
+
assert_response :redirect, "Response was not a redirect"
|
219
|
+
assert_redirected_to runs_path, "Did not redirect correctly"
|
220
|
+
end
|
221
|
+
|
222
|
+
test "should not destroy running run via json" do
|
223
|
+
assert_no_difference(["Run.count", "RunPort::Output.count"],
|
224
|
+
"Run count and output port count changed") do
|
225
|
+
delete :destroy, :id => @run1, :format => :json
|
226
|
+
end
|
227
|
+
|
228
|
+
assert_equal "Run must be cancelled before deletion.", flash[:error],
|
229
|
+
"Incorrect or missing flash notice"
|
230
|
+
assert_response :forbidden, "Response was not forbidden"
|
231
|
+
end
|
232
|
+
|
233
|
+
test "should cancel run and redirect to index via browser" do
|
234
|
+
@request.env["HTTP_REFERER"] = "/runs"
|
235
|
+
put :cancel, :id => @run1, :use_route => :taverna_player
|
236
|
+
|
237
|
+
assert_response :redirect, "Response was not a redirect"
|
238
|
+
assert_redirected_to runs_path, "Did not redirect correctly"
|
239
|
+
end
|
240
|
+
|
241
|
+
test "should cancel run and redirect to show via browser" do
|
242
|
+
@request.env["HTTP_REFERER"] = "/runs/1"
|
243
|
+
put :cancel, :id => @run1, :use_route => :taverna_player
|
244
|
+
|
245
|
+
assert_response :redirect, "Response was not a redirect"
|
246
|
+
assert_redirected_to run_path(@run1), "Did not redirect correctly"
|
247
|
+
end
|
248
|
+
|
249
|
+
test "should cancel run via json" do
|
250
|
+
put :cancel, :id => @run1, :format => :json
|
251
|
+
|
252
|
+
assert_response :success, "Response was not success"
|
253
|
+
end
|
254
|
+
|
255
|
+
test "should destroy run and all associated ports and interactions" do
|
256
|
+
assert_difference(["Run.count", "RunPort::Input.count",
|
257
|
+
"RunPort::Output.count", "Interaction.count"], -1,
|
258
|
+
"Counts of objects did not reduce by 1") do
|
259
|
+
delete :destroy, :id => @run3, :use_route => :taverna_player
|
260
|
+
end
|
261
|
+
|
262
|
+
assert_response :redirect, "Response was not a redirect"
|
263
|
+
assert_redirected_to runs_path, "Did not redirect correctly"
|
264
|
+
end
|
265
|
+
|
266
|
+
test "should only return runs from workflow id 1" do
|
267
|
+
get :index, :workflow_id => @workflow
|
268
|
+
assert_response :success, "Response was not success"
|
269
|
+
assert_not_nil assigns(:runs), "Did not assign a valid runs instance"
|
270
|
+
assert_not_nil assigns(:override)
|
271
|
+
assert_not_equal Run.count, assigns(:runs).count, "Returned all runs"
|
272
|
+
assert_template "application", "Did not render with the correct layout"
|
273
|
+
end
|
274
|
+
|
275
|
+
test "should update run name via browser" do
|
276
|
+
put :update, :id => @run1, :run => { :name => "New name" }
|
277
|
+
assert_not_nil assigns(:run), "Did not assign a valid run instance"
|
278
|
+
assert_not_nil assigns(:update_parameters), "Did not filter params"
|
279
|
+
assert_equal "New name", assigns(:run).name, "Run name not updated"
|
280
|
+
assert_response :redirect, "Response was not a redirect"
|
281
|
+
assert_redirected_to run_path(assigns(:run)),
|
282
|
+
"Did not redirect correctly"
|
283
|
+
end
|
284
|
+
|
285
|
+
test "should only update run name via browser" do
|
286
|
+
put :update, :id => @run1,
|
287
|
+
:run => { :name => "New name", :run_id => "New id" }
|
288
|
+
assert_not_nil assigns(:run), "Did not assign a valid run instance"
|
289
|
+
assert_not_nil assigns(:update_parameters), "Did not filter params"
|
290
|
+
assert_equal "New name", assigns(:run).name, "Run name not updated"
|
291
|
+
assert_not_equal "New id", assigns(:run).run_id, "Run ID updated"
|
292
|
+
assert_response :redirect, "Response was not a redirect"
|
293
|
+
assert_redirected_to run_path(assigns(:run)),
|
294
|
+
"Did not redirect correctly"
|
295
|
+
end
|
296
|
+
|
297
|
+
test "should filter update parameters correctly" do
|
298
|
+
put :update, :id => @run1, :run => { :run_id => "New id" }
|
299
|
+
assert_not_nil assigns(:run), "Did not assign a valid run instance"
|
300
|
+
assert_nil assigns(:update_parameters), "Did not filter params"
|
301
|
+
assert_not_equal "New id", assigns(:run).run_id, "Run ID updated"
|
302
|
+
assert_response :redirect, "Response was not a redirect"
|
303
|
+
assert_redirected_to run_path(assigns(:run)),
|
304
|
+
"Did not redirect correctly"
|
305
|
+
end
|
306
|
+
|
307
|
+
test "should update run name via json" do
|
308
|
+
put :update, :id => @run1, :run => { :name => "New name" },
|
309
|
+
:format => :json
|
310
|
+
assert_not_nil assigns(:run), "Did not assign a valid run instance"
|
311
|
+
assert_not_nil assigns(:update_parameters), "Did not filter params"
|
312
|
+
assert_equal "New name", assigns(:run).name, "Run name not updated"
|
313
|
+
assert_response :success, "Response was not success"
|
314
|
+
end
|
315
|
+
end
|
316
|
+
end
|