예제 #1
0
    def test_group_management(self, client, factory, namespace, view_name,
                              group_attr):
        o = factory()
        group = getattr(o, group_attr)

        admin = UserFactory()
        u = UserFactory()

        assert not group.user_set.filter(pk=u.pk).exists()

        def get_user_autocomplete():
            return get_view_for_user(
                client=client,
                viewname="users-autocomplete",
                user=admin,
                data={"q": u.username.lower()},
            )

        response = get_user_autocomplete()
        assert response.status_code == 403

        o.add_editor(admin)

        response = get_user_autocomplete()
        assert response.status_code == 200
        assert str(u.pk) in response.json()["results"][0]["id"]
        assert (html_escape(str(u.user_profile.get_mugshot_url()))
                in response.json()["results"][0]["text"])
        assert u.username in response.json()["results"][0]["text"]
        assert u.get_full_name() in response.json()["results"][0]["text"]

        response = get_view_for_user(
            client=client,
            viewname=f"{namespace}:{view_name}-update",
            reverse_kwargs={"slug": o.slug},
            user=admin,
            method=client.post,
            data={
                "action": "ADD",
                "user": u.pk
            },
        )
        assert response.status_code == 302
        assert group.user_set.filter(pk=u.pk).exists()

        response = get_view_for_user(
            client=client,
            viewname=f"{namespace}:{view_name}-update",
            reverse_kwargs={"slug": o.slug},
            user=admin,
            method=client.post,
            data={
                "action": "REMOVE",
                "user": u.pk
            },
        )
        assert response.status_code == 302
        assert not group.user_set.filter(pk=u.pk).exists()
예제 #2
0
    def test_autocomplete_filter_options(self, client, filter, is_verified):
        archive = ArchiveFactory()

        admin = UserFactory()
        archive.add_editor(admin)
        first_name = "Jane"
        last_name = "Doe"

        if is_verified:
            u = UserFactory()
            VerificationFactory(user=u, is_verified=True)
            u.first_name = first_name
            u.last_name = last_name
            u.save()

        else:
            u = UserFactory(first_name=first_name, last_name=last_name)

        u.full_name = u.get_full_name().title()
        filter_criterion = getattr(u, filter)

        def get_user_autocomplete():
            return get_view_for_user(
                client=client,
                viewname="users-autocomplete",
                user=admin,
                data={"q": filter_criterion},
            )

        response = get_user_autocomplete()
        assert response.status_code == 200

        assert str(u.pk) in response.json()["results"][0]["id"]
        assert (
            html_escape(str(u.user_profile.get_mugshot_url()))
            in response.json()["results"][0]["text"]
        )
        assert u.username in response.json()["results"][0]["text"]
        assert u.get_full_name() in response.json()["results"][0]["text"]
        if is_verified:
            assert (
                u.verification.email.split("@")[1]
                in response.json()["results"][0]["text"]
            )
