Exemple #1
0
    def test_remove_g_suite_user_from_g_suite_group_g_suite_dict_httperror(
        self, mocked_g_suite_client, mocked_logger
    ):
        group_name = list(settings.OW4_GSUITE_SYNC.get("GROUPS").keys())[0]
        email = "*****@*****.**"

        http_error = create_http_error(400, "Error", "Error")
        mocked_g_suite_client.return_value.members.return_value.delete.return_value.execute.side_effect = (
            http_error
        )

        ow4_gsuite_sync = self.ow4_gsuite_sync
        ow4_gsuite_sync["ENABLED"] = True
        ow4_gsuite_sync["ENABLE_DELETE"] = True

        with override_settings(OW4_GSUITE_SYNC=ow4_gsuite_sync):
            self.assertRaises(
                HttpError,
                lambda: remove_g_suite_user_from_group(
                    self.domain, group_name, email, suppress_http_errors=False
                ),
            )
        mocked_logger.assert_called_with(
            f'HttpError when deleting user "{email}" from G Suite group: {http_error}',
            extra={"suppress_http_error": False},
        )
Exemple #2
0
 def test_get_error_from_gsuite_http_error(self):
     error_message = "Member already exists"
     http_error = create_http_error(status=409,
                                    reason=error_message,
                                    error=error_message)
     parsed_error_message = _get_error_message_from_httperror(http_error)
     self.assertEqual(error_message, parsed_error_message)
    def test_get_g_suite_groups_for_user(self, mocked_g_suite_client):
        user = G(
            OnlineUser,
            first_name="Test",
            last_name="Testesen",
            online_mail="test.testesen",
        )

        ow4_gsuite_sync = settings.OW4_GSUITE_SYNC
        ow4_gsuite_sync["ENABLED"] = True

        with override_settings(OW4_GSUITE_SYNC=ow4_gsuite_sync):
            mocked_g_suite_client.return_value.groups.return_value.list.return_value.execute.return_value.get.return_value = [
                {
                    "name": "dotkom@" + self.domain
                }
            ]
            resp = get_g_suite_groups_for_user(self.domain,
                                               user,
                                               suppress_http_errors=True)
            self.assertEqual(1, len(resp))

            http_error = create_http_error(400, "Error", "Error")
            mocked_g_suite_client.return_value.groups.return_value.list.return_value.execute.return_value.get.side_effect = (
                http_error)
            self.assertRaises(
                HttpError,
                lambda: get_g_suite_groups_for_user(self.domain, user))
Exemple #4
0
    def test_get_g_suite_users_for_group(self, mocked_g_suite_client):
        ow4_gsuite_sync = settings.OW4_GSUITE_SYNC
        ow4_gsuite_sync['ENABLED'] = True

        with override_settings(OW4_GSUITE_SYNC=ow4_gsuite_sync):
            mocked_g_suite_client.return_value.members.return_value.list.return_value.execute.return_value.\
                get.return_value = [{'email': '1@' + self.domain}]
            resp = get_g_suite_users_for_group(self.domain,
                                               self.group,
                                               suppress_http_errors=True)
            self.assertEqual(1, len(resp))

            http_error = create_http_error(400, "Error", "Error")
            mocked_g_suite_client.return_value.members.return_value.list.return_value.execute.return_value. \
                get.side_effect = http_error
            self.assertRaises(
                HttpError,
                lambda: get_g_suite_users_for_group(self.domain, self.group))
Exemple #5
0
    def test_get_g_suite_groups_for_user(self, mocked_g_suite_client):
        user = G(OnlineUser)

        ow4_gsuite_sync = settings.OW4_GSUITE_SYNC
        ow4_gsuite_sync['ENABLED'] = True

        with override_settings(OW4_GSUITE_SYNC=ow4_gsuite_sync):
            mocked_g_suite_client.return_value.groups.return_value.list.return_value.execute.return_value. \
                get.return_value = [{'name': 'dotkom@' + self.domain}]
            resp = get_g_suite_groups_for_user(self.domain,
                                               user,
                                               suppress_http_errors=True)
            self.assertEqual(1, len(resp))

            http_error = create_http_error(400, "Error", "Error")
            mocked_g_suite_client.return_value.groups.return_value.list.return_value.execute.return_value. \
                get.side_effect = http_error
            self.assertRaises(
                HttpError,
                lambda: get_g_suite_groups_for_user(self.domain, user))
