Пример #1
0
  def setUp(self):
    self.test_expected_reports_csv_file = os.path.realpath('test_expected_reports.csv')
    self.test_expected_reports_csv_content = open(self.test_expected_reports_csv_file).read()
    
    self.test_technique_file = os.path.realpath('test_technique.cf')
    self.technique_content = open(self.test_technique_file).read()
    self.technique_metadata = ncf.parse_technique_metadata(self.technique_content)
    method_calls = ncf.parse_technique_methods(self.test_technique_file)
    self.technique_metadata['method_calls'] = method_calls

    self.test_reporting = os.path.realpath('test_technique_reporting.cf')
    self.reporting_content = open(self.test_reporting).read()
    self.reporting_metadata = ncf.parse_technique_metadata(self.reporting_content)
    reporting_method_calls = ncf.parse_technique_methods(self.test_reporting)
    self.reporting_metadata['method_calls'] = reporting_method_calls

    self.test_reporting_with_var = os.path.realpath('test_technique_with_variable.cf')
    self.reporting_with_var_content = open(self.test_reporting_with_var).read()
    self.reporting_with_var_metadata = ncf.parse_technique_metadata(self.reporting_with_var_content)
    reporting_with_var_method_calls = ncf.parse_technique_methods(self.test_reporting_with_var)
    self.reporting_with_var_metadata['method_calls'] = reporting_with_var_method_calls


    self.test_any_technique = os.path.realpath('test_technique_any.cf')
    self.any_technique_content = open(self.test_any_technique).read()
    self.any_technique_metadata = ncf.parse_technique_metadata(self.any_technique_content)
    any_technique_method_calls = ncf.parse_technique_methods(self.test_any_technique)
    self.any_technique_metadata['method_calls'] = any_technique_method_calls

    self.test_metadata_xml_file = os.path.realpath('test_metadata.xml')
    self.test_metadata_xml_content = open(self.test_metadata_xml_file).read()
Пример #2
0
  def setUp(self):
    self.maxDiff = None
    self.test_expected_reports_csv_file = os.path.realpath('test_expected_reports.csv')
    with open(self.test_expected_reports_csv_file) as fd:
      self.test_expected_reports_csv_content = fd.read()
    
    self.test_technique_file = os.path.realpath('test_technique.cf')
    with open(self.test_technique_file) as fd:
      self.technique_content = fd.read()
    self.technique_metadata = ncf.parse_technique_metadata(self.technique_content)['result']
    method_calls = ncf.parse_technique_methods(self.test_technique_file)
    self.technique_metadata['method_calls'] = method_calls

    self.test_reporting = os.path.realpath('test_technique_reporting.cf')
    with open(self.test_reporting) as fd:
      self.reporting_content = fd.read()
    self.reporting_metadata = ncf.parse_technique_metadata(self.reporting_content)['result']
    reporting_method_calls = ncf.parse_technique_methods(self.test_reporting)
    self.reporting_metadata['method_calls'] = reporting_method_calls

    self.test_reporting_with_var = os.path.realpath('test_technique_with_variable.cf')
    with open(self.test_reporting_with_var) as fd:
      self.reporting_with_var_content = fd.read()
    self.reporting_with_var_metadata = ncf.parse_technique_metadata(self.reporting_with_var_content)['result']
    reporting_with_var_method_calls = ncf.parse_technique_methods(self.test_reporting_with_var)
    self.reporting_with_var_metadata['method_calls'] = reporting_with_var_method_calls


    self.test_any_technique = os.path.realpath('test_technique_any.cf')
    with open(self.test_any_technique) as fd:
      self.any_technique_content = fd.read()
    self.any_technique_metadata = ncf.parse_technique_metadata(self.any_technique_content)['result']
    any_technique_method_calls = ncf.parse_technique_methods(self.test_any_technique)
    self.any_technique_metadata['method_calls'] = any_technique_method_calls

    self.test_metadata_xml_file = os.path.realpath('test_metadata.xml')
    with open(self.test_metadata_xml_file) as fd:
      self.test_metadata_xml_content = fd.read()


    # Testing Techniques with quote
    self.test_technique_with_quote_file = os.path.realpath('test_technique_with_quote.cf')
    self.technique_with_quote_content = open(self.test_technique_with_quote_file).read()
    self.technique_with_quote_metadata = ncf.parse_technique_metadata(self.technique_with_quote_content)['result']
    method_with_quote_calls = ncf.parse_technique_methods(self.test_technique_with_quote_file)
    self.technique_with_quote_metadata['method_calls'] = method_with_quote_calls

    self.test_expected_reports_with_quote_csv_file = os.path.realpath('test_expected_reports_with_quote.csv')
    self.test_expected_reports_with_quote_csv_content = open(self.test_expected_reports_with_quote_csv_file).read()

    self.test_metadata_with_quote_xml_file = os.path.realpath('test_metadata_with_quote.xml')
    self.test_metadata_with_quote_xml_content = open(self.test_metadata_with_quote_xml_file).read()
