def test_detail_dnshost_validity_flag(self):
        """
        Tests that the validity flag is correctly set and unset when a
        component's widget value is set to a correct and incorrect value.
        """
        site = SiteConfigurationManager.get_blank_site()
        dnshost = site.dnshost
        control_agent = DetailDNSHostControlAgent(dnshost)
        presentation_agent = control_agent.get_presentation_agent()

        observer = ValidityObserver()
        control_agent.get_event_bus().subscribe(
            DataValidityEvent, observer.validity_changed)

        presentation_agent['name'].set_text('abc')
        refresh_gui()
        self.assertTrue(observer.notified,
                        'validity observer has not been notified')
        self.assertTrue(observer.flag,
                        'dns validity should be true')

        presentation_agent['name'].set_text('@b c')
        refresh_gui()
        self.assertTrue(observer.notified,
                        'validity observer has not been notified')
        self.assertFalse(observer.flag,
                        'dnshost validity should be false')
        control_agent.get_event_bus().unsubscribe(
            DataValidityEvent, observer.validity_changed)