예제 #3
0
    def test_get_full_name(self):
        def valid_method(first_name, last_name):
            return "%s %s" % (last_name, first_name)

        def invalid_method1(first_name):
            return first_name

        def invalid_method2(first_name, last_name):
            return None

        def invalid_method3(first_name, last_name):
            return " "

        def invalid_method4(first_name, last_name):
            return b"my_name"

        def invalid_method5(first_name, last_name):
            return "my_name"

        def invalid_method6(first_name, last_name):
            return Exception()

        default_user_dict = {"first_name": "first_name", "last_name": "last_name"}
        default_result = "first_name last_name"

        user_get_full_name_test_kwargs_list = (
            ({"id": 1,
              "custom_method": None,
              "user_dict": {},
              "default": '',
              "not_allow_blank": None,
              "force_verbose_blank": "(blank) (blank)"}),
            ({"id": 2,
              "custom_method": None,
              "user_dict": default_user_dict,
              "default": default_result,
              "not_allow_blank": default_result,
              "force_verbose_blank": default_result}),
            ({"id": 3,
              "custom_method": valid_method,
              "user_dict": default_user_dict,
              "default": "last_name first_name",
              "not_allow_blank": "last_name first_name",
              "force_verbose_blank": "last_name first_name"}),
            ({"id": 4,
              "custom_method": invalid_method1,
              "user_dict": default_user_dict,
              "default": default_result,
              "not_allow_blank": default_result,
              "force_verbose_blank": default_result,
              "check_messages": ['relate_user_full_name_format_method.W003']}),
            ({"id": 5,
              "custom_method": invalid_method2,
              "user_dict": default_user_dict,
              "default": default_result,
              "not_allow_blank": default_result,
              "force_verbose_blank": default_result,
              "check_messages": ['relate_user_full_name_format_method.W004']}),
            ({"id": 6,
              "custom_method": invalid_method3,
              "user_dict": default_user_dict,
              "default": default_result,
              "not_allow_blank": default_result,
              "force_verbose_blank": default_result,
              "check_messages": ['relate_user_full_name_format_method.W004']}),
            ({"id": 7,
              "custom_method": invalid_method4,
              "user_dict": default_user_dict,
              "default": default_result,
              "not_allow_blank": default_result,
              "force_verbose_blank": default_result,
              "check_messages": ['relate_user_full_name_format_method.W004']}),
            ({"id": 8,
              "custom_method": invalid_method5,
              "user_dict": default_user_dict,
              "default": default_result,
              "not_allow_blank": default_result,
              "force_verbose_blank": default_result,
              "check_messages": ['relate_user_full_name_format_method.W005']}),
            ({"id": 9,
              "custom_method": invalid_method6,
              "user_dict": default_user_dict,
              "default": default_result,
              "not_allow_blank": default_result,
              "force_verbose_blank": default_result,
              "check_messages": ['relate_user_full_name_format_method.W004']}),
            ({"id": 10,
              "custom_method": "abcd",  # a string
              "user_dict": default_user_dict,
              "default": default_result,
              "not_allow_blank": default_result,
              "force_verbose_blank": default_result,
              "check_messages": ['relate_user_full_name_format_method.W001']}),
            ({"id": 11,
              "custom_method":
                  "tests.resource.my_customized_get_full_name_method",
              "user_dict": default_user_dict,
              "default": "First_Name Last_Name",
              "not_allow_blank": "First_Name Last_Name",
              "force_verbose_blank": "First_Name Last_Name"}),
            ({"id": 12,
              "custom_method":
                  "tests.resource.my_customized_get_full_name_method_invalid",
              "user_dict": default_user_dict,
              "default": default_result,
              "not_allow_blank": default_result,
              "force_verbose_blank": default_result,
              "check_messages": ['relate_user_full_name_format_method.W004']}),
            ({"id": 13,
              "custom_method":
                  "tests.resource.my_customized_get_full_name_method_invalid_str",
              "user_dict": default_user_dict,
              "default": default_result,
              "not_allow_blank": default_result,
              "force_verbose_blank": default_result,
              "check_messages": ['relate_user_full_name_format_method.W002']}),
            ({"id": 14,
              "custom_method":
                  "tests.resource.my_customized_get_full_name_method",
              "user_dict": {"first_name": "first_name"},
              "default": "First_Name",
              "not_allow_blank": None,
              "force_verbose_blank": "First_Name (Blank)"}),
        )

        # Ensure no duplicate entries in user_get_full_name_test_kwargs_list
        # to generate error info when subTests fail.
        ids = set([kwargs["id"] for kwargs in user_get_full_name_test_kwargs_list])
        assert len(ids) == len(user_get_full_name_test_kwargs_list)

        for kwargs in user_get_full_name_test_kwargs_list:
            # clear cached_property
            from accounts.utils import relate_user_method_settings
            relate_user_method_settings.__dict__ = {}
            with self.subTest(id=kwargs["id"]):
                with override_settings(
                        RELATE_USER_FULL_NAME_FORMAT_METHOD=kwargs[
                            "custom_method"]):
                    check_messages = kwargs.get("check_messages", [])
                    self.assertCheckMessages(check_messages)

                    user = UserFactory(**kwargs["user_dict"])
                    self.assertEqual(user.get_full_name(), kwargs["default"])
                    self.assertEqual(user.get_full_name(allow_blank=False),
                                     kwargs["not_allow_blank"])
                    self.assertEqual(user.get_full_name(force_verbose_blank=True),
                                     kwargs["force_verbose_blank"])