Пример #3
0
    def setUp(self):
        self.test_technique_file = os.path.realpath("test_technique.cf")
        self.test_generic_method_file = "test_generic_method.cf"
        self.technique_content = open(self.test_technique_file).read()
        self.generic_method_content = open(self.test_generic_method_file).read()

        self.technique_metadata = ncf.parse_technique_metadata(self.technique_content)
        method_calls = ncf.parse_technique_methods(self.test_technique_file)
        self.technique_metadata["method_calls"] = method_calls

        self.technique_metadata_test = {
            "name": "ncf technique method argument escape test",
            "description": "This is a bundle to test ncf's Python lib",
            "version": "0.1",
            "bundle_name": "content_escaping_test",
            "bundle_args": [],
            "method_calls": [
                {"method_name": "package_install_version", "args": ["apache2", "2.2.11"], "class_context": "any"},
                {
                    "method_name": "file_replace_lines",
                    "args": [
                        "/etc/httpd/conf/httpd.conf",
                        'ErrorLog "/var/log/httpd/error_log"',
                        'ErrorLog "/projet/logs/httpd/error_log"',
                    ],
                    "class_context": "redhat",
                },
            ],
        }
        self.technique_metadata_test_content = os.path.realpath("technique_metadata_test_content.cf")
        self.technique_test_expected_content = open(self.technique_metadata_test_content).read()
Пример #4
0
  def setUp(self):
    self.test_technique_file = os.path.realpath('test_technique.cf')
    self.test_generic_method_file = 'test_generic_method.cf'
    with open(self.test_technique_file) as fd:
      self.technique_content = fd.read()
    with open(self.test_generic_method_file) as fd:
      self.generic_method_content = fd.read()
    self.all_methods = ncf.get_all_generic_methods_metadata()["data"]["generic_methods"]

    self.technique_metadata = ncf.parse_technique_metadata(self.technique_content)['result']
    method_calls = ncf.parse_technique_methods(self.test_technique_file)
    self.technique_metadata['method_calls'] = method_calls

    self.technique_metadata_test = { 'name': 'ncf technique method argument escape test', 'description': "This is a bundle to test ncf's Python lib", 'version': '0.1', 'bundle_name': 'content_escaping_test', 'bundle_args': [],
        'method_calls': [
            { 'method_name': 'package_install_version', 'args': ['apache2', '2.2.11'], 'class_context': 'any' },
            { 'method_name': 'file_replace_lines', 'args': ['/etc/httpd/conf/httpd.conf', 'ErrorLog \"/var/log/httpd/error_log\"', 'ErrorLog "/projet/logs/httpd/error_log"'],  'class_context': 'redhat' },
          ]
        }
    self.technique_metadata_test_content = os.path.realpath('technique_metadata_test_content.cf')
    all_tags = ncf.tags["generic_method"]+ncf.tags["common"]
    self.methods_expected_tags = [ tag for tag in all_tags if not tag in ncf.optionnal_tags ]

    with open(self.technique_metadata_test_content) as fd:
      self.technique_test_expected_content = fd.read()