Exemple #6
0
    def test_insert_email_into_g_suite_group_already_exists_raises(
            self, mocked_g_suite_client):
        group_name = list(settings.OW4_GSUITE_SYNC.get('GROUPS').keys())[0]
        email = '*****@*****.**'

        error_reason = 'Member already exists'

        mocked_g_suite_client.return_value.members.return_value.insert.side_effect = \
            create_http_error(status=409, reason=error_reason, error=error_reason)

        ow4_gsuite_sync = self.ow4_gsuite_sync
        ow4_gsuite_sync['ENABLE_INSERT'] = True

        with override_settings(OW4_GSUITE_SYNC=ow4_gsuite_sync):
            with self.assertRaises(HttpError):
                insert_email_into_g_suite_group(self.domain, group_name, email)

        with override_settings(OW4_GSUITE_SYNC=ow4_gsuite_sync):
            insert_email_into_g_suite_group(self.domain,
                                            group_name,
                                            email,
                                            suppress_http_errors=True)
Exemple #7
0
    def test_remove_g_suite_user_from_g_suite_group_g_suite_dict_httperror(
            self, mocked_g_suite_client, mocked_logger):
        group_name = list(settings.OW4_GSUITE_SYNC.get('GROUPS').keys())[0]
        email = '*****@*****.**'

        http_error = create_http_error(400, "Error", "Error")
        mocked_g_suite_client.return_value.members.return_value.delete.return_value.execute.side_effect = \
            http_error

        ow4_gsuite_sync = self.ow4_gsuite_sync
        ow4_gsuite_sync['ENABLED'] = True
        ow4_gsuite_sync['ENABLE_DELETE'] = True

        with override_settings(OW4_GSUITE_SYNC=ow4_gsuite_sync):
            self.assertRaises(
                HttpError, lambda: remove_g_suite_user_from_group(
                    self.domain, group_name, email, suppress_http_errors=False)
            )
        mocked_logger.assert_called_with(
            'HttpError when deleting user "{user}" from G Suite group: {err}'.
            format(err=http_error, user=email),
            extra={'suppress_http_error': False})
Exemple #8
0
    def test_remove_user_from_group_pass_if_not_subscribed(
            self, mocked_remove, mocked_logger):
        user = G(OnlineUser, infomail=False)
        email_addr = "*****@*****.**"
        email = G(Email, email=email_addr, verified=True, primary=True)
        user.email_user.add(email)
        group_name = list(settings.OW4_GSUITE_SYNC.get("GROUPS").keys())[0]

        ow4_gsuite_sync = self.ow4_gsuite_sync.copy()
        ow4_gsuite_sync["ENABLE_DELETE"] = True

        error_message = "Resource Not Found"
        mocked_remove.return_value = None
        mocked_remove.side_effect = create_http_error(status=404,
                                                      reason=error_message,
                                                      error=error_message)

        with override_settings(OW4_GSUITE_SYNC=ow4_gsuite_sync):
            remove_user_from_group_pass_if_not_subscribed(
                self.domain, group_name, user.primary_email)
            mocked_logger.assert_called_with(
                'Email address "{email}" was not subscribed to mailing list "{list}"!'
                .format(email=email, list=group_name))
Exemple #9
0
    def test_insert_user_pass_if_already_in_group_passing(
            self, mocked_insert, mocked_logger):
        user = G(OnlineUser, infomail=False)
        email_addr = "*****@*****.**"
        email = G(Email, email=email_addr, verified=True, primary=True)
        user.email_user.add(email)
        group_name = list(settings.OW4_GSUITE_SYNC.get("GROUPS").keys())[0]

        ow4_gsuite_sync = self.ow4_gsuite_sync.copy()
        ow4_gsuite_sync["ENABLE_INSERT"] = True

        error_message = "Member already exists"
        mocked_insert.return_value = None
        mocked_insert.side_effect = create_http_error(status=409,
                                                      reason=error_message,
                                                      error=error_message)

        with override_settings(OW4_GSUITE_SYNC=ow4_gsuite_sync):
            insert_user_into_group_pass_if_already_member(
                self.domain, group_name, user.primary_email)
            mocked_logger.assert_called_with(
                'Email address "{email}" was already subscribed to mailing list "{list}"!'
                .format(email=email, list=group_name))