def test_login_tile(self):
        # For a logged-in user, the login tile should be empty
        self.browser.open(
            self.portalURL
            + '/@@plone.app.standardtiles.login'
        )

        self.assertNotIn('loginform', self.browser.contents)

        root = fromstring(self.browser.contents)
        nodes = root.xpath('//body/*')
        self.assertEqual(len(nodes), 0)

        # When we are not logged in, we should get the form::
        self.unprivileged_browser.open(
            self.portalURL
            + '/@@plone.app.standardtiles.login'
        )

        self.assertIn('loginform', self.unprivileged_browser.contents)
        self.assertNotIn('@@register', self.unprivileged_browser.contents)

        root = fromstring(self.unprivileged_browser.contents)
        nodes = root.xpath('//body//*[@id="loginform"]')
        self.assertEqual(len(nodes), 1)

        # By default, we should not have the "register" link in there::

        root = fromstring(self.unprivileged_browser.contents)
        nodes = root.xpath('//body//a[@href="http://nohost/plone/@@register"]')
        self.assertEqual(len(nodes), 0)

        # But if we enable self-registration, it should show up::

        security_settings = ISecuritySchema(self.portal)
        security_settings.set_enable_self_reg(True)
        transaction.commit()

        self.unprivileged_browser.open(
            self.portalURL
            + '/@@plone.app.standardtiles.login'
        )

        self.assertIn('@@register', self.unprivileged_browser.contents)

        root = fromstring(self.unprivileged_browser.contents)
        nodes = root.xpath('//body//a[@href="http://nohost/plone/@@register"]')
        self.assertEqual(len(nodes), 1)
    def test_login_tile(self):
        # For a logged-in user, the login tile should be empty
        self.browser.open(self.portalURL + '/@@plone.app.standardtiles.login')

        self.assertNotIn('loginform', self.browser.contents)

        root = fromstring(self.browser.contents)
        nodes = root.xpath('//body//*[@id="loginform"]')
        self.assertEqual(len(nodes), 0)

        # When we are not logged in, we should get the form::
        self.unprivileged_browser.open(self.portalURL +
                                       '/@@plone.app.standardtiles.login')

        self.assertIn('loginform', self.unprivileged_browser.contents)
        self.assertNotIn('@@register', self.unprivileged_browser.contents)

        root = fromstring(self.unprivileged_browser.contents)
        nodes = root.xpath('//body//*[@id="loginform"]')
        self.assertEqual(len(nodes), 1)

        # By default, we should not have the "register" link in there::

        root = fromstring(self.unprivileged_browser.contents)
        nodes = root.xpath('//body//a[@href="http://nohost/plone/@@register"]')
        self.assertEqual(len(nodes), 0)

        # But if we enable self-registration, it should show up::

        security_settings = ISecuritySchema(self.portal)
        security_settings.set_enable_self_reg(True)
        transaction.commit()

        self.unprivileged_browser.open(self.portalURL +
                                       '/@@plone.app.standardtiles.login')

        self.assertIn('@@register', self.unprivileged_browser.contents)

        root = fromstring(self.unprivileged_browser.contents)
        nodes = root.xpath('//body//a[@href="http://nohost/plone/@@register"]')
        self.assertEqual(len(nodes), 1)