Exemple #1
0
    def setUpTestData(cls):
        cls.domain = "registry-fixture-test"
        cls.domain_obj = create_domain(cls.domain)
        cls.domain_obj.hr_name = "Registry Fixture Test"
        cls.domain_obj.save()
        cls.restore_user = create_restore_user(cls.domain,
                                               username=f'{cls.domain}-user')
        cls.restore_user_domain_1 = create_restore_user(
            "domain1", username='******')

        invitations = [Invitation("domain1"), Invitation("domain2")]
        grants = [
            Grant("domain1", [cls.domain]),
            Grant("domain2", [cls.domain])
        ]
        cls.registry = create_registry_for_test(
            cls.restore_user._couch_user.get_django_user(),
            cls.domain,
            invitations=invitations,
            grants=grants,
            name="Test Registry")
        factory = AppFactory(domain=cls.domain)
        module1, form1 = factory.new_basic_module("patient", "patient")
        module1.search_config.properties = [CaseSearchProperty()]
        module1.search_config.data_registry = cls.registry.slug

        factory.new_report_module("reports")

        cls.app = factory.app
        cls.app.save()
    def setUpClass(cls):
        super().setUpClass()

        cls.user = create_user("admin", "123")

        cls.registry_owner_domain = "registry-owner"
        cls.participator_1 = "domain1"
        cls.participator_2 = "domain2"
        cls.participator_3 = "domain3"
        cls.participants = (cls.participator_1, cls.participator_2,
                            cls.participator_3)
        invitations = [Invitation(domain) for domain in cls.participants]
        grants = [
            Grant(from_domain=cls.participator_1,
                  to_domains=[cls.participator_2, cls.participator_3]),
            Grant(from_domain=cls.participator_2,
                  to_domains=[cls.participator_1]),
        ]
        cls.registry_1 = create_registry_for_test(
            cls.user,
            cls.registry_owner_domain,
            invitations=invitations,
            grants=grants,
        )

        # UCR in domain1 should get data from itself and from domain2
        cls.config = get_sample_registry_data_source(
            domain=cls.participator_1, registry_slug=cls.registry_1.slug)
        cls.config.save()
        cls.adapter = get_indicator_adapter(cls.config)
        cls.adapter.build_table()
        cls.pillow = get_kafka_ucr_registry_pillow(ucr_configs=[cls.config],
                                                   processor_chunk_size=100)
Exemple #3
0
 def test_get_granted_domains(self):
     invitations = [Invitation('A'), Invitation('B'), Invitation('C')]
     grants = [
         Grant("A", ["B"]),
         Grant("B", ["A", "C"]),
         Grant("C", ["A"]),
     ]
     registry = create_registry_for_test(self.user, self.domain, invitations, grants, name="reg1")
     self.assertEqual({"A"}, registry.get_granted_domains("B"))
     self.assertEqual({"B", "C"}, registry.get_granted_domains("A"))
     self.assertEqual({"B"}, registry.get_granted_domains("C"))
Exemple #4
0
    def setUpClass(cls):
        super().setUpClass()
        cls.domain = 'registry-permissions'
        cls.user = create_user('admin', '123')

        cls.registry_slug = create_registry_for_test(
            cls.user,
            cls.domain,
            invitations=[Invitation("A"), Invitation("B")],
            grants=[
                Grant("A", [cls.domain]),
                Grant("B", [cls.domain]),
            ],
            name="reg1",
            case_types=["herb"]).slug
