def test_userLogin_with_expression(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # finally setting sutable expression
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'login_redirect_expr'] = u'string:some_url'

        # setting the some header which must be changed on getting expression
        portal.REQUEST.RESPONSE.setHeader('Location', 'not_using')
        userLogin(portal, None)
        self.assertEqual('some_url',
                         portal.REQUEST.RESPONSE.getHeader('Location'))

        # and checking case when came_from attribute is not None in the same way
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'login_redirect_expr'] = u'string:some_another_url'
        portal.REQUEST.RESPONSE.setHeader('Location', 'not_using_too')
        portal.REQUEST['came_from'] = 'not_redirect_on_this_page'

        # set the ignoring_came_from becouse of the default value is False
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'login_redirect_ignore_came_from'] = True
        userLogin(portal, portal.REQUEST)
        self.assertEqual('some_another_url',
                         portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_with_expression(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # finally setting sutable expression
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'login_redirect_expr'] = u'string:some_url'

        # setting the some header which must be changed on getting expression
        portal.REQUEST.RESPONSE.setHeader('Location', 'not_using')
        userLogin(portal, None)
        self.assertEqual('some_url',
            portal.REQUEST.RESPONSE.getHeader('Location'))

        # and checking case when came_from attribute is not None in the same way
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'login_redirect_expr'] = u'string:some_another_url'
        portal.REQUEST.RESPONSE.setHeader('Location', 'not_using_too')
        portal.REQUEST['came_from'] = 'not_redirect_on_this_page'

        # set the ignoring_came_from becouse of the default value is False
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'login_redirect_ignore_came_from'] = True
        userLogin(portal, portal.REQUEST)
        self.assertEqual('some_another_url',
            portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_enable_initial_login(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # check when function doesn't doing redirect becouse of providing the
        alsoProvides(portal.REQUEST, IUserInitialLoginInEvent)
        portal.REQUEST.RESPONSE.setHeader('Location', 'affecting_initial_login')
        userLogin(portal, portal.REQUEST)
        self.assertEqual('affecting_initial_login',
            portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_enable_initial_login(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # check when function doesn't doing redirect becouse of providing the
        alsoProvides(portal.REQUEST, IUserInitialLoginInEvent)
        portal.REQUEST.RESPONSE.setHeader('Location',
                                          'affecting_initial_login')
        userLogin(portal, portal.REQUEST)
        self.assertEqual('affecting_initial_login',
                         portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_not_TAL_expression(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # now setting some not suitable expression to check Exception case
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'login_redirect_expr'] = u'not_TAL_expression'

        portal.REQUEST.RESPONSE.setHeader('Location', 'not_correct_expression')
        userLogin(portal, None)
        self.assertEqual('not_correct_expression',
                         portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_none_expression(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # checking the header when expression of where must be redirecting is
        # None
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'login_redirect_expr'] = u''
        portal.REQUEST.RESPONSE.setHeader('Location', 'without_expression')
        userLogin(portal, None)
        self.assertEqual('without_expression',
                         portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_not_TAL_expression(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # now setting some not suitable expression to check Exception case
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'login_redirect_expr'] = u'not_TAL_expression'

        portal.REQUEST.RESPONSE.setHeader('Location', 'not_correct_expression')
        userLogin(portal, None)
        self.assertEqual('not_correct_expression',
            portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_none_expression(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # checking the header when expression of where must be redirecting is
        # None
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'login_redirect_expr'] = u''
        portal.REQUEST.RESPONSE.setHeader('Location', 'without_expression')
        userLogin(portal, None)
        self.assertEqual('without_expression',
            portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_disable_redirect(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # check if our function doesn't doing redirect in our case the header
        # location doesn't changed when the onlogin redirect checkbox is setting
        # to False
        portal.REQUEST.RESPONSE.setHeader('Location', 'onlogin_disable')
        registry['collective.onlogin.interfaces.IOnloginSettings.'\
            'login_redirect_enabled'] = False
        userLogin(portal, None)
        self.assertEqual('onlogin_disable',
                         portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_disable_redirect(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # check if our function doesn't doing redirect in our case the header
        # location doesn't changed when the onlogin redirect checkbox is setting
        # to False
        portal.REQUEST.RESPONSE.setHeader('Location', 'onlogin_disable')
        registry['collective.onlogin.interfaces.IOnloginSettings.'\
            'login_redirect_enabled'] = False
        userLogin(portal, None)
        self.assertEqual('onlogin_disable',
            portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_enable_ignoring_came_from(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # set first onlogin checkbox to disable and no longer provides the
        # initial login
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'first_login_redirect_enabled'] = False

        # checking the ignoring of came_from attribute
        portal.REQUEST['came_from'] = 'some_url'
        portal.REQUEST.RESPONSE.setHeader('Location', 'ignoring_came_from')
        userLogin(portal, portal.REQUEST)
        self.assertEqual('ignoring_came_from',
                         portal.REQUEST.RESPONSE.getHeader('Location'))
    def test_userLogin_enable_ignoring_came_from(self):
        portal = self.layer['portal']
        registry = getUtility(IRegistry)

        # set first onlogin checkbox to disable and no longer provides the
        # initial login
        registry['collective.onlogin.interfaces.IOnloginSettings.' \
            'first_login_redirect_enabled'] = False

        # checking the ignoring of came_from attribute
        portal.REQUEST['came_from'] = 'some_url'
        portal.REQUEST.RESPONSE.setHeader('Location', 'ignoring_came_from')
        userLogin(portal, portal.REQUEST)
        self.assertEqual('ignoring_came_from',
            portal.REQUEST.RESPONSE.getHeader('Location'))