Пример #5
0
 def test_parse_technique_methods_unescape_double_quotes(self):
   test_parse_technique_methods_unescape_double_quotes_calls = ncf.parse_technique_methods(self.technique_metadata_test_content, self.all_methods)
   expected_result = [
       { 'method_name': u'package_install_version', 'class_context': u'any', 'component': u'Install a package with correct version', 'args': [u'apache2', u'2.2.11'] },
       { 'method_name': u'file_replace_lines', 'class_context': u'redhat', 'component': u'Edit conf file', 'args': [u'/etc/httpd/conf/httpd.conf', u'ErrorLog "/var/log/httpd/error_log"', u'ErrorLog "/projet/logs/httpd/error_log"'] }
                     ]
   self.assertEqual(expected_result, test_parse_technique_methods_unescape_double_quotes_calls)
Пример #6
0
 def test_parse_technique_generic_method_calls_strings(self):
     """Parsing a technique should return a list of it's generic method calls even if they are string literals"""
     bundle_calls = ncf.parse_technique_methods(self.test_technique_file,
                                                self.all_methods)
     expected = [{
         'method_name': u'package_install_version',
         'component': u'ph1',
         'args': [u'${bla.apache_package_name}', u'2.2.11'],
         'class_context': u'any'
     }, {
         'method_name': u'service_start',
         'component': u'ph2',
         'args': [u'${bla.apache_package_name}'],
         'class_context': u'cfengine'
     }, {
         'method_name': u'package_install',
         'component': u'ph3',
         'args': [u'openssh-server'],
         'class_context': u'cfengine'
     }, {
         'method_name': u'command_execution',
         'component': u'ph4',
         'args': ['/bin/echo "test"'],
         'class_context': 'cfengine'
     }]
     self.assertEqual(bundle_calls, expected)
Пример #7
0
 def test_parse_technique_generic_method_calls(self):
     """Parsing a technique should return a list of it's generic method calls"""
     bundle_calls = ncf.parse_technique_methods(self.test_technique_file)
     expected = [
         {
             'method_name': u'package_install_version',
             'promiser': u'ph1',
             'args': [u'${bla.apache_package_name}', u'2.2.11'],
             'class_context': u'any'
         },
         {
             'method_name': u'service_start',
             'promiser': u'ph2',
             'args': [u'${bla.apache_package_name}'],
             'class_context': u'cfengine'
         },
         {
             'method_name': u'package_install',
             'promiser': u'ph3',
             'args': [u'openssh-server'],
             'class_context': u'cfengine'
         },
         {
             'method_name': u'_logger',
             'promiser': u'ph4',
             'args': [u'NA', u'NA'],
             'class_context': u'!cfengine'
         },
     ]
     self.assertEqual(bundle_calls, expected)
Пример #8
0
 def test_parse_technique_methods_unescape_double_quotes(self):
   test_parse_technique_methods_unescape_double_quotes_calls = ncf.parse_technique_methods(self.technique_metadata_test_content)
   expected_result = [
                       { 'method_name': 'package_install_version', 'class_context': 'any', 'args': ['apache2', '2.2.11'] },
                       { 'method_name': 'file_replace_lines', 'class_context': 'redhat', 'args': ['/etc/httpd/conf/httpd.conf', 'ErrorLog "/var/log/httpd/error_log"', 'ErrorLog "/projet/logs/httpd/error_log"'] }
                     ]
   self.assertEquals(expected_result, test_parse_technique_methods_unescape_double_quotes_calls)
