示例#1
0
class FlagChecksPanelTestCase(TestCase):
    def setUp(self):
        self.request = RequestFactory().get('/')
        self.toolbar = DebugToolbar(self.request)
        self.toolbar.stats = {}
        self.panel = self.toolbar.get_panel_by_id('FlagChecksPanel')

    @override_settings(FLAGS={'MYFLAG': [('boolean', True)]})
    def test_recording(self):
        self.assertEqual(len(self.panel.checks), 0)

        self.panel.enable_instrumentation()
        flag_state('MYFLAG')
        self.panel.disable_instrumentation()

        self.assertEqual(len(self.panel.checks), 1)

        response = self.panel.process_request(self.request)
        self.panel.generate_stats(self.request, response)
        checks = self.panel.get_stats()['checks']

        self.assertIn('MYFLAG', checks)
        self.assertEqual([
            True,
        ], checks['MYFLAG'])
示例#2
0
class BaseTestCase(TestCase):
    panel_id = None

    def setUp(self):
        super().setUp()
        self._get_response = lambda request: HttpResponse()
        self.request = rf.get("/")
        self.toolbar = DebugToolbar(self.request, self.get_response)
        self.toolbar.stats = {}

        if self.panel_id:
            self.panel = self.toolbar.get_panel_by_id(self.panel_id)
            self.panel.enable_instrumentation()
        else:
            self.panel = None

    def tearDown(self):
        if self.panel:
            self.panel.disable_instrumentation()
        super().tearDown()

    def get_response(self, request):
        return self._get_response(request)

    def assertValidHTML(self, content):
        parser = html5lib.HTMLParser()
        parser.parseFragment(content)
        if parser.errors:
            msg_parts = ["Invalid HTML:"]
            lines = content.split("\n")
            for position, errorcode, datavars in parser.errors:
                msg_parts.append("  %s" % html5lib.constants.E[errorcode] %
                                 datavars)
                msg_parts.append("    %s" % lines[position[0] - 1])
            raise self.failureException("\n".join(msg_parts))
示例#3
0
class FlagsPanelTestCase(TestCase):
    def setUp(self):
        self.request = RequestFactory().get("/")
        self.get_response = lambda req: HttpResponse()
        self.toolbar = DebugToolbar(self.request, self.get_response)
        self.toolbar.stats = {}
        self.panel = self.toolbar.get_panel_by_id("FlagsPanel")

    @override_settings(FLAGS={"MYFLAG": [("boolean", True)]})
    def test_flags_panel_has_flags(self):
        response = self.panel.process_request(self.request)
        self.panel.generate_stats(self.request, response)
        flags = self.panel.get_stats()["flags"]
        self.assertIn("MYFLAG", [f.name for f in flags])
        self.assertIn("enabled", self.panel.content)
示例#4
0
class FlagsPanelTestCase(TestCase):
    def setUp(self):
        self.request = RequestFactory().get('/')
        self.toolbar = DebugToolbar(self.request)
        self.toolbar.stats = {}
        self.panel = self.toolbar.get_panel_by_id('FlagsPanel')

    @override_settings(FLAGS={'MYFLAG': [('boolean', True)]})
    def test_flags_panel_has_flags_without_middleware(self):
        response = self.panel.process_request(self.request)
        self.panel.generate_stats(self.request, response)
        flags = self.panel.get_stats()['flags']
        self.assertIn('MYFLAG', [f.name for f in flags])
        self.assertIn('enabled', self.panel.content)

    @override_settings(FLAGS={'MYFLAG': [('boolean', True)]})
    def test_flags_panel_has_flags_with_middleware(self):
        self.middleware = FlagConditionsMiddleware()
        self.middleware.process_request(self.request)
        response = self.panel.process_request(self.request)
        self.panel.generate_stats(self.request, response)
        flags = self.panel.get_stats()['flags']
        self.assertIn('MYFLAG', [f.name for f in flags])
示例#5
0
class FlagChecksPanelTestCase(TestCase):
    def setUp(self):
        self.request = RequestFactory().get("/")
        self.toolbar = DebugToolbar(self.request)
        self.toolbar.stats = {}
        self.panel = self.toolbar.get_panel_by_id("FlagChecksPanel")

    @override_settings(FLAGS={"MYFLAG": [("boolean", True)]})
    def test_recording(self):
        self.assertEqual(len(self.panel.checks), 0)

        self.panel.enable_instrumentation()
        flag_state("MYFLAG")
        self.panel.disable_instrumentation()

        self.assertEqual(len(self.panel.checks), 1)

        response = self.panel.process_request(self.request)
        self.panel.generate_stats(self.request, response)
        checks = self.panel.get_stats()["checks"]

        self.assertIn("MYFLAG", checks)
        self.assertEqual([True], checks["MYFLAG"])
示例#6
0
class BaseTestCase(TestCase):
    panel_id = None

    def setUp(self):
        super().setUp()
        self._get_response = lambda request: HttpResponse()
        self.request = rf.get("/")
        self.toolbar = DebugToolbar(self.request, self.get_response)
        self.toolbar.stats = {}

        if self.panel_id:
            self.panel = self.toolbar.get_panel_by_id(self.panel_id)
            self.panel.enable_instrumentation()
        else:
            self.panel = None

    def tearDown(self):
        if self.panel:
            self.panel.disable_instrumentation()
        super().tearDown()

    def get_response(self, request):
        return self._get_response(request)

    def assertValidHTML(self, content, msg=None):
        parser = html5lib.HTMLParser()
        parser.parseFragment(self.panel.content)
        if parser.errors:
            default_msg = ["Content is invalid HTML:"]
            lines = content.split("\n")
            for position, errorcode, datavars in parser.errors:
                default_msg.append("  %s" % html5lib.constants.E[errorcode] % datavars)
                default_msg.append("    %s" % lines[position[0] - 1])

            msg = self._formatMessage(msg, "\n".join(default_msg))
            raise self.failureException(msg)