Ejemplo n.º 1
0
    def test_login_as_user_query_user_data(self):
        self._send_user_to_es(user_data={'wild': 'child', 'wall': 'flower'})
        self._send_user_to_es(user_data={})
        self._send_user_to_es()
        self._send_user_to_es(user_data={'wild': 'wrong'})

        self.assertEqual(
            login_as_user_query(
                self.domain,
                MagicMock(),
                'child',
                10,
                0,
                user_data_fields=['wild'],
            ).count(),
            1
        )

        # Do not fuzzy match
        self.assertEqual(
            login_as_user_query(
                self.domain,
                MagicMock(),
                'chil',
                10,
                0,
                user_data_fields=['wild'],
            ).count(),
            0
        )
Ejemplo n.º 2
0
    def test_login_as_user_query_user_data(self):
        self._send_user_to_es(user_data={'wild': 'child', 'wall': 'flower'})
        self._send_user_to_es(user_data={})
        self._send_user_to_es()
        self._send_user_to_es(user_data={'wild': 'wrong'})

        self.assertEqual(
            login_as_user_query(
                self.domain,
                MagicMock(),
                'child',
                10,
                0,
                user_data_fields=['wild'],
            ).count(), 1)

        # Do not fuzzy match
        self.assertEqual(
            login_as_user_query(
                self.domain,
                MagicMock(),
                'chil',
                10,
                0,
                user_data_fields=['wild'],
            ).count(), 0)
Ejemplo n.º 3
0
 def _user_query(self, search_string, page, limit):
     user_data_fields = []
     return login_as_user_query(self.domain,
                                self.couch_user,
                                search_string,
                                limit,
                                page * limit,
                                user_data_fields=user_data_fields)
Ejemplo n.º 4
0
 def _user_query(self, search_string, page, limit):
     return login_as_user_query(
         self.domain,
         self.couch_user,
         search_string,
         limit,
         page * limit,
     )
Ejemplo n.º 5
0
    def test_limited_users(self):
        self._send_user_to_es(username='******')
        self._send_user_to_es(username='******',
                              user_data={'login_as_user': '******'})

        with patch('corehq.apps.cloudcare.esaccessors._limit_login_as',
                   return_value=True):
            self.assertEqual(
                login_as_user_query(self.domain, MagicMock(username='******'),
                                    None, 10, 0, []).count(), 1)
Ejemplo n.º 6
0
 def _user_query(self, search_string, page, limit):
     user_data_fields = []
     if toggles.ENIKSHAY.enabled(self.domain):
         user_data_fields = ['id_issuer_number']
     return login_as_user_query(self.domain,
                                self.couch_user,
                                search_string,
                                limit,
                                page * limit,
                                user_data_fields=user_data_fields)
Ejemplo n.º 7
0
 def _user_query(self, search_string, page, limit):
     user_data_fields = []
     return login_as_user_query(
         self.domain,
         self.couch_user,
         search_string,
         limit,
         page * limit,
         user_data_fields=user_data_fields
     )
Ejemplo n.º 8
0
    def test_login_as_user_query_all(self):
        self._send_user_to_es(username='******')
        self._send_user_to_es(username='******')

        self.assertEqual(
            login_as_user_query(
                self.domain,
                MagicMock(),
                None,
                10,
                0,
            ).count(),
            2,
        )
Ejemplo n.º 9
0
    def test_login_as_user_query_all(self):
        self._send_user_to_es(username='******')
        self._send_user_to_es(username='******')

        self.assertEqual(
            login_as_user_query(
                self.domain,
                MagicMock(),
                None,
                10,
                0,
            ).count(),
            2,
        )
Ejemplo n.º 10
0
    def test_login_as_user_query_username(self):
        self._send_user_to_es(username='******')
        self._send_user_to_es(username='******')
        self._send_user_to_es(username='******')

        self.assertEqual(
            login_as_user_query(
                self.domain,
                MagicMock(),
                'super',
                10,
                0,
            ).count(),
            2,
        )
Ejemplo n.º 11
0
    def test_login_as_user_query_username(self):
        self._send_user_to_es(username='******')
        self._send_user_to_es(username='******')
        self._send_user_to_es(username='******')

        self.assertEqual(
            login_as_user_query(
                self.domain,
                MagicMock(),
                'super',
                10,
                0,
            ).count(),
            2,
        )
Ejemplo n.º 12
0
    def test_login_as_user_query_username_or_user_data(self):
        self._send_user_to_es(username='******')
        self._send_user_to_es(username='******', user_data={'wild': 'nope'})
        self._send_user_to_es(username='******', user_data={'wild': 'super'})
        self._send_user_to_es(username='******', user_data={'wild': 'super'})

        self.assertEqual(
            login_as_user_query(
                self.domain,
                MagicMock(),
                'super',
                10,
                0,
                user_data_fields=['wild'],
            ).count(),
            3,
        )
Ejemplo n.º 13
0
    def test_login_as_user_query_username_or_user_data(self):
        self._send_user_to_es(username='******')
        self._send_user_to_es(username='******', user_data={'wild': 'nope'})
        self._send_user_to_es(username='******', user_data={'wild': 'super'})
        self._send_user_to_es(username='******', user_data={'wild': 'super'})

        self.assertEqual(
            login_as_user_query(
                self.domain,
                MagicMock(),
                'super',
                10,
                0,
                user_data_fields=['wild'],
            ).count(),
            3,
        )
Ejemplo n.º 14
0
    def get_restore_as_user(request, domain):
        """
        returns (user, set_cookie), where set_cookie is a function to be called on
        the eventual response
        """

        if not hasattr(request, 'couch_user'):
            raise Http404()

        def set_cookie(response):  # set_coookie is a noop by default
            return response

        cookie_name = urllib.parse.quote('restoreAs:{}:{}'.format(
            domain, request.couch_user.username))
        username = request.COOKIES.get(cookie_name)
        if username:
            user = CouchUser.get_by_username(format_username(username, domain))
            if user:
                return user, set_cookie
            else:

                def set_cookie(
                        response):  # overwrite the default noop set_cookie
                    response.delete_cookie(cookie_name)
                    return response

        elif request.couch_user.has_permission(domain, 'limited_login_as'):
            login_as_users = login_as_user_query(domain,
                                                 request.couch_user,
                                                 search_string='',
                                                 limit=1,
                                                 offset=0).run()
            if login_as_users.total == 1:

                def set_cookie(response):
                    response.set_cookie(cookie_name,
                                        user.raw_username,
                                        secure=settings.SECURE_COOKIES)
                    return response

                user = CouchUser.get_by_username(
                    login_as_users.hits[0]['username'])
                return user, set_cookie

        return request.couch_user, set_cookie