Пример #9
0
    def setUp(self):
        self.test_technique_file = os.path.realpath('test_technique.cf')
        self.test_generic_method_file = 'test_generic_method.cf'
        with open(self.test_technique_file) as fd:
            self.technique_content = fd.read()
        with open(self.test_generic_method_file) as fd:
            self.generic_method_content = fd.read()
        self.all_methods = ncf.get_all_generic_methods_metadata(
        )["data"]["generic_methods"]

        self.technique_metadata = ncf.parse_technique_metadata(
            self.technique_content)['result']
        method_calls = ncf.parse_technique_methods(self.test_technique_file,
                                                   self.all_methods)
        self.technique_metadata['method_calls'] = method_calls

        self.technique_metadata_test = {
            'name':
            'ncf technique method argument escape test',
            'description':
            "This is a bundle to test ncf's Python lib",
            'version':
            '0.1',
            'bundle_name':
            'content_escaping_test',
            'bundle_args': [],
            'parameter': [],
            'method_calls': [
                {
                    'method_name': 'package_install_version',
                    "component": "Install a package with correct version",
                    'args': ['apache2', '2.2.11'],
                    'class_context': 'any'
                },
                {
                    'method_name':
                    'file_replace_lines',
                    "component":
                    "Edit conf file",
                    'args': [
                        '/etc/httpd/conf/httpd.conf',
                        'ErrorLog \"/var/log/httpd/error_log\"',
                        'ErrorLog "/projet/logs/httpd/error_log"'
                    ],
                    'class_context':
                    'redhat'
                },
            ]
        }
        self.technique_metadata_test_content = os.path.realpath(
            'technique_metadata_test_content.cf')
        all_tags = ncf.tags["generic_method"]
        self.methods_expected_tags = [
            tag for tag in all_tags
            if not tag in ncf.optionnal_tags["generic_method"]
        ]

        with open(self.technique_metadata_test_content) as fd:
            self.technique_test_expected_content = fd.read().split("\n")
Пример #10
0
 def test_parse_technique_generic_method_calls_strings(self):
   """Parsing a technique should return a list of it's generic method calls even if they are string literals"""
   bundle_calls = ncf.parse_technique_methods(self.test_technique_file)
   expected = [  { 'method_name': 'package_install_version', 'args': ['${bla.apache_package_name}', '2.2.11'], 'class_context': 'any' },
                 { 'method_name': 'service_start', 'args': ['${bla.apache_package_name}'], 'class_context': 'cfengine' },
                 { 'method_name': 'package_install', 'args': ['openssh-server'], 'class_context': 'cfengine' },
              ]
   self.assertEqual(bundle_calls, expected)
Пример #11
0
 def setUp(self):
   self.test_technique_file = os.path.realpath('test_technique.cf')
   self.test_generic_method_file = 'test_generic_method.cf'
   self.technique_content = open(self.test_technique_file).read()
   self.generic_method_content = open(self.test_generic_method_file).read()
   
   self.technique_metadata = ncf.parse_technique_metadata(self.technique_content)
   method_calls = ncf.parse_technique_methods(self.test_technique_file)
   self.technique_metadata['method_calls'] = method_calls
Пример #12
0
 def test_parse_technique_generic_method_calls(self):
   """Parsing a technique should return a list of it's generic method calls"""
   bundle_calls = ncf.parse_technique_methods(self.test_technique_file)
   expected = [  { 'method_name': u'package_install_version', 'promiser': u'ph1', 'args': [u'${bla.apache_package_name}', u'2.2.11'], 'class_context': u'any' },
       { 'method_name': u'service_start', 'promiser': u'ph2', 'args': [u'${bla.apache_package_name}'], 'class_context': u'cfengine' },
       { 'method_name': u'package_install', 'promiser': u'ph3', 'args': [u'openssh-server'], 'class_context': u'cfengine' },
       { 'method_name': u'_logger', 'promiser': u'ph4', 'args': [u'NA', u'NA'], 'class_context': u'!cfengine' },
              ]
   self.assertEqual(bundle_calls, expected)
