from unittest import TestCase
from distribution.managers.auth import APIUserManager

from distribution.managers.backends import current_backend


class APIUserManagerTestCase(TestCase):

    def test_build_search_query(self):
        current_backend.indices = {
            'distribution_auth': {
                'real_index_name': 'distribution_auth_aaaaaaaaaa'
            }
        }
        manager = APIUserManager('examplemodelclass')

        query_without_args = manager.build_search_query()

        test_terms = [{
            'term': {
                'arg2': 'arg2_name'
            }
        }, {
            'term': {
                'arg1': 'arg1_name'
            }
        }]

        self.assertIsNone(query_without_args)

        query_with_args = manager.build_search_query(
            arguments={'arg1': 'arg1_name', 'arg2': 'arg2_name'})

        self.assertItemsEqual(query_with_args['post_filter']['bool']['must'], test_terms)

        query_without_args = manager.build_search_query()

        self.assertIsNone(query_without_args)