Exemple #5
0
    def setUpClass(cls):
        super().setUpClass()
        cls.user = create_user("admin", "123")
        cls.domain_1 = "jane-the-virgin"
        cls.setup_domain(cls.domain_1, [
            case("Jane", 'person', {"family": "Villanueva"}),
            case("Xiomara", 'person', {"family": "Villanueva"}),
            case("Alba", 'person', {"family": "Villanueva"}),
            case("Rogelio", 'person', {"family": "de la Vega"}),
            case("Jane", 'person', {"family": "Ramos"}),
        ] + parent_and_child_cases(
            "Jennie Snyder Urman",
            "Jane the Virgin",
        ))
        cls.domain_2 = "jane-eyre"
        cls.setup_domain(cls.domain_2, [
            case("Jane", 'person', {"family": "Eyre"}),
            case("Sarah", 'person', {"family": "Reed"}),
            case("John", 'person', {"family": "Reed"}),
            case("Eliza", 'person', {"family": "Reed"}),
            case("Georgiana", 'person', {"family": "Reed"}),
        ] + parent_and_child_cases(
            "Charlotte Brontë",
            "Jane Eyre",
        ))
        cls.domain_3 = "janes-addiction"
        cls.setup_domain(cls.domain_3, [
            case("Jane", 'person', {"family": "Villanueva"}),
            case("Perry", 'person', {"family": "Farrell"}),
            case("Dave", 'person', {"family": "Navarro"}),
            case("Stephen", 'person', {"family": "Perkins"}),
            case("Chris", 'person', {"family": "Chaney"}),
        ])

        cls.registry_slug = create_registry_for_test(
            cls.user,
            cls.domain_1,
            invitations=[
                Invitation(cls.domain_2),
                Invitation(cls.domain_3),
            ],
            grants=[
                Grant(cls.domain_1, [cls.domain_2]),
                Grant(cls.domain_2, [cls.domain_1]),
                Grant(cls.domain_3, [cls.domain_1]),
            ],
            name="reg1",
            case_types=["person", "creative_work"]).slug
    def setUpClass(cls):
        super(DomainChoiceProviderTest, cls).setUpClass()
        cls.domain_a = create_domain(name="A")
        cls.domain_b = create_domain(name="B")
        cls.domain_c = create_domain(name="C")
        cls.domain_d = create_domain(name="D")
        for domain in [cls.domain_a, cls.domain_b, cls.domain_c, cls.domain_d]:
            domain.save()
        cls.user = create_user("admin", "123")
        cls.web_user = cls.make_web_user_with_registry_role(
            '*****@*****.**', cls.domain_a, has_registry_access=True)
        cls.web_user_no_registry_access = cls.make_web_user_with_registry_role(
            '*****@*****.**', cls.domain_a)

        invitations = [Invitation('A'), Invitation('B'), Invitation('C')]
        # A, B, and C are in the registry A has access to B and C, B has access to C
        grants = [
            Grant("C", ["B", "A"]),
            Grant("B", ["A"]),
            Grant("A", []),
        ]
        cls.registry = create_registry_for_test(cls.user,
                                                cls.domain,
                                                invitations,
                                                grants=grants,
                                                name="registry")

        cls.config = RegistryDataSourceConfiguration(
            domain="A",
            table_id='foo',
            referenced_doc_type='CommCareCase',
            registry_slug=cls.registry.slug,
        )
        cls.config.save()

        cls.report = RegistryReportConfiguration(domain="A",
                                                 config_id=cls.config._id)
        cls.report.save()

        choices = [
            SearchableChoice("A", "A", ["A"]),
            SearchableChoice("B", "B", ["B"]),
            SearchableChoice("C", "C", ["C"]),
        ]
        choices.sort(key=lambda choice: choice.display)
        cls.choice_provider = DomainChoiceProvider(cls.report, None)
        cls.static_choice_provider = StaticChoiceProvider(choices)
Exemple #7
0
 def test_get_accessible_grants(self):
     invitations = [
         Invitation('A'),
         Invitation('B'),
     ]
     create_registry_for_test(self.user, self.domain, invitations, grants=[Grant("B", ["A"])], name="reg1")
     self.assertEqual(
         {"reg1"},
         {reg.slug for reg in DataRegistry.objects.accessible_to_domain('A', has_grants=True)}
     )
     # B has no grants
     self.assertEqual(0, len(DataRegistry.objects.accessible_to_domain('B', has_grants=True)))
    def setUpTestData(cls):
        cls.user = create_user("admin", "123")

        cls.registry_1 = create_registry_for_test(
            cls.user,
            'foo_bar',
            invitations=[
                Invitation(cls.domain),
                Invitation("granted-domain"),
            ],
            grants=[Grant("granted-domain", to_domains=[cls.domain])],
            name='test')

        cls.registry_2 = create_registry_for_test(
            cls.user,
            'bazz',
            invitations=[
                Invitation(cls.domain),
                Invitation("other-domain"),
            ],
            grants=[Grant("other-domain", to_domains=[cls.domain])],
            name='bazz')
    def setUpClass(cls):
        super().setUpClass()
        cls.domain_obj = create_domain(cls.domain)

        # DATA_FORWARDING is on PRO and above
        cls.setup_subscription(cls.domain, SoftwarePlanEdition.PRO)

        cls.connx = ConnectionSettings.objects.create(
            domain=cls.domain,
            url="case-repeater-url/{domain}/",
            username="******")
        cls.repeater = DataRegistryCaseUpdateRepeater(
            domain=cls.domain,
            connection_settings_id=cls.connx.id,
            white_listed_case_types=[IntentCaseBuilder.CASE_TYPE])
        cls.repeater.save()

        cls.user = create_user("admin", "123")
        cls.registry_slug = create_registry_for_test(
            cls.user,
            cls.domain,
            invitations=[
                Invitation(cls.target_domain),
            ],
            grants=[
                Grant(cls.target_domain, [cls.domain]),
            ],
            name="reg1",
            case_types=["patient"]).slug

        cls.mobile_user = CommCareUser.create(cls.domain,
                                              "user1",
                                              "123",
                                              None,
                                              None,
                                              is_admin=True)

        cls.target_case_id_1 = uuid.uuid4().hex
        cls.target_case_id_2 = uuid.uuid4().hex
        post_case_blocks([
            CaseBlock(
                case_id=case_id,
                create=True,
                case_type="patient",
            ).as_xml()
            for case_id in [cls.target_case_id_1, cls.target_case_id_2]
        ],
                         domain=cls.target_domain)
Exemple #10
0
 def test_get_accessible_grants_no_invite(self):
     create_registry_for_test(self.user, self.domain, grants=[Grant("B", ["A"])])
     self.assertEqual(0, len(DataRegistry.objects.accessible_to_domain("A", has_grants=True)))