Пример #13
0
  def setUp(self):
    self.maxDiff = None
    
    self.test_technique_file = os.path.realpath('test_technique.cf')
    with open(self.test_technique_file) as fd:
      self.technique_content = fd.read()
    self.all_methods = ncf.get_all_generic_methods_metadata()["data"]["generic_methods"]  
    self.technique_metadata = ncf.parse_technique_metadata(self.technique_content)['result']
    method_calls = ncf.parse_technique_methods(self.test_technique_file, self.all_methods)
    self.technique_metadata['method_calls'] = method_calls

    self.test_reporting = os.path.realpath('test_technique_reporting.cf')
    with open(self.test_reporting) as fd:
      self.reporting_content = fd.read()
    self.reporting_metadata = ncf.parse_technique_metadata(self.reporting_content)['result']
    reporting_method_calls = ncf.parse_technique_methods(self.test_reporting, self.all_methods)
    self.reporting_metadata['method_calls'] = reporting_method_calls

    self.test_reporting_with_var = os.path.realpath('test_technique_with_variable.cf')
    with open(self.test_reporting_with_var) as fd:
      self.reporting_with_var_content = fd.read()
    self.reporting_with_var_metadata = ncf.parse_technique_metadata(self.reporting_with_var_content)['result']
    reporting_with_var_method_calls = ncf.parse_technique_methods(self.test_reporting_with_var, self.all_methods)
    self.reporting_with_var_metadata['method_calls'] = reporting_with_var_method_calls


    self.test_any_technique = os.path.realpath('test_technique_any.cf')
    with open(self.test_any_technique) as fd:
      self.any_technique_content = fd.read()
    self.any_technique_metadata = ncf.parse_technique_metadata(self.any_technique_content)['result']
    any_technique_method_calls = ncf.parse_technique_methods(self.test_any_technique, self.all_methods)
    self.any_technique_metadata['method_calls'] = any_technique_method_calls

    self.rudder_reporting_file = os.path.realpath('test_technique_rudder_reporting.cf')
    with open(self.rudder_reporting_file) as fd:
      self.rudder_reporting_content = fd.read()

    # Testing Techniques with quote
    self.test_technique_with_quote_file = os.path.realpath('test_technique_with_quote.cf')
    with open(self.test_technique_with_quote_file) as fd:
      self.technique_with_quote_content = fd.read()
    self.technique_with_quote_metadata = ncf.parse_technique_metadata(self.technique_with_quote_content)['result']
    method_with_quote_calls = ncf.parse_technique_methods(self.test_technique_with_quote_file, self.all_methods)
    self.technique_with_quote_metadata['method_calls'] = method_with_quote_calls
Пример #14
0
 def test_parse_technique_generic_method_calls_strings(self):
   """Parsing a technique should return a list of it's generic method calls even if they are string literals"""
   bundle_calls = ncf.parse_technique_methods(self.test_technique_file, self.all_methods)
   expected = [
       { 'method_name': u'package_install_version', 'component': u'ph1', 'args': [u'${bla.apache_package_name}', u'2.2.11'], 'class_context': u'any' }
     , { 'method_name': u'service_start', 'component': u'ph2', 'args': [u'${bla.apache_package_name}'], 'class_context': u'cfengine' }
     , { 'method_name': u'package_install', 'component': u'ph3', 'args': [u'openssh-server'], 'class_context': u'cfengine' }
     , { 'method_name': u'command_execution', 'component': u'ph4', 'args': ['/bin/echo "test"'], 'class_context': 'cfengine'}
   ]
   self.assertEqual(bundle_calls, expected)
