예제 #1
0
    def test_successful(self):
        """Tests calling JobInterface.validate_connection() successfully."""
        job_interface_dict = {
            'command': 'simple-command',
            'command_arguments': '',
            'version': '1.0',
            'input_data': [{
                'name': 'Input 1',
                'type': 'property',
            }, {
                'name': 'Input 2',
                'type': 'file',
                'media_types': ['text/plain']
            }],
            'output_data': [{
                'name': 'Output 1',
                'type': 'file',
            }]
        }

        job_interface = JobInterface(job_interface_dict)

        job_conn = JobConnection()
        job_conn.add_property('Input 1')
        job_conn.add_input_file('Input 2', False, ['text/plain'], False, False)
        job_conn.add_workspace()

        # No exception is success
        job_interface.validate_connection(job_conn)
예제 #2
0
    def test_no_workspace_needed(self):
        """Tests calling JobInterface.validate_connection() without a workspace, but none is needed."""
        job_interface_dict = {
            'command': 'simple-command',
            'command_arguments': '',
            'version': '1.1',
            'input_data': [{
                'name': 'Input 1',
                'type': 'property',
            }, {
                'name': 'Input 2',
                'type': 'file',
                'media_types': ['text/plain'],
                'partial': True
            }],
            'output_data': [],
        }

        job_interface = JobInterface(job_interface_dict)

        job_conn = JobConnection()
        job_conn.add_property('Input 1')
        job_conn.add_input_file('Input 2', False, ['text/plain'], False, True)

        # No exception is success
        job_interface.validate_connection(job_conn)
예제 #3
0
    def test_no_workspace_needed(self):
        '''Tests calling JobInterface.validate_connection() without a workspace, but none is needed.'''
        job_interface_dict = {
            'command': 'simple-command',
            'command_arguments': '',
            'version': '1.0',
            'input_data': [{
                'name': 'Input 1',
                'type': 'property',
            }, {
                'name': 'Input 2',
                'type': 'file',
                'media_types': ['text/plain'],
            }],
            'output_data': [],
        }

        job_interface = JobInterface(job_interface_dict)

        job_conn = JobConnection()
        job_conn.add_property('Input 1')
        job_conn.add_input_file('Input 2', False, ['text/plain'], False)

        # No exception is success
        job_interface.validate_connection(job_conn)
예제 #4
0
    def test_required_workspace_missing(self):
        '''Tests calling JobInterface.validate_connection() when a required workspace is missing'''
        job_interface_dict = {
            'command': 'simple-command',
            'command_arguments': '',
            'version': '1.0',
            'input_data': [{
                'name': 'Input 1',
                'type': 'property',
            }, {
                'name': 'Input 2',
                'type': 'file',
                'media_types': ['text/plain'],
            }],
            'output_data': [{
                'name': 'Output 1',
                'type': 'file',
            }]
        }

        job_interface = JobInterface(job_interface_dict)

        job_conn = JobConnection()
        job_conn.add_property('Input 1')
        job_conn.add_input_file('Input 2', False, ['text/plain'], False)

        self.assertRaises(InvalidConnection, job_interface.validate_connection, job_conn)
예제 #5
0
    def test_required_workspace_missing(self):
        """Tests calling JobInterface.validate_connection() when a required workspace is missing"""
        job_interface_dict = {
            'command': 'simple-command',
            'command_arguments': '',
            'version': '1.1',
            'input_data': [{
                'name': 'Input 1',
                'type': 'property',
            }, {
                'name': 'Input 2',
                'type': 'file',
                'media_types': ['text/plain'],
                'partial': True
            }],
            'output_data': [{
                'name': 'Output 1',
                'type': 'file',
            }]
        }

        job_interface = JobInterface(job_interface_dict)

        job_conn = JobConnection()
        job_conn.add_property('Input 1')
        job_conn.add_input_file('Input 2', False, ['text/plain'], False, True)

        self.assertRaises(InvalidConnection, job_interface.validate_connection, job_conn)
