def test_with_cc_users(self):
        with_sessions = _login_or_challenge(passing_decorator,
                                            allow_cc_users=True,
                                            allow_sessions=True)
        no_sessions = _login_or_challenge(passing_decorator,
                                          allow_cc_users=True,
                                          allow_sessions=False)
        for decorator in [with_sessions, no_sessions]:
            test = decorator(sample_view)
            request = _get_request(self.web_django_user)
            self.assertEqual(SUCCESS, test(request, self.domain_name))

            request = _get_request(self.commcare_django_user)
            self.assertEqual(SUCCESS, test(request, self.domain_name))
 def _get_test_for_web_user(self,
                            allow_cc_users,
                            allow_sessions,
                            require_domain=True):
     web_decorator = _login_or_challenge(get_passing_decorator(
         self.web_django_user),
                                         allow_cc_users=allow_cc_users,
                                         allow_sessions=allow_sessions,
                                         require_domain=require_domain)
     return web_decorator(sample_view)
    def test_no_domain_with_sessions(self):
        decorator = _login_or_challenge(passing_decorator,
                                        allow_cc_users=True,
                                        allow_sessions=True,
                                        require_domain=False)
        test = decorator(sample_view)

        request = _get_request(self.web_django_user)
        self.assertEqual(SUCCESS, test(request))

        request = _get_request(self.commcare_django_user)
        self.assertEqual(SUCCESS, test(request))
    def test_no_cc_users_with_sessions(self):
        # with sessions, we just assume the user is already on the request, so the decorator doesn't matter
        decorator = _login_or_challenge(passing_decorator,
                                        allow_cc_users=False,
                                        allow_sessions=True)
        test = decorator(sample_view)
        web_request = _get_request(self.web_django_user)
        mobile_request = _get_request(self.commcare_django_user)

        self.assertEqual(SUCCESS, test(web_request, self.domain_name))
        # note: this behavior is surprising and arguably incorrect, but just documenting it here for now
        self.assertEqual(SUCCESS, test(mobile_request, self.domain_name))
 def test_no_user_set(self):
     # no matter what, no user = no success
     for allow_cc_users in (True, False):
         for allow_sessions in (True, False):
             for require_domain in (True, False):
                 decorator = _login_or_challenge(
                     passing_decorator,
                     allow_cc_users=allow_cc_users,
                     allow_sessions=allow_sessions,
                     require_domain=require_domain)
                 test = decorator(sample_view)
                 request = _get_request()
                 self.assertForbidden(test(request, self.domain_name))