Пример #15
0
  def setUp(self):
    self.maxDiff = None
    
    self.test_technique_file = os.path.realpath('test_technique.cf')
    with open(self.test_technique_file) as fd:
      self.technique_content = fd.read()
    self.technique_metadata = ncf.parse_technique_metadata(self.technique_content)['result']
    method_calls = ncf.parse_technique_methods(self.test_technique_file)
    self.technique_metadata['method_calls'] = method_calls

    self.test_reporting = os.path.realpath('test_technique_reporting.cf')
    with open(self.test_reporting) as fd:
      self.reporting_content = fd.read()
    self.reporting_metadata = ncf.parse_technique_metadata(self.reporting_content)['result']
    reporting_method_calls = ncf.parse_technique_methods(self.test_reporting)
    self.reporting_metadata['method_calls'] = reporting_method_calls

    self.test_reporting_with_var = os.path.realpath('test_technique_with_variable.cf')
    with open(self.test_reporting_with_var) as fd:
      self.reporting_with_var_content = fd.read()
    self.reporting_with_var_metadata = ncf.parse_technique_metadata(self.reporting_with_var_content)['result']
    reporting_with_var_method_calls = ncf.parse_technique_methods(self.test_reporting_with_var)
    self.reporting_with_var_metadata['method_calls'] = reporting_with_var_method_calls


    self.test_any_technique = os.path.realpath('test_technique_any.cf')
    with open(self.test_any_technique) as fd:
      self.any_technique_content = fd.read()
    self.any_technique_metadata = ncf.parse_technique_metadata(self.any_technique_content)['result']
    any_technique_method_calls = ncf.parse_technique_methods(self.test_any_technique)
    self.any_technique_metadata['method_calls'] = any_technique_method_calls

    self.rudder_reporting_file = os.path.realpath('test_technique_rudder_reporting.cf')
    with open(self.rudder_reporting_file) as fd:
      self.rudder_reporting_content = fd.read()

    # Testing Techniques with quote
    self.test_technique_with_quote_file = os.path.realpath('test_technique_with_quote.cf')
    self.technique_with_quote_content = open(self.test_technique_with_quote_file).read()
    self.technique_with_quote_metadata = ncf.parse_technique_metadata(self.technique_with_quote_content)['result']
    method_with_quote_calls = ncf.parse_technique_methods(self.test_technique_with_quote_file)
    self.technique_with_quote_metadata['method_calls'] = method_with_quote_calls
Пример #16
0
  def setUp(self):
    self.test_expected_reports_csv_file = os.path.realpath('test_expected_reports.csv')
    self.test_expected_reports_csv_content = open(self.test_expected_reports_csv_file).read()
    
    self.test_technique_file = os.path.realpath('test_technique.cf')
    self.technique_content = open(self.test_technique_file).read()
    self.technique_metadata = ncf.parse_technique_metadata(self.technique_content)
    method_calls = ncf.parse_technique_methods(self.test_technique_file)
    self.technique_metadata['method_calls'] = method_calls

    self.test_metadata_xml_file = os.path.realpath('test_metadata.xml')
    self.test_metadata_xml_content = open(self.test_metadata_xml_file).read()
Пример #17
0
 def test_parse_technique_generic_method_calls_strings(self):
     """Parsing a technique should return a list of it's generic method calls even if they are string literals"""
     bundle_calls = ncf.parse_technique_methods(self.test_technique_file)
     expected = [
         {
             "method_name": "package_install_version",
             "args": ["${bla.apache_package_name}", "2.2.11"],
             "class_context": "any",
         },
         {"method_name": "service_start", "args": ["${bla.apache_package_name}"], "class_context": "cfengine"},
         {"method_name": "package_install", "args": ["openssh-server"], "class_context": "cfengine"},
         {"method_name": "_logger", "args": ["NA", "NA"], "class_context": "!cfengine"},
     ]
     self.assertEqual(bundle_calls, expected)
Пример #18
0
    def setUp(self):
        self.test_expected_reports_csv_file = os.path.realpath(
            'test_expected_reports.csv')
        self.test_expected_reports_csv_content = open(
            self.test_expected_reports_csv_file).read()

        self.test_technique_file = os.path.realpath('test_technique.cf')
        self.technique_content = open(self.test_technique_file).read()
        self.technique_metadata = ncf.parse_technique_metadata(
            self.technique_content)
        method_calls = ncf.parse_technique_methods(self.test_technique_file)
        self.technique_metadata['method_calls'] = method_calls

        self.test_metadata_xml_file = os.path.realpath('test_metadata.xml')
        self.test_metadata_xml_content = open(
            self.test_metadata_xml_file).read()