예제 #6
0
    def test_successful(self):
        """Tests calling JobInterface.validate_connection() successfully."""
        job_interface_dict = {
            'command': 'simple-command',
            'command_arguments': '',
            'version': '1.0',
            'input_data': [{
                'name': 'Input 1',
                'type': 'property',
            }, {
                'name': 'Input 2',
                'type': 'file',
                'media_types': ['text/plain']
            }],
            'output_data': [{
                'name': 'Output 1',
                'type': 'file',
            }]
        }

        job_interface = JobInterface(job_interface_dict)

        job_conn = JobConnection()
        job_conn.add_property('Input 1')
        job_conn.add_input_file('Input 2', False, ['text/plain'], False, False)
        job_conn.add_workspace()

        # No exception is success
        job_interface.validate_connection(job_conn)
예제 #7
0
    def test_optional_and_required(self):
        '''Tests calling JobConnection.validate_input_files() when the connection has optional data for required input'''

        files = {u'Param1': (True, True, ScaleFileDescription())}

        conn = JobConnection()
        conn.add_input_file(u'Param1', True, None, True, False)

        self.assertRaises(InvalidConnection, conn.validate_input_files, files)
예제 #8
0
    def test_jamming_multiple_into_single(self):
        '''Tests calling JobConnection.validate_input_files() when passing multiple files into a single file'''

        files = {u'Param1': (True, False, ScaleFileDescription())}

        conn = JobConnection()
        conn.add_input_file(u'Param1', True, None, False, False)

        self.assertRaises(InvalidConnection, conn.validate_input_files, files)
예제 #9
0
    def test_required_missing(self):
        '''Tests calling JobConnection.validate_input_files() when a required file parameter is missing'''

        files = {u'Param1': (True, True, ScaleFileDescription()), u'Param2': (True, True, ScaleFileDescription())}

        conn = JobConnection()
        conn.add_input_file(u'Param1', True, None, False)

        self.assertRaises(InvalidConnection, conn.validate_input_files, files)
예제 #10
0
    def test_jamming_multiple_into_single(self):
        '''Tests calling JobConnection.validate_input_files() when passing multiple files into a single file'''

        files = {u'Param1': (True, False, ScaleFileDescription())}

        conn = JobConnection()
        conn.add_input_file(u'Param1', True, None, False)

        self.assertRaises(InvalidConnection, conn.validate_input_files, files)
예제 #11
0
    def test_optional_and_required(self):
        '''Tests calling JobConnection.validate_input_files() when the connection has optional data for required input'''

        files = {u'Param1': (True, True, ScaleFileDescription())}

        conn = JobConnection()
        conn.add_input_file(u'Param1', True, None, True)

        self.assertRaises(InvalidConnection, conn.validate_input_files, files)
예제 #12
0
    def test_required_missing(self):
        """Tests calling JobConnection.validate_input_files() when a required file parameter is missing"""

        files = {'Param1': (True, True, ScaleFileDescription()), 'Param2': (True, True, ScaleFileDescription())}

        conn = JobConnection()
        conn.add_input_file('Param1', True, None, False, False)

        self.assertRaises(InvalidConnection, conn.validate_input_files, files)
예제 #13
0
    def test_bad_media_type(self):
        '''Tests calling JobConnection.validate_input_files() with a bad media type'''

        file_desc = ScaleFileDescription()
        file_desc.add_allowed_media_type(u'application/json')
        files = {u'Param1': (True, True, file_desc)}

        conn = JobConnection()
        conn.add_input_file(u'Param1', True, None, False, False)

        warnings = conn.validate_input_files(files)
        self.assertTrue(warnings)
예제 #14
0
    def test_bad_media_type(self):
        '''Tests calling JobConnection.validate_input_files() with a bad media type'''

        file_desc = ScaleFileDescription()
        file_desc.add_allowed_media_type(u'application/json')
        files = {u'Param1': (True, True, file_desc)}

        conn = JobConnection()
        conn.add_input_file(u'Param1', True, None, False)

        warnings = conn.validate_input_files(files)
        self.assertTrue(warnings)
