Ejemplo n.º 1
0
    def test_location_restricted_cases(self):
        domain_obj = bootstrap_domain(self.domain)
        self.addCleanup(domain_obj.delete)

        location_type_names = ['state', 'county', 'city']
        location_structure = [('Massachusetts', [('Middlesex', [
            ('Cambridge', []),
            ('Somerville', []),
        ]), ('Suffolk', [
            ('Boston', []),
        ])])]
        locations = setup_locations_and_types(self.domain, location_type_names,
                                              [], location_structure)[1]
        middlesex_user = CommCareUser.create(self.domain, 'guy-from-middlesex',
                                             '***', None, None)

        middlesex_user.add_to_assigned_locations(locations['Middlesex'])
        restrict_user_by_location(self.domain, middlesex_user)

        fake_request = MagicMock()
        fake_request.domain = self.domain
        fake_request.couch_user = middlesex_user

        self._send_case_to_es(owner_id=locations['Boston'].get_id)
        middlesex_case = self._send_case_to_es(
            owner_id=locations['Middlesex'].get_id)
        cambridge_case = self._send_case_to_es(
            owner_id=locations['Cambridge'].get_id)

        returned_case_ids = query_location_restricted_cases(
            CaseES().domain(self.domain), fake_request).get_ids()
        self.assertItemsEqual(returned_case_ids,
                              [middlesex_case.case_id, cambridge_case.case_id])
Ejemplo n.º 2
0
def restrict_user_to_location(test_case, location):
    orig_user = test_case.couch_user

    restricted_user = WebUser.create(test_case.domain, "restricted", "s3cr3t")
    restricted_user.set_location(test_case.domain, location)
    restrict_user_by_location(test_case.domain, restricted_user)
    test_case.couch_user = restricted_user
    try:
        yield
    finally:
        test_case.couch_user = orig_user
        restricted_user.delete()