Пример #19
0
 def test_parse_technique_methods_unescape_double_quotes(self):
     test_parse_technique_methods_unescape_double_quotes_calls = ncf.parse_technique_methods(
         self.technique_metadata_test_content
     )
     expected_result = [
         {"method_name": "package_install_version", "class_context": "any", "args": ["apache2", "2.2.11"]},
         {
             "method_name": "file_replace_lines",
             "class_context": "redhat",
             "args": [
                 "/etc/httpd/conf/httpd.conf",
                 'ErrorLog "/var/log/httpd/error_log"',
                 'ErrorLog "/projet/logs/httpd/error_log"',
             ],
         },
     ]
     self.assertEquals(expected_result, test_parse_technique_methods_unescape_double_quotes_calls)
Пример #20
0
  def setUp(self):
    self.test_technique_file = os.path.realpath('test_technique.cf')
    self.test_generic_method_file = 'test_generic_method.cf'
    self.technique_content = open(self.test_technique_file).read()
    self.generic_method_content = open(self.test_generic_method_file).read()
    
    self.technique_metadata = ncf.parse_technique_metadata(self.technique_content)
    method_calls = ncf.parse_technique_methods(self.test_technique_file)
    self.technique_metadata['method_calls'] = method_calls

    self.technique_metadata_test = { 'name': 'ncf technique method argument escape test', 'description': "This is a bundle to test ncf's Python lib", 'version': '0.1', 'bundle_name': 'content_escaping_test', 'bundle_args': [],
        'method_calls': [
            { 'method_name': 'package_install_version', 'args': ['apache2', '2.2.11'], 'class_context': 'any' },
            { 'method_name': 'file_replace_lines', 'args': ['/etc/httpd/conf/httpd.conf', 'ErrorLog \"/var/log/httpd/error_log\"', 'ErrorLog "/projet/logs/httpd/error_log"'],  'class_context': 'redhat' },
          ]
        }
    self.technique_metadata_test_content = os.path.realpath('technique_metadata_test_content.cf')
    self.technique_test_expected_content = open(self.technique_metadata_test_content).read()
Пример #21
0
    def setUp(self):
        self.technique_file = os.path.realpath(
            'technique_metadata_test_content.cf')
        with open(self.technique_file) as fd:
            self.technique_content = fd.read()

        self.all_methods = ncf.get_all_generic_methods_metadata(
        )["data"]["generic_methods"]

        # For test, for now add dsc_support to all method
        for method in self.all_methods:
            self.all_methods[method]["agent_support"] = ["dsc"]

        self.technique_metadata = ncf.parse_technique_metadata(
            self.technique_content)['result']
        method_calls = ncf.parse_technique_methods(self.technique_file)
        self.technique_metadata['method_calls'] = method_calls

        self.dsc_technique_file = os.path.realpath('test_technique.ps1')
        with open(self.dsc_technique_file) as fd:
            self.dsc_content = fd.read()
Пример #22
0
 def test_parse_technique_generic_method_calls_strings(self):
     """Parsing a technique should return a list of it's generic method calls even if they are string literals"""
     bundle_calls = ncf.parse_technique_methods(self.test_technique_file)
     expected = [
         {
             'method_name': 'package_install_version',
             'args': ['${bla.apache_package_name}', '2.2.11'],
             'class_context': 'any'
         },
         {
             'method_name': 'service_start',
             'args': ['${bla.apache_package_name}'],
             'class_context': 'cfengine'
         },
         {
             'method_name': 'package_install',
             'args': ['openssh-server'],
             'class_context': 'cfengine'
         },
     ]
     self.assertEqual(bundle_calls, expected)