예제 #15
0
    def validate_trigger_for_job(self, job_interface):
        '''See :meth:`job.triggers.configuration.trigger_rule.JobTriggerRuleConfiguration.validate_trigger_for_job`
        '''

        input_file_name = self.get_input_data_name()
        media_type = self.get_condition().get_media_type()
        media_types = [media_type] if media_type else None

        connection = JobConnection()
        connection.add_input_file(input_file_name, False, media_types, False, False)
        connection.add_workspace()

        return job_interface.validate_connection(connection)
예제 #16
0
    def validate_trigger_for_job(self, job_interface):
        """See :meth:`job.triggers.configuration.trigger_rule.JobTriggerRuleConfiguration.validate_trigger_for_job`
        """

        input_file_name = self.get_input_data_name()
        media_type = self.get_condition().get_media_type()
        media_types = [media_type] if media_type else None

        connection = JobConnection()
        connection.add_input_file(input_file_name, False, media_types, False, False)
        connection.add_workspace()

        return job_interface.validate_connection(connection)
예제 #17
0
    def test_successful(self):
        '''Tests calling JobConnection.validate_input_files() successfully'''

        file_desc = ScaleFileDescription()
        file_desc.add_allowed_media_type(u'application/json')
        file_desc_2 = ScaleFileDescription()
        file_desc_2.add_allowed_media_type(u'application/json')
        file_desc_2.add_allowed_media_type(u'text/plain')
        files = {u'Param1': (True, True, file_desc), u'Param2': (True, False, ScaleFileDescription()),
                 u'Param3': (False, True, file_desc_2), u'Param4': (False, True, file_desc_2)}

        conn = JobConnection()
        conn.add_input_file(u'Param1', True, [u'application/json'], False)
        conn.add_input_file(u'Param2', False, [u'text/plain'], False)
        conn.add_input_file(u'Param3', False, [u'text/plain'], False)

        # No exception is success
        warnings = conn.validate_input_files(files)
        self.assertFalse(warnings)
예제 #18
0
    def test_successful(self):
        """Tests calling JobConnection.validate_input_files() successfully"""

        file_desc = ScaleFileDescription()
        file_desc.add_allowed_media_type('application/json')
        file_desc_2 = ScaleFileDescription()
        file_desc_2.add_allowed_media_type('application/json')
        file_desc_2.add_allowed_media_type('text/plain')
        files = {'Param1': (True, True, file_desc), 'Param2': (True, False, ScaleFileDescription()),
                 'Param3': (False, True, file_desc_2), 'Param4': (False, True, file_desc_2)}

        conn = JobConnection()
        conn.add_input_file('Param1', True, ['application/json'], False, False)
        conn.add_input_file('Param2', False, ['text/plain'], False, False)
        conn.add_input_file('Param3', False, ['text/plain'], False, False)

        # No exception is success
        warnings = conn.validate_input_files(files)
        self.assertFalse(warnings)
예제 #19
0
    def test_successful(self):
        '''Tests calling JobInterface.validate_connection() successfully.'''
        job_interface_dict = {
            u'command': u'simple-command',
            u'command_arguments': u'',
            u'version': u'1.0',
            u'input_data': [{u'name': u'Input 1', u'type': u'property'},
                            {u'name': u'Input 2', u'type': u'file', u'media_types': [u'text/plain']}],
            u'output_data': [{u'name': u'Output 1', u'type': u'file'}]
        }

        job_interface = JobInterface(job_interface_dict)

        job_conn = JobConnection()
        job_conn.add_property(u'Input 1')
        job_conn.add_input_file(u'Input 2', False, [u'text/plain'], False)
        job_conn.add_workspace()
        
        # No exception is success
        job_interface.validate_connection(job_conn)