def test_failure_no_services_name(self):
        '''
        Failure case:
        - Exercise parse_require_config() with valid input

        The slight difference between this test and test_success_empty_services
        is the success case has an empty service name indicated by "||":
        |service||paramseters

        and the failure case has no service name:
        |service|paramseters

        '''

        # Establish valid test data:
        src = '|service' \
            '|parameters|jon_server_ip&' + base64.b64encode('192.168.1.1') + \
            '|jon_server_ip_2&' + base64.b64encode('192.168.1.2') + \
            '|jon_server_ip_3&' + base64.b64encode('192.168.1.3') + \
            '|service|jon2|'

        validation_dict = {'AUDREY_VAR_jon_server_ip' : '192.168.1.1',
            'AUDREY_VAR_jon_server_ip_2' : '192.168.1.2',
            'AUDREY_VAR_jon_server_ip_3' : '192.168.1.3' }

        print '\nTest Name: test_failure_no_service_names()'
        print 'Test input:\n' + src
        print 'Expect: parse_require_config() success'

        # Exersise code segment
        with self.assertRaises(ASError):
            print 'parse_require_config returned: ' + \
                str(parse_require_config(src))
    def test_failure_bad_service_name(self):
        '''
        Failure case:
        - Exercise parse_require_config() with valid input
        '''

        # Establish valid test data:
        src = '|service|parameters|'
        print '\nTest Name: test_failure_bad_service_name()'
        print 'Test input:\n' + src
        print 'Expect: parse_require_config() ASError'

        # Exersise code segment
        with self.assertRaises(ASError):
            print 'parse_require_config returned: ' + \
                str(parse_require_config(src))
    def test_success_empty_source(self):
        '''
        Success case:
        - Exercise parse_require_config() with valid empty input
        '''

        # Establish valid test data:
        src = '||'
        print '\nTest Name: test_success_empty_source()'
        print 'Test input:\n' + src
        print 'Expect: parse_require_config() success'

        # Exersise code segment
        services = parse_require_config(src)
        print 'services: ' + str(services)

        # Validate results
        self.assertEqual(services, [])
    def test_success_empty_service(self):
        '''
        Failure case:
        - Exercise parse_require_config() with valid input
        '''

        # Establish valid test data:
        src = '|service|' + \
            '|parameters|jon_server_ip&' + base64.b64encode('192.168.1.1') + \
            '|jon_server_ip_2&' + base64.b64encode('192.168.1.2') + \
            '|jon_server_ip_3&' + base64.b64encode('192.168.1.3') + \
            '|service|jon2|'

        validation_dict = {'AUDREY_VAR_jon_server_ip' : '192.168.1.1',
            'AUDREY_VAR_jon_server_ip_2' : '192.168.1.2',
            'AUDREY_VAR_jon_server_ip_3' : '192.168.1.3' }

        print '\nTest Name: test_success_empty_service()'
        print 'Test input:\n' + src
        print 'Expect: parse_require_config() success'

        # Exersise code segment
        services = parse_require_config(src)

        # Validate results
        self.assertEqual(services[0].name, '')
        self.assertEqual(services[1].name, 'jon2')

        for service in services:
            for param in service.params:
                name_val = param.split('&')
                env_var  = 'AUDREY_VAR_' + name_val[0]

                print 'name_val[0]:   ' + str(name_val[0])
                print 'param:         ' + str(param)
                print 'services.name: ' + str(service.name)

                cmd = ['/usr/bin/printenv', env_var]
                ret = _run_cmd(cmd)
                self.assertEqual(ret['out'][:-1], \
                    validation_dict[env_var])