Пример #23
0
 def test_parse_technique_methods_unescape_double_quotes(self):
     test_parse_technique_methods_unescape_double_quotes_calls = ncf.parse_technique_methods(
         self.technique_metadata_test_content, self.all_methods)
     expected_result = [{
         'method_name': u'package_install_version',
         'class_context': u'any',
         'component': u'Install a package with correct version',
         'args': [u'apache2', u'2.2.11']
     }, {
         'method_name':
         u'file_replace_lines',
         'class_context':
         u'redhat',
         'component':
         u'Edit conf file',
         'args': [
             u'/etc/httpd/conf/httpd.conf',
             u'ErrorLog "/var/log/httpd/error_log"',
             u'ErrorLog "/projet/logs/httpd/error_log"'
         ]
     }]
     self.assertEqual(
         expected_result,
         test_parse_technique_methods_unescape_double_quotes_calls)
Пример #24
0
    def setUp(self):
        self.maxDiff = None
        self.test_expected_reports_csv_file = os.path.realpath(
            'test_expected_reports.csv')
        with open(self.test_expected_reports_csv_file) as fd:
            self.test_expected_reports_csv_content = fd.read()

        self.test_technique_file = os.path.realpath('test_technique.cf')
        with open(self.test_technique_file) as fd:
            self.technique_content = fd.read()
        self.technique_metadata = ncf.parse_technique_metadata(
            self.technique_content)
        method_calls = ncf.parse_technique_methods(self.test_technique_file)
        self.technique_metadata['method_calls'] = method_calls

        self.test_reporting = os.path.realpath('test_technique_reporting.cf')
        with open(self.test_reporting) as fd:
            self.reporting_content = fd.read()
        self.reporting_metadata = ncf.parse_technique_metadata(
            self.reporting_content)
        reporting_method_calls = ncf.parse_technique_methods(
            self.test_reporting)
        self.reporting_metadata['method_calls'] = reporting_method_calls

        self.test_reporting_with_var = os.path.realpath(
            'test_technique_with_variable.cf')
        with open(self.test_reporting_with_var) as fd:
            self.reporting_with_var_content = fd.read()
        self.reporting_with_var_metadata = ncf.parse_technique_metadata(
            self.reporting_with_var_content)
        reporting_with_var_method_calls = ncf.parse_technique_methods(
            self.test_reporting_with_var)
        self.reporting_with_var_metadata[
            'method_calls'] = reporting_with_var_method_calls

        self.test_any_technique = os.path.realpath('test_technique_any.cf')
        with open(self.test_any_technique) as fd:
            self.any_technique_content = fd.read()
        self.any_technique_metadata = ncf.parse_technique_metadata(
            self.any_technique_content)
        any_technique_method_calls = ncf.parse_technique_methods(
            self.test_any_technique)
        self.any_technique_metadata[
            'method_calls'] = any_technique_method_calls

        self.test_metadata_xml_file = os.path.realpath('test_metadata.xml')
        with open(self.test_metadata_xml_file) as fd:
            self.test_metadata_xml_content = fd.read()

        # Testing Techniques with quote
        self.test_technique_with_quote_file = os.path.realpath(
            'test_technique_with_quote.cf')
        self.technique_with_quote_content = open(
            self.test_technique_with_quote_file).read()
        self.technique_with_quote_metadata = ncf.parse_technique_metadata(
            self.technique_with_quote_content)
        method_with_quote_calls = ncf.parse_technique_methods(
            self.test_technique_with_quote_file)
        self.technique_with_quote_metadata[
            'method_calls'] = method_with_quote_calls

        self.test_expected_reports_with_quote_csv_file = os.path.realpath(
            'test_expected_reports_with_quote.csv')
        self.test_expected_reports_with_quote_csv_content = open(
            self.test_expected_reports_with_quote_csv_file).read()

        self.test_metadata_with_quote_xml_file = os.path.realpath(
            'test_metadata_with_quote.xml')
        self.test_metadata_with_quote_xml_content = open(
            self.test_metadata_with_quote_xml_file).read()