Files
galaxy/test/unit/tool_util/parameter_specification.yml
T
John Chilton f37075c1a5 Fix various parameter validation issues.
I previously failed to include a bunch of validation checks I assumed had been covered so fixed that first and got a bunch of new issues detected. Also added a parameter specification test case for https://github.com/galaxyproject/galaxy/issues/19908 and fixed that.
2025-04-02 12:49:09 -04:00

2026 lines
58 KiB
YAML

# Tools to create.
# Notes on conditional boolean values...
# - if you set truevalue/falsevalue - it doesn't look like the when can remain
# true/false - so go through and simplify that. means don't need to create test
# cases that test that. Linting also at very least warns on this.
# - gx_conditional_boolean_empty_default
# - gx_conditional_boolean_empty_else
# - gx_conditional_select_*
# - gx_repeat_select_required
# - gx_repeat_repeat_select_required
# - gx_repeat_conditional_boolean_optional
# Things to verify:
# - non optional, multi-selects require a selection (see TODO below...)
# - https://github.com/galaxyproject/galaxy/issues/18541
gx_int:
request_valid:
- parameter: 5
- parameter: 6
# galaxy parameters created with a value - so doesn't need to appear in request even though non-optional
- {}
request_invalid:
- parameter: null
- parameter: "null"
- parameter: "None"
- parameter: { 5 }
- parameter: {__class__: 'ConnectedValue'}
job_internal_valid:
- parameter: 5
job_internal_invalid:
- parameter: null
- {}
landing_request_valid:
- {}
- parameter: 5
landing_request_invalid:
- parameter: "moo"
- parameter: "5"
landing_request_internal_valid:
- {}
- parameter: 5
landing_request_internal_invalid:
- parameter: "moo"
- parameter: "5"
test_case_xml_valid:
- parameter: 5
- {}
test_case_xml_invalid:
- parameter: null
- parameter: "5"
workflow_step_valid:
- parameter: 5
- {}
workflow_step_invalid:
- parameterx: 5
- parameter: 'foobar'
workflow_step_linked_valid:
- parameter: 5
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- parameter: null
- parameter: 'foobar'
- parameter: {__class__: 'ConnectedValue2'}
gx_boolean:
request_valid:
- parameter: True
- parameter: False
- {}
request_invalid:
- parameter: {}
- parameter: "true"
# This is borderline... should we allow truevalue/falsevalue in the API.
# Marius and John were on fence here.
- parameter: "mytrue"
- parameter: null
- parameter: {__class__: 'ConnectedValue'}
job_internal_valid:
- parameter: true
- parameter: false
job_internal_invalid:
- {}
landing_request_valid:
- {}
- parameter: true
- parameter: false
landing_request_invalid:
- parameter: "true"
- parameter: "5"
landing_request_internal_valid:
- {}
- parameter: true
- parameter: false
landing_request_internal_invalid:
- parameter: "moo"
- parameter: "true"
- parameter: "5"
workflow_step_valid:
- parameter: True
- {}
workflow_step_invalid:
- parameter: "true"
- parameter: mytrue
- parameter: null
workflow_step_linked_valid:
- parameter: True
- {}
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- parameter: "true"
- parameter: {__class__: 'ConnectedValue3'}
gx_int_optional:
request_valid:
- parameter: 5
- parameter: null
- {}
request_invalid:
- parameter: "5"
- parameter: "None"
- parameter: "null"
- parameter: [5]
- parameter: {__class__: 'ConnectedValue'}
job_internal_valid:
- parameter: 5
- parameter: null
job_internal_invalid:
- {}
test_case_xml_valid:
- parameter: null
landing_request_valid:
- {}
- parameter: 5
- parameter: null
landing_request_invalid:
- parameter: "moo"
- parameter: "5"
landing_request_internal_valid:
- {}
- parameter: 5
- parameter: null
landing_request_internal_invalid:
- parameter: "moo"
- parameter: "5"
workflow_step_valid:
- parameter: 5
- parameter: null
- {}
workflow_step_invalid:
- parameter: "5"
- parameter: "None"
- parameter: "null"
- parameter: [5]
workflow_step_linked_valid:
- parameter: 5
- parameter: null
- {}
- parameter: {__class__: 'ConnectedValue'}
gx_int_required: &gx_int_required
request_valid:
- parameter: 5
- parameter: 6
request_invalid:
- {}
- parameter: null
- parameter: "null"
- parameter: "None"
- parameter: { 5 }
- parameter: {__class__: 'ConnectedValue'}
job_internal_valid:
- parameter: 5
job_internal_invalid:
- {}
# and actual request will require a value but the landing only needs to specify parameters
# of interest - forcing users to make the rest of the selections.
landing_request_valid:
- {}
- parameter: 5
landing_request_invalid:
- parameter: "moo"
- parameter: "5"
landing_request_internal_valid:
- {}
- parameter: 5
landing_request_internal_invalid:
- parameter: "moo"
- parameter: "5"
gx_int_required_via_empty_string:
<<: *gx_int_required
gx_int_validation_range:
request_valid:
- parameter: 1
- parameter: 9
request_invalid:
- parameter: {}
- parameter: {__class__: 'ConnectedValue'}
- parameter: -1
- parameter: 11
- parameter: 10
workflow_step_linked_valid:
- parameter: {__class__: 'ConnectedValue'}
gx_int_min_max:
request_valid:
- parameter: 1
- parameter: 9
- parameter: 10
request_invalid:
- parameter: -1
- parameter: 11
workflow_step_linked_valid:
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- parameter: -1
gx_text_regex_validation:
request_valid:
- parameter: acgt
- parameter: a
- parameter: aaaggttac
request_invalid:
- parameter: acgu
- parameter: nucleic
workflow_step_linked_valid:
- parameter: {__class__: 'ConnectedValue'}
gx_text_expression_validation:
request_valid:
- parameter: the code was foobar
- parameter: foobar
request_invalid:
- parameter: the code was not foo bar
- parameter: ''
workflow_step_linked_valid:
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- parameter: ''
gx_text_empty_validation:
request_valid:
- parameter: foobar
- {}
request_invalid:
- parameter: ''
job_internal_valid:
- parameter: foobar
job_internal_invalid:
- {}
- parameter: ''
workflow_step_linked_valid:
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- parameter: ''
gx_text:
request_valid: &gx_text_request_valid
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
- {}
# need to explicitly mark these as non-optional
- parameter: null
request_invalid: &gx_text_request_invalid
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
- parameter: {__class__: 'ConnectedValue'}
request_internal_valid:
*gx_text_request_valid
request_internal_invalid:
*gx_text_request_invalid
request_internal_dereferenced_valid:
*gx_text_request_valid
request_internal_dereferenced_invalid:
*gx_text_request_invalid
landing_request_valid:
*gx_text_request_valid
landing_request_invalid:
*gx_text_request_invalid
landing_request_internal_valid:
*gx_text_request_valid
landing_request_internal_invalid:
*gx_text_request_invalid
job_internal_valid:
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
- parameter: null
job_internal_invalid:
- {}
- parameter: { "moo": "cow" }
workflow_step_valid:
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
- {}
- parameter: null
workflow_step_invalid:
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_valid:
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
- {}
- parameter: {__class__: 'ConnectedValue'}
- parameter: null
workflow_step_linked_invalid:
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
- parameter: {"class": 'ConnectedValue'}
gx_text_optional:
request_valid:
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
- parameter: null
request_invalid:
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
landing_request_valid: &gx_text_optional_landing_request_valid
- parameter: "moo cow"
- {}
- parameter: null
landing_request_invalid: &gx_text_optional_landing_request_invalid
- parameter: 5
- parameter: 6
landing_request_internal_valid:
*gx_text_optional_landing_request_valid
landing_request_internal_invalid:
*gx_text_optional_landing_request_invalid
workflow_step_valid:
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
- parameter: null
workflow_step_invalid:
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_valid:
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
- parameter: null
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
gx_text_length_validation:
request_valid:
- parameter: "mytext"
- parameter: "mytext123"
request_invalid:
- parameter: "s" # too short
- parameter: "mytext1231231231sd" # too long
gx_text_length_validation_negate:
request_valid:
- parameter: "m"
- parameter: "mytext123mocowdowees"
request_invalid:
- parameter: "goldilocks"
gx_select:
request_valid:
- parameter: "--ex1"
- parameter: "ex2"
# see API Tests -> test_tools.py -> test_select_first_by_default
- {}
request_invalid:
# Not allowing selecting booleans by truevalue/falsevalue - don't allow selecting
# selects by label.
- parameter: "Ex1"
# Do not allow lists for non-multi-selects
- parameter: ["ex2"]
- parameter: null
- parameter: {}
- parameter: 5
request_internal_valid: &gx_select_request_valid
- parameter: "--ex1"
- parameter: "ex2"
request_internal_invalid: &gx_select_request_invalid
- parameter: {}
request_internal_dereferenced_valid:
*gx_select_request_valid
request_internal_dereferenced_invalid:
*gx_select_request_invalid
landing_request_valid: &gx_select_landing_request_valid
- parameter: "--ex1"
- parameter: "ex2"
- {}
landing_request_invalid: &gx_select_landing_request_invalid
- parameter: 5
- parameter: null
- parameter: "Ex1"
landing_request_internal_valid:
*gx_select_landing_request_valid
landing_request_internal_invalid:
*gx_select_landing_request_invalid
job_internal_valid:
- parameter: '--ex1'
- parameter: 'ex2'
job_internal_invalid:
- {}
test_case_xml_valid:
- parameter: 'ex2'
- parameter: '--ex1'
- {}
test_case_xml_invalid:
- parameter: {}
- parameter: null
workflow_step_valid:
- parameter: "--ex1"
- {}
workflow_step_invalid:
- parameter: 'foobar'
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_valid:
- parameter: "--ex1"
- parameter: {__class__: 'ConnectedValue'}
- {}
workflow_step_linked_invalid:
- parameter: 'foobar'
- parameter: null
gx_select_optional:
request_valid:
- parameter: "--ex1"
- parameter: "ex2"
- parameter: null
- {}
request_invalid:
# Not allowing selecting booleans by truevalue/falsevalue - don't allow selecting
# selects by label.
- parameter: "Ex1"
# Do not allow lists for non-multi-selects
- parameter: ["ex2"]
- parameter: {}
- parameter: 5
landing_request_valid: &gx_select_optional_landing_request_valid
- parameter: "--ex1"
- parameter: "ex2"
- parameter: null
- {}
landing_request_invalid: &gx_select_optional_landing_request_invalid
- parameter: 5
- parameter: "Ex1"
- parameter: {}
landing_request_internal_valid:
*gx_select_optional_landing_request_valid
landing_request_internal_invalid:
*gx_select_optional_landing_request_invalid
job_internal_valid:
- parameter: '--ex1'
- parameter: 'ex2'
- parameter: null
job_internal_invalid:
- parameter: 'invalid'
- {}
test_case_xml_valid:
- {}
workflow_step_valid:
- parameter: "--ex1"
- parameter: "ex2"
- parameter: null
- {}
workflow_step_invalid:
- parameter: "Ex1"
- parameter: ["ex2"]
- parameter: {}
- parameter: 5
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_valid:
- parameter: "--ex1"
- parameter: "ex2"
- parameter: null
- {}
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- parameter: "Ex1"
- parameter: ["ex2"]
- parameter: {}
- parameter: 5
gx_select_multiple:
request_valid:
- parameter: ["--ex1"]
- parameter: ["ex2"]
# ugh... but these aren't optional...
- parameter: null
- {}
request_invalid:
- parameter: ["Ex1"]
- parameter: {}
- parameter: 5
landing_request_valid: &gx_select_multiple_landing_request_valid
- parameter: ["--ex1"]
- parameter: ["ex2"]
- parameter: null
- {}
landing_request_invalid: &gx_select_multiple_landing_request_invalid
- parameter: 5
- parameter: ["Ex1"]
- parameter: {}
- parameter: false
landing_request_internal_valid:
*gx_select_multiple_landing_request_valid
landing_request_internal_invalid:
*gx_select_multiple_landing_request_invalid
workflow_step_valid:
- parameter: ["--ex1"]
- parameter: ["ex2"]
- {} # could come in linked...
# ... hmmm? this should maybe be invalid right?
- parameter: null
job_internal_valid:
- parameter: ["--ex1"]
# itd be coool if this was forced to empty list - probably breaks backward compat though...
- parameter: null
job_internal_invalid:
- {}
- parameter: "--ex1"
workflow_step_invalid:
- parameter: ["Ex1"]
- parameter: {}
- parameter: 5
- parameter: {__class__: 'ConnectedValue'}
- parameter: [{__class__: 'ConnectedValue'}]
workflow_step_linked_valid:
- parameter: ["--ex1"]
- parameter: ["ex2"]
- parameter: [{__class__: 'ConnectedValue'}]
- {}
- parameter: null
workflow_step_linked_invalid:
- parameter: ["Ex1"]
- parameter: {}
- parameter: 5
# might be wrong? I guess we would expect the semantic of this to do like a map-over
# but as far as I am aware that is not implemented https://github.com/galaxyproject/galaxy/issues/18541
- parameter: {__class__: 'ConnectedValue'}
gx_select_multiple_optional:
request_valid:
- parameter: ["--ex1"]
- parameter: ["ex2"]
- {}
- parameter: null
request_invalid:
- parameter: ["Ex1"]
- parameter: {}
- parameter: 5
gx_select_no_options_validation:
job_internal_valid:
- parameter: "--ex1"
job_internal_invalid:
- {}
gx_genomebuild:
request_valid:
- parameter: hg19
- parameter: hg18
# implicitly selects top option "?"
- {}
request_invalid:
- parameter: null
- parameter: 9
landing_request_valid: &gx_genomebuild_landing_request_valid
- parameter: hg19
- parameter: hg18
- {}
landing_request_invalid: &gx_genomebuild_landing_request_invalid
- parameter: null
- parameter: 9
landing_request_internal_valid:
*gx_genomebuild_landing_request_valid
landing_request_internal_invalid:
*gx_genomebuild_landing_request_invalid
job_internal_valid:
- parameter: hg19
job_internal_invalid:
- {}
gx_genomebuild_optional:
request_valid:
- parameter: hg19
- parameter: hg18
# these yield actual null parameters instead of ?
- {}
- parameter: null
request_invalid:
- parameter: 8
- parameter: true
landing_request_valid: &gx_genomebuild_optional_landing_request_valid
- parameter: hg19
- parameter: hg18
- {}
- parameter: null
landing_request_invalid: &gx_genomebuild_optional_landing_request_invalid
- parameter: 9
landing_request_internal_valid:
*gx_genomebuild_optional_landing_request_valid
landing_request_internal_invalid:
*gx_genomebuild_optional_landing_request_invalid
job_internal_valid:
- parameter: null
job_internal_invalid:
- {}
gx_genomebuild_multiple:
request_valid:
- parameter: ["hg18", hg19"]
request_invalid:
- parameter: 6
# DIVERGES_FROM_CURRENT_API
- parameter: null
gx_directory_uri:
request_valid:
- parameter: "gxfiles://foobar/"
- parameter: "gxfiles://foobar"
request_invalid:
- parameter: "justsomestring"
- parameter: true
- parameter: null
landing_request_valid: &gx_directory_uri_landing_request_valid
- parameter: "gxfiles://foobar/"
- parameter: "gxfiles://foobar"
- {}
landing_request_invalid: &gx_directory_uri_landing_request_invalid
- parameter: true
- parameter: null
- parameter: 8
landing_request_internal_valid:
*gx_directory_uri_landing_request_valid
landing_request_internal_invalid:
*gx_directory_uri_landing_request_invalid
job_internal_valid:
- parameter: "gxfiles://foobar/"
- parameter: "gxfiles://foobar"
job_internal_invalid:
- parameter: "justsomestring"
- parameter: true
- parameter: null
gx_directory_uri_validation:
request_valid:
- parameter: "gxfiles://mycoolsource/api/index.json"
request_invalid:
- parameter: {__class__: 'ConnectedValue'}
- parameter: "gxfiles://tooshort/index.json"
- parameter: "gxfiles://mycoolsource/api/wrongex.js"
- parameter: "gxfiles://mycoolsource/badexp.json"
workflow_step_linked_valid:
- parameter: {__class__: 'ConnectedValue'}
- parameter: "gxfiles://mycoolsource/api/index.json"
workflow_step_linked_invalid:
- parameter: "gxfiles://tooshort/index.json"
- parameter: "gxfiles://mycoolsource/api/wrongex.js"
- parameter: "gxfiles://mycoolsource/badexp.json"
gx_hidden:
request_valid:
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
# it will use a default if value is set in definition and no value supplied (see hidden_param.xml)
- {}
request_invalid:
- parameter: null
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
landing_request_valid: &gx_hidden_landing_request_valid
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
- {}
landing_request_invalid: &gx_hidden_landing_request_invalid
- parameter: null
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
landing_request_internal_valid:
*gx_hidden_landing_request_valid
landing_request_internal_invalid:
*gx_hidden_landing_request_invalid
job_internal_valid:
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
job_internal_invalid:
- {}
workflow_step_valid:
- parameter: moocow
- {}
workflow_step_invalid:
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
workflow_step_linked_valid:
- parameter: moocow
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- parameter: 5
- parameter: null
gx_hidden_optional:
request_valid:
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
- parameter: null
request_invalid:
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
landing_request_valid: &gx_hidden_optional_landing_request_valid
- parameter: moocow
- parameter: 'some spaces'
- parameter: ''
- {}
- parameter: null
landing_request_invalid: &gx_hidden_optional_landing_request_invalid
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
landing_request_internal_valid:
*gx_hidden_optional_landing_request_valid
landing_request_internal_invalid:
*gx_hidden_optional_landing_request_invalid
workflow_step_valid:
- parameter: moocow
- {}
- parameter: null
workflow_step_invalid:
- parameter: 5
- parameter: {}
- parameter: { "moo": "cow" }
workflow_step_linked_valid:
- parameter: moocow
- parameter: {__class__: 'ConnectedValue'}
- parameter: null
workflow_step_linked_invalid:
- parameter: 5
gx_hidden_validation:
request_valid:
- parameter: "http://mycoolservice.com/api/index.json"
request_invalid:
- parameter: {__class__: 'ConnectedValue'}
- parameter: "http://mycoolservice.com/index.json"
- parameter: "http://mycoolservice.com/api/wrongex.js"
- parameter: "http://mycoolservice.com/badexp.json"
workflow_step_linked_valid:
- parameter: {__class__: 'ConnectedValue'}
- parameter: "http://mycoolservice.com/api/index.json"
workflow_step_linked_invalid:
- parameter: "http://mycoolservice.com/index.json"
- parameter: "http://mycoolservice.com/api/wrongex.js"
- parameter: "http://mycoolservice.com/badexp.json"
gx_float:
request_valid:
- parameter: 5
- parameter: 5.0
- parameter: 5.0001
# galaxy parameters created with a value - so doesn't need to appear in request even though non-optional
- {}
request_invalid:
- parameter: null
- parameter: "5"
- parameter: "5.0"
- parameter: { "moo": "cow" }
job_internal_valid:
- parameter: 5
- parameter: 5.0
job_internal_invalid:
- {}
- parameter: "5"
- parameter: "5.0"
- parameter: null
landing_request_valid:
- {}
- parameter: 5
- parameter: 5.0
landing_request_invalid:
- parameter: "moo"
- parameter: "5"
- parameter: "5.0"
landing_request_internal_valid:
- {}
- parameter: 5
- parameter: 5.0
landing_request_internal_invalid:
- parameter: "moo"
- parameter: "5"
- parameter: "5.0"
test_case_xml_valid:
- parameter: 5
- parameter: 5.0
- {}
test_case_xml_invalid:
- parameter: null
- parameter: "5.0"
- parameter: "5.1"
workflow_step_valid:
- parameter: 5
- parameter: 5.0
- {}
workflow_step_invalid:
- parameterx: 5
- parameter: 'foobar'
workflow_step_linked_valid:
- parameter: 5
- parameter: 5.4
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- parameter: null
- parameter: 'foobar'
- parameter: {__class__: 'ConnectedValue2'}
gx_float_optional:
request_valid:
- parameter: 5
- parameter: 5.0
- parameter: 5.0001
- parameter: null
- {}
request_invalid:
- parameter: "5"
- parameter: "5.0"
- parameter: {}
- parameter: { "moo": "cow" }
job_internal_valid:
- parameter: 5
- parameter: 5.0
- parameter: null
job_internal_invalid:
- {}
- parameter: "5"
- parameter: "5.0"
landing_request_valid:
- {}
- parameter: 5
- parameter: 5.0
- parameter: null
landing_request_invalid:
- parameter: "moo"
- parameter: "5"
- parameter: "5.0"
landing_request_internal_valid:
- {}
- parameter: 5
- parameter: 5.0
- parameter: null
landing_request_internal_invalid:
- parameter: "moo"
- parameter: "5"
- parameter: "5.0"
test_case_xml_valid:
- parameter: 5
- parameter: 5.0
- {}
- parameter: null
test_case_xml_invalid:
- parameter: "5.0"
- parameter: "5.1"
workflow_step_valid:
- parameter: 5
- parameter: 5.0
- {}
workflow_step_invalid:
- parameterx: 5
- parameter: 'foobar'
workflow_step_linked_valid:
- parameter: 5
- parameter: 5.4
- parameter: {__class__: 'ConnectedValue'}
- parameter: null
workflow_step_linked_invalid:
- parameter: 'foobar'
- parameter: {__class__: 'ConnectedValue2'}
gx_float_validation_range:
request_valid:
- parameter: 0.1
- parameter: 9.7
- parameter: 5
request_invalid:
- parameter: 10
- parameter: 0
- parameter: 9.8 # endpoint not included because specified in validator
gx_float_min_max:
request_valid:
- parameter: 0.1
- parameter: 9.7
- parameter: 5
- parameter: 9.8 # endpoint implicitly included when max attribute set on param
request_invalid:
- parameter: 10
- parameter: 0
gx_color:
request_valid:
- parameter: '#aabbcc'
- parameter: '#000000'
request_invalid:
- parameter: null
- parameter: {}
- parameter: '#abcd'
workflow_step_valid:
- parameter: '#aabbcc'
- parameter: '#000000'
- {}
workflow_step_invalid:
- parameterx: '#aabbcc'
- parameter: 'foobar'
- parameter: 5
workflow_step_linked_valid:
- parameter: '#aabbcc'
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- parameter: null
- parameter: 'foobar'
- parameter: 5
- parameter: {__class__: 'ConnectedValue2'}
gx_data:
request_valid:
- parameter: {src: hda, id: abcdabcd}
- parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", "ext": "txt"}
- parameter: {__class__: "Batch", values: [{src: hdca, id: abcdabcd}]}
request_invalid:
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- parameter: {src: hda, id: 7}
- parameter: {src: hdca, id: abcdabcd}
- parameter: null
- parameter: {src: fooda, id: abcdabcd}
- parameter: {id: abcdabcd}
- parameter: {}
- {}
- parameter: true
- parameter: 5
- parameter: "5"
request_internal_valid:
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- parameter: {src: hda, id: 5}
- parameter: {src: hda, id: 0}
- parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"}
request_internal_invalid:
- parameter: {__class__: "Batch", values: [{src: hdca, id: abcdabcd}]}
- parameter: {src: hda, id: abcdabcd}
- parameter: {}
- {}
- parameter: true
- parameter: 5
- parameter: "5"
request_internal_dereferenced_valid:
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- parameter: {src: hda, id: 5}
- parameter: {src: hda, id: 0}
request_internal_dereferenced_invalid:
# the difference between request internal and request internal dereferenced is that these have been converted
# to datasets.
- parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"}
landing_request_valid:
- parameter: {src: hda, id: abcdabcd}
- parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", "ext": "txt"}
- parameter: {__class__: "Batch", values: [{src: hdca, id: abcdabcd}]}
- {}
- parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", "ext": "txt"}
landing_request_invalid:
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- parameter: {src: hda, id: 5}
- parameter: {src: hda, id: 0}
landing_request_internal_valid:
- parameter: {src: hda, id: 5}
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- {}
- parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", "ext": "txt"}
landing_request_internal_invalid:
- parameter: {src: hda, id: abcdabcd}
- parameter: {__class__: "Batch", values: [{src: hdca, id: abcdabcd}]}
job_internal_valid:
- parameter: {src: hda, id: 7}
job_internal_invalid:
# valid request but after the job has been created, map/reduce concepts should have been
# expanded out.
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- parameter: {src: hda, id: abcdabcd}
# url parameters should be dereferrenced into datasets by this point...
- parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", "ext": "txt"}
- {}
test_case_xml_valid:
- parameter: {class: File, path: foo.bed}
- parameter: {class: File, location: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt"}
test_case_xml_invalid:
- parameter: foo.bed
- parameter: null
- {}
workflow_step_valid:
- {}
workflow_step_invalid:
- {src: hda, id: abcdabcd}
- {src: hda, id: 7}
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_valid:
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- {}
- {src: hda, id: abcdabcd}
- {src: hda, id: 7}
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- parameter: {__class__: 'ConnectedValueX'}
gx_data_optional:
request_valid:
- parameter: {src: hda, id: abcdabcd}
- parameter: null
- {}
request_invalid:
- parameter: {src: hda, id: 5}
- parameter: {src: hdca, id: abcdabcd}
- parameter: {src: fooda, id: abcdabcd}
- parameter: {id: abcdabcd}
- parameter: {}
- parameter: true
- parameter: 5
- parameter: "5"
request_internal_valid:
- parameter: {src: hda, id: 5}
- parameter: null
- {}
request_internal_invalid:
- parameter: {src: hda, id: abcdabcd}
- parameter: {src: hdca, id: abcdabcd}
- parameter: {src: fooda, id: abcdabcd}
- parameter: {id: abcdabcd}
- parameter: {}
- parameter: true
- parameter: 5
- parameter: "5"
job_internal_valid:
- parameter: null
- parameter: {src: hda, id: 5}
job_internal_invalid:
- {}
workflow_step_valid:
- {}
workflow_step_invalid:
- {src: hda, id: abcdabcd}
- {src: hda, id: 7}
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_valid:
- {}
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- {src: hda, id: abcdabcd}
- {src: hda, id: 7}
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- parameter: {__class__: 'ConnectedValueX'}
test_case_xml_valid:
- {}
- parameter: {class: "File", path: "1.bed"}
test_case_xml_invalid:
- parameter: {class: "NotAFile", path: "1.bed"}
gx_data_multiple:
request_valid:
- parameter: {src: hda, id: abcdabcd}
- parameter: {src: hdca, id: abcdabcd}
- parameter: [{src: hda, id: abcdabcd}]
- parameter: [{src: hdca, id: abcdabcd}]
- parameter: [{src: hdca, id: abcdabcd}, {src: hda, id: abcdabcd}]
request_invalid:
- parameter: {src: hda, id: 5}
- parameter: [{src: hdca, id: 5}, {src: hda, id: 5}]
- parameter: null
- parameter: {}
- {}
- parameter: true
- parameter: 5
- parameter: "5"
request_internal_valid:
- parameter: {src: hda, id: 5}
- parameter: {src: hdca, id: 5}
- parameter: [{src: hda, id: 5}]
- parameter: [{src: hdca, id: 5}]
- parameter: [{src: hdca, id: 5}, {src: hda, id: 5}]
- parameter: [{src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"}]
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
request_internal_invalid:
- parameter: {src: hda, id: abcdabcd}
- parameter: [{src: hdca, id: abcdabcd}, {src: hda, id: abcdabcd}]
- parameter: null
- parameter: {}
- {}
- parameter: true
- parameter: 5
- parameter: "5"
request_internal_dereferenced_valid:
- parameter: {__class__: "Batch", values: [{src: hdca, id: 5}]}
- parameter: [{src: hda, id: 5}]
- parameter: [{src: hda, id: 0}]
request_internal_dereferenced_invalid:
# the difference between request internal and request internal dereferenced is that these have been converted
# to datasets.
- parameter: [{src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"}]
landing_request_valid:
- parameter: [{src: hda, id: abcdabcd}]
- {}
landing_request_invalid:
- parameter: [{src: hda, id: 6}]
landing_request_internal_valid:
- parameter: [{src: hda, id: 6}]
- {}
landing_request_internal_invalid:
- parameter: [{src: hda, id: abcdabcd}]
job_internal_valid:
- parameter: {src: hda, id: 5}
- parameter: [{src: hda, id: 5}, {src: hda, id: 6}]
job_internal_invalid:
- {}
gx_data_multiple_optional:
request_valid:
- parameter: {src: hda, id: abcdabcd}
- parameter: {src: hdca, id: abcdabcd}
- parameter: [{src: hda, id: abcdabcd}]
- parameter: [{src: hdca, id: abcdabcd}]
- parameter: [{src: hdca, id: abcdabcd}, {src: hda, id: abcdabcd}]
- parameter: null
- {}
- parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"}
- parameter: [{src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"}]
request_invalid:
- parameter: {src: hda, id: 5}
- parameter: {}
- parameter: true
- parameter: 5
- parameter: "5"
request_internal_valid:
- parameter: {src: hda, id: 5}
- parameter: {src: hdca, id: 5}
- parameter: [{src: hda, id: 5}]
- parameter: [{src: hdca, id: 5}]
- parameter: [{src: hdca, id: 5}, {src: hda, id: 5}]
- parameter: null
- {}
- parameter: [{src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"}]
request_internal_invalid:
- parameter: {src: hda, id: abcdabcd}
- parameter: {}
- parameter: true
- parameter: 5
- parameter: "5"
request_internal_dereferenced_valid:
- parameter: {src: hda, id: 5}
request_internal_dereferenced_invalid:
- parameter: {src: hda, id: abcdabcd}
- parameter: [{src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"}]
- parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"}
job_internal_valid:
- parameter: {src: hda, id: 5}
- parameter: [{src: hda, id: 5}, {src: hda, id: 6}]
- parameter: null
job_internal_invalid:
- {}
gx_data_collection:
request_valid:
- parameter: {src: hdca, id: abcdabcd}
request_invalid:
- parameter: {src: hdca, id: 7}
- parameter: null
- parameter: {src: fooda, id: abcdabcd}
- parameter: {id: abcdabcd}
- parameter: {}
- {}
- parameter: true
- parameter: 5
- parameter: "5"
request_internal_valid:
- parameter: {src: hdca, id: 5}
request_internal_invalid:
- parameter: {src: hdca, id: abcdabcd}
- parameter: null
- parameter: {src: fooda, id: abcdabcd}
- parameter: {id: abcdabcd}
- parameter: {}
- {}
- parameter: true
- parameter: 5
- parameter: "5"
request_internal_dereferenced_valid:
- parameter: {src: hdca, id: 5}
request_internal_dereferenced_invalid:
- parameter: {src: hdca, id: abcdabcd}
landing_request_valid:
- parameter: {src: hdca, id: abcdabcd}
- {}
landing_request_invalid:
- parameter: {src: hdca, id: 5}
- parameter: [{src: hdca, id: abcdabcd}]
landing_request_internal_valid:
- parameter: {src: hdca, id: 5}
- {}
landing_request_internal_invalid:
- parameter: {src: hdca, id: abcdabcd}
- parameter: [{src: hdca, id: abcdabcd}]
workflow_step_valid:
- {}
workflow_step_invalid:
- parameter: {src: hdca, id: abcdabcd}
- parameter: 5
- parameter: {}
workflow_step_linked_valid:
- parameter: {__class__: 'ConnectedValue'}
workflow_step_linked_invalid:
- {}
test_case_xml_valid:
- parameter: {class: Collection, collection_type: list, elements: []}
- parameter:
class: Collection
collection_type: list
elements:
- {identifier: "first", path: "1.bed", class: File}
- {identifier: "second", path: "2.bed", class: File}
- parameter:
name: "A nested listed with a name"
class: Collection
collection_type: "list:paired"
elements:
- class: Collection
collection_type: paired
identifier: first_el
elements:
- {identifier: "forward", path: "1_f.bed", class: File}
- {identifier: "reverse", path: "1_r.bed", class: File}
test_case_xml_invalid:
# collection type is required
- parameter: {class: Collection, elements: []}
- parameter:
class: Collection
collection_type: list
elements:
- {identifier: "first", path: "1.bed", class: NotAFile}
- parameter:
class: Collection
collection_type: list
elements:
- {identifier: "first", pathmisspelled: "1.bed", class: File}
- parameter:
name: "A nested listed with a name"
class: Collection
collection_type: "list:paired"
elements:
- class: Collection
collection_type: paired
identifier: first_el
elements:
- {identifier: "forward", path: "1_f.bed", class: File}
- {identifier: "reverse", path: "1_r.bed", class: FileX}
job_internal_valid:
- parameter: {src: hdca, id: 5}
job_internal_invalid:
- parameter: {src: hdca, id: abcdabcd}
- parameter: null
- {}
gx_data_collection_optional:
request_valid:
- parameter: {src: hdca, id: abcdabcd}
- parameter: null
- {}
request_invalid:
- parameter: {src: hdca, id: 7}
- parameter: {src: fooda, id: abcdabcd}
- parameter: {id: abcdabcd}
- parameter: true
- parameter: 5
- parameter: "5"
- parameter: {}
request_internal_valid:
- parameter: {src: hdca, id: 5}
- parameter: null
- {}
request_internal_invalid:
- parameter: {src: hdca, id: abcdabcd}
- parameter: {src: fooda, id: abcdabcd}
- parameter: {id: abcdabcd}
- parameter: true
- parameter: 5
- parameter: "5"
- parameter: {}
landing_request_valid:
- parameter: {src: hdca, id: abcdabcd}
- parameter: null
- {}
landing_request_invalid:
- parameter: {src: hdca, id: 5}
- parameter: [{src: hdca, id: abcdabcd}]
landing_request_internal_valid:
- parameter: {src: hdca, id: 5}
- parameter: null
- {}
landing_request_internal_invalid:
- parameter: {src: hdca, id: abcdabcd}
- parameter: [{src: hdca, id: abcdabcd}]
job_internal_valid:
- parameter: {src: hdca, id: 5}
- parameter: null
job_internal_invalid:
- parameter: {src: hdca, id: abcdabcd}
- {}
gx_conditional_boolean:
request_valid:
- conditional_parameter:
test_parameter: true
integer_parameter: 1
- conditional_parameter:
test_parameter: true
integer_parameter: 2
- conditional_parameter:
test_parameter: false
boolean_parameter: true
# Test parameter has default and so does it "case" - so this should be fine
- {}
# The boolean_parameter is optional so just setting a test_parameter is fine
- conditional_parameter:
test_parameter: true
- conditional_parameter:
test_parameter: false
# if test parameter is missing, it should be false in this case (TODO: test inverse)
# so boolean_parameter or either type or missing should be fine.
- conditional_parameter:
boolean_parameter: true
- conditional_parameter:
boolean_parameter: false
- conditional_parameter: {}
request_invalid:
- conditional_parameter:
test_parameter: false
integer_parameter: 1
- conditional_parameter:
test_parameter: null
- conditional_parameter:
test_parameter: true
integer_parameter: "1"
- conditional_parameter:
test_parameter: true
integer_parameter: null
# if test parameter is missing, it should be false in this case
# in that case having an integer_parameter is not acceptable.
- conditional_parameter:
integer_parameter: 5
landing_request_valid: &gx_conditional_boolean_landing_request_valid
- {}
landing_request_invalid: &gx_conditional_boolean_landing_request_invalid
- conditional_parameter:
test_parameter: false
integer_parameter: 1
landing_request_internal_valid:
*gx_conditional_boolean_landing_request_valid
landing_request_internal_invalid:
*gx_conditional_boolean_landing_request_invalid
job_internal_valid:
- conditional_parameter:
test_parameter: true
integer_parameter: 1
- conditional_parameter:
test_parameter: false
boolean_parameter: false
job_internal_invalid:
# missing defaults are fine in request, but job_internal records parameters used,
# must include defaults.
- {}
- conditional_parameter: {}
- conditional_parameter:
test_parameter: true
- conditional_parameter:
boolean_parameter: true
gx_conditional_boolean_checked:
request_valid:
# if no test parameter is defined, the default is 'checked' so the test
# parameter is true.
- conditional_parameter:
integer_parameter: 5
- conditional_parameter:
integer_parameter: 0
request_invalid:
# if test parameter is missing, it should be true (it is 'checked') in this case
# in that case having a boolean_parameter is not acceptable.
- conditional_parameter:
boolean_parameter: false
job_internal_invalid:
- conditional_parameter: {}
- {}
gx_conditional_conditional_boolean:
request_valid:
- outer_conditional_parameter:
outer_test_parameter: false
boolean_parameter: true
- outer_conditional_parameter:
outer_test_parameter: true
inner_conditional_parameter:
inner_test_parameter: true
integer_parameter: 5
- outer_conditional_parameter:
outer_test_parameter: true
inner_conditional_parameter:
inner_test_parameter: false
boolean_parameter: true
# Test parameter has default and so does it "case" - so this should be fine
- {}
- outer_conditional_parameter: {}
- outer_conditional_parameter:
outer_test_parameter: true
inner_conditional_parameter: {}
- outer_conditional_parameter:
outer_test_parameter: true
request_invalid:
- outer_conditional_parameter:
outer_test_parameter: true
boolean_parameter: true
- outer_conditional_parameter:
outer_test_parameter: true
inner_conditional_parameter:
inner_test_parameter: false
integer_parameter: 5
- outer_conditional_parameter:
outer_test_parameter: true
inner_conditional_parameter:
inner_test_parameter: true
integer_parameter: true
job_internal_invalid:
- {}
- outer_conditional_parameter: {}
- outer_conditional_parameter: {}
- outer_conditional_parameter:
outer_test_parameter: true
inner_conditional_parameter: {}
- outer_conditional_parameter:
outer_test_parameter: true
gx_conditional_select:
request_valid:
- conditional_parameter:
test_parameter: a
integer_parameter: 1
- conditional_parameter:
test_parameter: a
integer_parameter: 2
- conditional_parameter:
test_parameter: b
boolean_parameter: true
# Test parameter has default and so does it "case" - so this should be fine
- {}
# # The select is optional so just setting a test_parameter is fine
- conditional_parameter:
integer_parameter: 1
request_invalid:
- conditional_parameter:
test_parameter: b
integer_parameter: 1
- conditional_parameter:
test_parameter: null
- conditional_parameter:
test_parameter: a
integer_parameter: "1"
- conditional_parameter:
test_parameter: b
integer_parameter: null
# if test parameter is missing, it should be false in this case
# in that case having an integer_parameter is not acceptable.
- conditional_parameter:
boolean_parameter: true
job_internal_valid:
- conditional_parameter:
test_parameter: a
integer_parameter: 1
- conditional_parameter:
test_parameter: b
boolean_parameter: true
job_internal_invalid:
- {}
- conditional_parameter:
integer_parameter: 1
- conditional_parameter: null
- conditional_parameter: {}
gx_repeat_boolean:
request_valid:
- parameter:
- { boolean_parameter: true }
- parameter: []
- parameter:
- { boolean_parameter: true }
- { boolean_parameter: false }
- parameter: [{}]
- parameter: [{}, {}]
request_invalid:
- parameter:
- { boolean_parameter: 4 }
- parameter:
- { foo: 4 }
- parameter:
- { boolean_parameter: true }
- { boolean_parameter: false }
- { boolean_parameter: 4 }
- parameter: 5
landing_request_valid: &gx_repeat_boolean_landing_request_valid
- {}
- parameter:
- { boolean_parameter: true }
- { boolean_parameter: false }
- parameter: [{}]
- parameter: [{}, {}]
landing_request_invalid: &gx_repeat_boolean_landing_request_invalid
- parameter:
- { boolean_parameter: 4 }
landing_request_internal_valid:
*gx_repeat_boolean_landing_request_valid
landing_request_internal_invalid:
*gx_repeat_boolean_landing_request_invalid
job_internal_valid:
- parameter:
- { boolean_parameter: true }
- parameter: []
- parameter:
- { boolean_parameter: true }
- { boolean_parameter: false }
job_internal_invalid:
- parameter: [{}]
- parameter: [{}, {}]
gx_repeat_boolean_min:
request_valid:
- parameter:
- { boolean_parameter: true }
- { boolean_parameter: false }
- parameter: [{}, {}]
# even though a minimum is set here - each instance of the repeat does not require a value
# so we can skip the repeat all together and Galaxy I think will just use the defaults at
# each stage - see API tests -> test_tool_execute.py -> test_optional_repeats_with_mins_filled_id
- {}
request_invalid:
- parameter: []
- parameter: [{}]
- parameter:
- { boolean_parameter: true }
- parameter:
- { boolean_parameter: 4 }
- parameter:
- { foo: 4 }
- parameter:
- { boolean_parameter: true }
- { boolean_parameter: false }
- { boolean_parameter: 4 }
- parameter: 5
job_internal_valid:
- parameter:
- { boolean_parameter: true }
- { boolean_parameter: false }
job_internal_invalid:
- parameter: [{}, {}]
- parameter: []
test_case_xml_valid:
- {}
gx_repeat_data:
request_valid:
- parameter:
- { data_parameter: {src: hda, id: abcdabcd} }
- { data_parameter: {src: hda, id: abcdabcd} }
- parameter: []
- parameter:
- { data_parameter: {src: hda, id: abcdabcd} }
# an empty repeat is fine
- {}
- parameter:
- { data_parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"} }
request_invalid:
- parameter: [{}, {}]
- parameter: [{}]
- parameter: 5
request_internal_valid:
- parameter:
- { data_parameter: { src: hda, id: 5 } }
- parameter:
- { data_parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"} }
request_internal_invalid:
- parameter:
- { data_parameter: { src: hda, id: abcdabcd } }
landing_request_valid: &gx_repeat_data_landing_request_valid
- {}
# unlike above - in landing mode all parameters are optional so it is find to have an unset data parameters
- parameter: [{}]
landing_request_invalid: &gx_repeat_data_landing_request_invalid
- parameter: 5
landing_request_internal_valid:
*gx_repeat_data_landing_request_valid
landing_request_internal_invalid:
*gx_repeat_data_landing_request_invalid
job_internal_valid:
- parameter:
- { data_parameter: { src: hda, id: 5 } }
job_internal_invalid:
- parameter: null
- parameter: {}
- parameter:
- { data_parameter: {src: url, url: "https://raw.githubusercontent.com/galaxyproject/planemo/7be1bf5b3971a43eaa73f483125bfb8cabf1c440/tests/data/hello.txt", ext: "txt"} }
gx_repeat_data_min:
request_valid:
- parameter:
- { data_parameter: {src: hda, id: abcdabcd} }
- { data_parameter: {src: hda, id: abcdabcd} }
request_invalid:
# data isn't optional and so we need at least one list element
- {}
- parameter: []
- parameter:
- { data_parameter: {src: hda, id: abcdabcd} }
- parameter: [{}, {}]
- parameter: [{}]
- parameter: 5
landing_request_valid:
- {}
# ignore the min here - can just specify the first set of parameters and I think that should work
- parameter:
- { data_parameter: {src: hda, id: abcdabcd} }
landing_request_invalid:
- parameter:
- { data_parameter: {src: hda, id: 5} }
landing_request_internal_valid:
- {}
# ignore the min here - can just specify the first set of parameters and I think that should work
- parameter:
- { data_parameter: {src: hda, id: 5} }
landing_request_internal_invalid:
- parameter:
- { data_parameter: {src: hda, id: abcdabcd} }
request_internal_valid:
- parameter:
- { data_parameter: { src: hda, id: 5 } }
- { data_parameter: { src: hda, id: 5 } }
request_internal_invalid:
- parameter:
- { data_parameter: { src: hda, id: abcdabcd } }
- parameter:
- { data_parameter: { src: hda, id: 5 } }
job_internal_valid:
- parameter:
- { data_parameter: { src: hda, id: 5 } }
- { data_parameter: { src: hda, id: 6 } }
job_internal_invalid:
- parameter:
- { data_parameter: { src: hda, id: 5 } }
- parameter:
- {}
- parameter: {}
gx_section_boolean:
request_valid:
- parameter: { boolean_parameter: true }
# booleans are optional in requests, so this should be fine?
- {}
request_invalid:
- parameter: { boolean_parameter: 4 }
job_internal_valid:
- parameter: { boolean_parameter: true }
job_internal_invalid:
- {}
- parameter: { boolean_parameter: 4 }
gx_section_data:
request_valid:
- parameter: { data_parameter: { src: hda, id: abcdabcd } }
request_invalid:
- parameter: { data_parameter: 4 }
- parameter: { data_parameter: { src: hda, id: 5 } }
- {}
request_internal_valid:
- parameter: { data_parameter: { src: hda, id: 5 } }
request_internal_invalid:
- parameter: { data_parameter: { src: hda, id: abcdabcd } }
- {}
job_internal_valid:
- parameter: { data_parameter: { src: hda, id: 5 } }
job_internal_invalid:
- {}
gx_drill_down_exact:
request_valid:
- parameter: aa
- parameter: bbb
- parameter: ba
# non-leaf nodes seem to be selectable in exact mode
- parameter: a
request_invalid:
- parameter: c
- parameter: {}
# no implicit default currently - see test_drill_down_first_by_default in API test test_tools.py.
- {}
- parameter: null
job_internal_valid:
- parameter: aa
job_internal_invalid:
- parameter: c
- {}
gx_drill_down_exact_with_selection:
request_valid:
- parameter: aa
- parameter: bbb
- parameter: ba
# non-leaf nodes seem to be selectable in exact mode
- parameter: a
request_invalid:
- parameter: c
# see note above no implicit selection
- parameter: {}
- parameter: null
job_internal_valid:
- parameter: aa
job_internal_invalid:
- parameter: c
- parameter: null
- {}
gx_drill_down_recurse:
request_valid:
- parameter: bba
request_invalid:
- parameter: a
- parameter: c
gx_drill_down_recurse_multiple:
request_valid:
- parameter: [bba]
- parameter: [a]
request_invalid:
- parameter: c
gx_data_column:
request_valid:
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: 0 }
request_invalid:
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: "0" }
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: [ 0 ] }
request_internal_valid:
- { ref_parameter: {src: hda, id: 123}, parameter: 0 }
request_internal_invalid:
- { ref_parameter: {src: hda, id: 123}, parameter: "0" }
job_internal_valid:
- { ref_parameter: {src: hda, id: 123}, parameter: 0 }
job_internal_invalid:
- { ref_parameter: {src: hda, id: 123} }
- { }
test_case_xml_valid:
- { ref_parameter: {class: "File", path: "1.bed"}, parameter: 3 }
test_case_xml_invalid:
- { ref_parameter: {class: "File", path: "1.bed"}, parameter: "3" }
test_case_xml_invalid:
- { ref_parameter: {class: "File", path: "1.bed"}, parameter: "c2: With name" }
gx_data_column_optional:
request_valid:
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: 0 }
- { ref_parameter: {src: hda, id: abcdabcd} }
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: null }
request_invalid:
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: "0" }
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: [ 0 ] }
job_internal_valid:
- { ref_parameter: {src: hda, id: 1}, parameter: 0 }
- { ref_parameter: {src: hda, id: 1}, parameter: null }
job_internal_invalid:
- { ref_parameter: {src: hda, id: 1} }
- { }
- { ref_parameter: {src: hda, id: 1}, parameter: "0" }
request_internal_valid:
- { ref_parameter: {src: hda, id: 123}, parameter: 0 }
request_internal_invalid:
- { ref_parameter: {src: hda, id: 123}, parameter: "0" }
gx_data_column_multiple:
request_valid:
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: [0] }
request_invalid:
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: "0" }
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: ["0"] }
- { ref_parameter: {src: hda, id: abcdabcd} }
request_internal_valid:
- { ref_parameter: {src: hda, id: 123}, parameter: [0] }
job_internal_valid:
- { ref_parameter: {src: hda, id: 123}, parameter: [0] }
job_internal_invalid:
- { ref_parameter: {src: hda, id: 123}, parameter: ["0"] }
- { ref_parameter: {src: hda, id: 123}, parameter: null }
request_internal_invalid:
- { ref_parameter: {src: hda, id: 123}, parameter: "0" }
- { ref_parameter: {src: hda, id: 123}, parameter: 0 }
gx_data_column_multiple_accept_default:
request_valid:
- { ref_parameter: {src: hda, id: abcdabcd}, parameter: [0] }
- { ref_parameter: {src: hda, id: abcdabcd} }
request_internal_valid:
- { ref_parameter: {src: hda, id: 123}, parameter: [0] }
job_internal_valid:
- { ref_parameter: {src: hda, id: 123}, parameter: [0] }
job_internal_invalid:
- { ref_parameter: {src: hda, id: 123}, parameter: ["0"] }
gx_group_tag:
request_valid:
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: 'type:matched' }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: 'matched' }
request_invalid:
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: null }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: 7 }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: true }
- { ref_parameter: { src: hdca, id: abcdabcd} }
request_internal_valid:
- { ref_parameter: {src: hdca, id: 123}, parameter: 'type: matched' }
request_internal_invalid:
- { ref_parameter: {src: hdca, id: 123}, parameter: null }
gx_group_tag_optional:
request_valid:
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: 'type:matched' }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: 'matched' }
- { ref_parameter: { src: hdca, id: abcdabcd} }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: null }
request_invalid:
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: 7 }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: true }
request_internal_valid:
- { ref_parameter: {src: hdca, id: 123}, parameter: 'type: matched' }
- { ref_parameter: {src: hdca, id: 123}, parameter: null }
request_internal_invalid:
- { ref_parameter: {src: hdca, id: 123}, parameter: 8 }
job_internal_valid:
- { ref_parameter: {src: hdca, id: 123}, parameter: null }
- { ref_parameter: { src: hdca, id: 123}, parameter: "matched" }
job_internal_invalid:
- { ref_parameter: {src: hdca, id: 123} }
gx_group_tag_multiple:
request_valid:
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: ['type:matched'] }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: ['matched'] }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: ['matched'] }
request_invalid:
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: 'matched' }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: 7 }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: true }
- { ref_parameter: { src: hdca, id: abcdabcd}, parameter: null }
- { ref_parameter: { src: hdca, id: abcdabcd} }
request_internal_valid:
- { ref_parameter: {src: hdca, id: 123}, parameter: ['type: matched'] }
request_internal_invalid:
- { ref_parameter: {src: hdca, id: 123}, parameter: 8 }
- { ref_parameter: {src: hdca, id: 123}, parameter: null }
job_internal_valid:
- { ref_parameter: { src: hdca, id: 123}, parameter: ['matched'] }
job_internal_invalid:
- { ref_parameter: { src: hdca, id: 123} }
- { ref_parameter: { src: hdca, id: 123}, parameter: null }
cwl_int:
request_valid:
- parameter: 5
request_invalid:
- parameter: "5"
- {}
- parameter: null
- parameter: "None"
# TODO: Not a thing perhaps?
# cwl_null:
# request_valid:
# - parameter: null
# - {}
# request_invalid:
# - parameter: "5"
# - parameter: 5
# - parameter: {}
cwl_int_optional:
request_valid:
- parameter: 5
- parameter: null
request_invalid:
- parameter: "5"
- {}
- parameter: "None"
cwl_float:
request_valid:
- parameter: 5
- parameter: 5.0
request_invalid:
- parameter: null
- parameter: "5"
- {}
- parameter: "None"
cwl_float_optional:
request_valid:
- parameter: 5
- parameter: 5.0
- parameter: null
request_invalid:
- parameter: "5"
- {}
- parameter: "None"
cwl_string:
request_valid:
- parameter: "moo"
- parameter: ""
request_invalid:
- parameter: null
- {}
- parameter: 5
cwl_string_optional:
request_valid:
- parameter: "moo"
- parameter: ""
- parameter: null
request_invalid:
- {}
- parameter: 5
cwl_boolean:
request_valid:
- parameter: true
- parameter: false
request_invalid:
- parameter: null
- {}
- parameter: 5
- parameter: "true"
- parameter: "True"
cwl_boolean_optional:
request_valid:
- parameter: true
- parameter: false
- parameter: null
request_invalid:
- {}
- parameter: 5
- parameter: "true"
- parameter: "True"
cwl_file:
request_valid:
- parameter: {src: hda, id: abcdabcd}
request_invalid:
- parameter: {src: hda, id: 7}
- parameter: {src: hdca, id: abcdabcd}
- parameter: null
- parameter: {src: fooda, id: abcdabcd}
- parameter: {id: abcdabcd}
- parameter: {}
- {}
- parameter: true
- parameter: 5
- parameter: "5"
cwl_directory:
request_valid:
- parameter: {src: hda, id: abcdabcd}
request_invalid:
- parameter: {src: hda, id: 7}
- parameter: {src: hdca, id: abcdabcd}
- parameter: null
- parameter: {src: fooda, id: abcdabcd}
- parameter: {id: abcdabcd}
- parameter: {}
- {}
- parameter: true
- parameter: 5
- parameter: "5"