def setUp(self):
     self.object = ZAProxyHandler(get_config()['oxygen.zap'])
     self._params = {
         'instances': [True, False],
     }
     self.parser_mock = MagicMock(return_value=None)
     self.object._parse_zap_instance = self.parser_mock
 def setUp(self):
     self.object = ZAProxyHandler(get_config()['oxygen.zap'])
     self._params = {
         'alerts': [True, False],
     }
     self._parser = MagicMock(return_value=None)
     self.object._parse_zap_alert_dict = self._parser
class TestParseZapAlertDict(TestCase):
    def setUp(self):
        self.object = ZAProxyHandler(get_config()['oxygen.zap'])
        self._params = {
            'instances': [True, False],
        }
        self.parser_mock = MagicMock(return_value=None)
        self.object._parse_zap_instance = self.parser_mock

    def test_has_defaults(self):
        return_dict = self.object._parse_zap_alert_dict(self._params)
        assert ('name' in return_dict)
        assert (
            return_dict['name'] == '[Unknown Plugin ID] Unknown Alert Name')

    def test_keeps_params(self):
        self._params['pluginid'] = 'my plugin'
        self._params['name'] = 'my name'
        return_dict = self.object._parse_zap_alert_dict(self._params)
        assert ('name' in return_dict)
        assert (return_dict['name'] == 'my plugin my name')

    def test_passes_down(self):
        return_dict = self.object._parse_zap_alert_dict(self._params)
        self.parser_mock.assert_any_call(True, True, True)
        self.parser_mock.assert_any_call(False, True, True)
        assert (self.parser_mock.call_count == 2)
class TestParseZapSiteDict(TestCase):
    def setUp(self):
        self.object = ZAProxyHandler(get_config()['oxygen.zap'])
        self._params = {
            'alerts': [True, False],
        }
        self._parser = MagicMock(return_value=None)
        self.object._parse_zap_alert_dict = self._parser

    def test_has_defaults(self):
        return_dict = self.object._parse_zap_site_dict(self._params)
        assert ('name' in return_dict)
        assert (return_dict['name'] == 'Site: Unknown Site Name')
        assert ('tests' in return_dict)
        self._parser.assert_any_call(True)
        self._parser.assert_any_call(False)
        assert (self._parser.call_count == 2)

    def test_reads_prefixed(self):
        self._params['@name'] = 'My Site Name'
        return_dict = self.object._parse_zap_site_dict(self._params)
        assert ('name' in return_dict)
        assert (return_dict['name'] == 'Site: My Site Name')
        assert ('tests' in return_dict)
        self._parser.assert_any_call(True)
        self._parser.assert_any_call(False)
        assert (self._parser.call_count == 2)
 def setUp(self):
     self.object = ZAProxyHandler(get_config()['oxygen.zap'])
     self.params = {
         'version': None,
         'generated': None,
         'site': [True, False],
     }
     self.parser_mock = MagicMock(return_value=None)
     self.object._parse_zap_site_dict = self.parser_mock
class TestParseZapDict(TestCase):
    def setUp(self):
        self.object = ZAProxyHandler(get_config()['oxygen.zap'])
        self.params = {
            'version': None,
            'generated': None,
            'site': [True, False],
        }
        self.parser_mock = MagicMock(return_value=None)
        self.object._parse_zap_site_dict = self.parser_mock

    def test_has_defaults(self):
        return_dict = self.object._parse_zap_dict(self.params)
        expected_name = ('Oxygen ZAProxy Report (Unknown ZAProxy Version, '
                         'Unknown ZAProxy Run Time)')
        assert ('name' in return_dict)
        assert (return_dict['name'] == expected_name)

    def test_keepsparams(self):
        self.params['version'] = 'my version'
        self.params['generated'] = 'when'
        return_dict = self.object._parse_zap_dict(self.params)
        assert ('name' in return_dict)
        assert (return_dict['name'] == ('Oxygen ZAProxy Report '
                                        '(my version, when)'))

    def test_handles_oddparams(self):
        self.params['@version'] = 'my version'
        self.params['@generated'] = 'when'
        return_dict = self.object._parse_zap_dict(self.params)
        assert ('name' in return_dict)
        assert (return_dict['name'] == ('Oxygen ZAProxy Report '
                                        '(my version, when)'))

    def test_calls_down(self):
        return_dict = self.object._parse_zap_dict(self.params)
        self.parser_mock.assert_any_call(True)
        self.parser_mock.assert_any_call(False)
        assert (self.parser_mock.call_count == 2)
class TestXmlToDict(TestCase):
    def _create_example_xml(self):
        xml_head = ET.Element('xml_head')
        xml_container = ET.SubElement(xml_head, 'xml_container')
        ET.SubElement(xml_head, 'second_child')
        ET.SubElement(xml_container, 'first_contained')
        ET.SubElement(xml_container, 'second_contained')
        return xml_head

    def setUp(self):
        self.object = ZAProxyHandler(get_config()['oxygen.zap'])
        self._xml = self._create_example_xml()

    def test_converts_xml(self):
        returned_dict = self.object._xml_to_dict(self._xml)
        assert ('xml_head' in returned_dict)
        assert ('xml_container' in returned_dict['xml_head'])
        assert ('second_child' in returned_dict['xml_head'])
        assert ('first_contained'
                in returned_dict['xml_head']['xml_container'])
        assert ('second_contained'
                in returned_dict['xml_head']['xml_container'])
class TestParseZapInstance(TestCase):
    def setUp(self):
        self.object = ZAProxyHandler(get_config()['oxygen.zap'])
        self.object._parse_zap_site_dict = MagicMock(return_value=None)
        self.params = {}

    def test_has_defaults(self):
        return_dict = self.object._parse_zap_instance(self.params, True, True)
        expected_name = ('[Unknown HTTP Method] [Unknown Target URI]: '
                         '[Unknown Target Parameter]')
        assert ('name' in return_dict)
        assert (return_dict['name'] == expected_name)

    def test_keepsparams(self):
        self.params = {
            'uri': 'foo',
            'method': 'bar',
            'param': 'baz',
        }
        return_dict = self.object._parse_zap_instance(self.params, True, True)
        assert ('name' in return_dict)
        assert (return_dict['name'] == 'bar foo: baz')

    def test_is_fail_if_risk_and_confident(self):
        return_dict = self.object._parse_zap_instance(self.params, True, True)
        assert ('pass' in return_dict)
        assert (return_dict['pass'] == False)

    def test_is_pass_if_risk_and_not_confident(self):
        return_dict = self.object._parse_zap_instance(self.params, True, False)
        assert ('pass' in return_dict)
        assert (return_dict['pass'] == True)

    def test_is_pass_if_not_risk_and_confident(self):
        return_dict = self.object._parse_zap_instance(self.params, False, True)
        assert ('pass' in return_dict)
        assert (return_dict['pass'] == True)

    def test_is_pass_if_not_risk_and_not_confident(self):
        return_dict = self.object._parse_zap_instance(self.params, False,
                                                      False)
        assert ('pass' in return_dict)
        assert (return_dict['pass'] == True)
 def setUp(self):
     self.object = ZAProxyHandler(get_config()['oxygen.zap'])
     self._xml = self._create_example_xml()
 def setUp(self):
     self.object = ZAProxyHandler(get_config()['oxygen.zap'])
     self.object._parse_zap_site_dict = MagicMock(return_value=None)
     self.params = {}