예제 #4
0
    def test_get_full_name(self):
        def valid_method(first_name, last_name):
            return "%s %s" % (last_name, first_name)

        def invalid_method1(first_name):
            return first_name

        def invalid_method2(first_name, last_name):  # noqa
            return None

        def invalid_method3(first_name, last_name):  # noqa
            return " "

        def invalid_method4(first_name, last_name):  # noqa
            return b"my_name"

        def invalid_method5(first_name, last_name):  # noqa
            return "my_name"

        def invalid_method6(first_name, last_name):  # noqa
            return Exception()

        default_user_dict = {
            "first_name": "first_name",
            "last_name": "last_name"
        }
        default_result = "first_name last_name"

        user_get_full_name_test_kwargs_list = (
            ({
                "id": 1,
                "custom_method": None,
                "user_dict": {},
                "default": '',
                "not_allow_blank": None,
                "force_verbose_blank": "(blank) (blank)"
            }),
            ({
                "id": 2,
                "custom_method": None,
                "user_dict": default_user_dict,
                "default": default_result,
                "not_allow_blank": default_result,
                "force_verbose_blank": default_result
            }),
            ({
                "id": 3,
                "custom_method": valid_method,
                "user_dict": default_user_dict,
                "default": "last_name first_name",
                "not_allow_blank": "last_name first_name",
                "force_verbose_blank": "last_name first_name"
            }),
            ({
                "id": 4,
                "custom_method": invalid_method1,
                "user_dict": default_user_dict,
                "default": default_result,
                "not_allow_blank": default_result,
                "force_verbose_blank": default_result,
                "check_messages": ['relate_user_full_name_format_method.W003']
            }),
            ({
                "id": 5,
                "custom_method": invalid_method2,
                "user_dict": default_user_dict,
                "default": default_result,
                "not_allow_blank": default_result,
                "force_verbose_blank": default_result,
                "check_messages": ['relate_user_full_name_format_method.W004']
            }),
            ({
                "id": 6,
                "custom_method": invalid_method3,
                "user_dict": default_user_dict,
                "default": default_result,
                "not_allow_blank": default_result,
                "force_verbose_blank": default_result,
                "check_messages": ['relate_user_full_name_format_method.W004']
            }),
            ({
                "id": 7,
                "custom_method": invalid_method4,
                "user_dict": default_user_dict,
                "default": default_result,
                "not_allow_blank": default_result,
                "force_verbose_blank": default_result,
                "check_messages": ['relate_user_full_name_format_method.W004']
            }),
            ({
                "id": 8,
                "custom_method": invalid_method5,
                "user_dict": default_user_dict,
                "default": default_result,
                "not_allow_blank": default_result,
                "force_verbose_blank": default_result,
                "check_messages": ['relate_user_full_name_format_method.W005']
            }),
            ({
                "id": 9,
                "custom_method": invalid_method6,
                "user_dict": default_user_dict,
                "default": default_result,
                "not_allow_blank": default_result,
                "force_verbose_blank": default_result,
                "check_messages": ['relate_user_full_name_format_method.W004']
            }),
            ({
                "id": 10,
                "custom_method": "abcd",  # a string
                "user_dict": default_user_dict,
                "default": default_result,
                "not_allow_blank": default_result,
                "force_verbose_blank": default_result,
                "check_messages": ['relate_user_full_name_format_method.W001']
            }),
            ({
                "id": 11,
                "custom_method":
                "tests.resource.my_customized_get_full_name_method",
                "user_dict": default_user_dict,
                "default": "First_Name Last_Name",
                "not_allow_blank": "First_Name Last_Name",
                "force_verbose_blank": "First_Name Last_Name"
            }),
            ({
                "id": 12,
                "custom_method":
                "tests.resource.my_customized_get_full_name_method_invalid",
                "user_dict": default_user_dict,
                "default": default_result,
                "not_allow_blank": default_result,
                "force_verbose_blank": default_result,
                "check_messages": ['relate_user_full_name_format_method.W004']
            }),
            ({
                "id": 13,
                "custom_method":
                "tests.resource.my_customized_get_full_name_method_invalid_str",
                "user_dict": default_user_dict,
                "default": default_result,
                "not_allow_blank": default_result,
                "force_verbose_blank": default_result,
                "check_messages": ['relate_user_full_name_format_method.W002']
            }),
            ({
                "id": 14,
                "custom_method":
                "tests.resource.my_customized_get_full_name_method",
                "user_dict": {
                    "first_name": "first_name"
                },
                "default": "First_Name",
                "not_allow_blank": None,
                "force_verbose_blank": "First_Name (Blank)"
            }),
        )

        # Ensure no duplicate entries in user_get_full_name_test_kwargs_list
        # to generate error info when subTests fail.
        ids = set(
            [kwargs["id"] for kwargs in user_get_full_name_test_kwargs_list])
        assert len(ids) == len(user_get_full_name_test_kwargs_list)

        for kwargs in user_get_full_name_test_kwargs_list:
            # clear cached_property
            from accounts.utils import relate_user_method_settings
            relate_user_method_settings.__dict__ = {}
            with self.subTest(id=kwargs["id"]):
                with override_settings(
                        RELATE_USER_FULL_NAME_FORMAT_METHOD=kwargs[
                            "custom_method"]):
                    check_messages = kwargs.get("check_messages", [])
                    self.assertCheckMessages(check_messages)

                    user = UserFactory(**kwargs["user_dict"])
                    self.assertEqual(user.get_full_name(), kwargs["default"])
                    self.assertEqual(user.get_full_name(allow_blank=False),
                                     kwargs["not_allow_blank"])
                    self.assertEqual(
                        user.get_full_name(force_verbose_blank=True),
                        kwargs["force_verbose_blank"])