Exemplo n.º 1
0
 def test_07_get_reports(self):
     try:
         report_dict = redis_api.get_reports(
             report_id=self.__class__.report_id)
         content_report_dicts = redis_api.get_reports(
             content_id=self.__class__.test_data["content_id"])
         user_report_dicts = redis_api.get_reports(
             user_id=self.__class__.test_data["user_id"])
         admin_report_dicts = redis_api.get_reports(
             admin_id=self.__class__.test_data["admin_id"])
     except Exception as e:
         self.__class__.failure = True
         self.fail(str(e))
     else:
         try:
             self.assertIsInstance(report_dict, dict)
             self.assertEqual(report_dict["report_id"],
                              self.__class__.report_id)
             self.assertEqual(report_dict["content_id"],
                              self.__class__.test_data["content_id"])
             self.assertEqual(report_dict["report_text"],
                              self.__class__.test_data["report_text"])
             self.assertEqual(report_dict["report_type"],
                              self.__class__.test_data["report_type"])
             self.assertEqual(report_dict["admin_id"],
                              self.__class__.test_data["admin_id"])
             self.assertEqual(report_dict["timestamp"],
                              self.__class__.test_data["timestamp"])
             self.assertEqual(report_dict["author_type"],
                              self.__class__.test_data["author_type"])
             self.assertEqual(report_dict["author_id"],
                              self.__class__.test_data["user_id"])
             self.assertIsInstance(content_report_dicts, list)
             for report_dict_ in content_report_dicts:
                 self.assertIsInstance(report_dict_, dict)
             self.assertIsInstance(user_report_dicts, list)
             for report_dict_ in user_report_dicts:
                 self.assertIsInstance(report_dict_, dict)
             self.assertIsInstance(admin_report_dicts, list)
             for report_dict_ in admin_report_dicts:
                 self.assertIsInstance(report_dict_, dict)
             self.assertIn(report_dict, content_report_dicts)
             self.assertIn(report_dict, user_report_dicts)
             self.assertIn(report_dict, admin_report_dicts)
         except AssertionError:
             self.__class__.failure = True
             raise
         except Exception as e:
             self.__class__.failure = True
             self.fail(str(e))
Exemplo n.º 2
0
 def __init__(self,
              report_id=None,
              report_status=None,
              content_id=None,
              report_text=None,
              report_type=None,
              author_type=None,
              author_id=None,
              report_object=None):
     """
     Args:
         report_id: Integer. Defaults to None.
         report_status: String, accepts 'open' or 'resolved'. 
             Defaults to None.
         content_id: Integer. Defaults to None.
         report_text: String. Defaults to None.
         report_type: String, accepts 'content' or 'authors'. 
             Defaults to None.
         author_type: String, accepts 'U' or IP address. 
             Defaults to None.
         author_id: Integer. Defaults to None.
         report_object: orm.UserReport object.  Defaults to None.
     """
     args = locals()
     self.report_status = report_status
     if report_id is not None:
         try:
             if report_status == "open":
                 report_object = redis_api.get_reports(report_id)
             elif report_status == "resolved":
                 report_object = self.storage_handler.call(
                     select.get_user_reports, report_id=report_id)
             else:
                 raise InputError("Invalid argument(s) provided.",
                                  message="Invalid data provided.",
                                  inputs={"report_status": report_status})
         except:
             raise
         else:
             self._transfer(report_object)
     elif report_object is not None:
         self._transfer(report_object)
     else:
         if not content_id or not report_text or not report_type or (
                 author_type is not None and not is_ip_address(author_type)
                 and author_type != "U"
         ) or (author_type == "U"
               and author_id is None) or (report_type != "content"
                                          and report_type != "authors"):
             raise InputError("Invalid argument(s) provided.",
                              message="Invalid data provided.",
                              inputs=args)
         else:
             self.report_status = "pending"
             self.report_text = report_text.strip()
             self.content_id = content_id
             self.report_type = report_type
             self.author_type = author_type
             self.author_id = author_id
             self.timestamp = datetime.utcnow()
Exemplo n.º 3
0
 def test_09_delete_report(self):
     try:
         redis_api.delete_report(self.__class__.report_id)
     except Exception as e:
         self.__class__.failure = True
         self.fail(str(e))
     else:
         try:
             report_dict = redis_api.get_reports(
                 report_id=self.__class__.report_id)
             self.assertFalse(report_dict)
         except AssertionError:
             self.__class__.failure = True
             raise
         except Exception as e:
             self.__class__.failure = True
             self.fail(str(e))
Exemplo n.º 4
0
 def test_06_store_report(self):
     try:
         self.__class__.report_id = redis_api.store_report(
             self.__class__.test_data["content_id"],
             self.__class__.test_data["report_text"],
             self.__class__.test_data["report_type"],
             self.__class__.test_data["admin_id"],
             self.__class__.test_data["timestamp"],
             self.__class__.test_data["author_type"],
             self.__class__.test_data["user_id"])
     except Exception as e:
         self.__class__.failure = True
         self.fail(str(e))
     else:
         try:
             report_dict = redis_api.get_reports(
                 report_id=self.__class__.report_id)
             self.assertEqual(report_dict["report_id"],
                              self.__class__.report_id)
             self.assertEqual(report_dict["content_id"],
                              self.__class__.test_data["content_id"])
             self.assertEqual(report_dict["report_text"],
                              self.__class__.test_data["report_text"])
             self.assertEqual(report_dict["report_type"],
                              self.__class__.test_data["report_type"])
             self.assertEqual(report_dict["admin_id"],
                              self.__class__.test_data["admin_id"])
             self.assertEqual(report_dict["timestamp"],
                              self.__class__.test_data["timestamp"])
             self.assertEqual(report_dict["author_type"],
                              self.__class__.test_data["author_type"])
             self.assertEqual(report_dict["author_id"],
                              self.__class__.test_data["user_id"])
         except AssertionError:
             self.__class__.failure = True
             raise
         except Exception as e:
             self.__class__.failure = True
             self.fail(str(e))
Exemplo n.º 5
0
    def bulk_retrieve(cls,
                      user_id=None,
                      admin_id=None,
                      content_id=None,
                      ip_address=None,
                      report_status="open",
                      page_num=1):
        """
        Args:
            user_id: Integer. Defaults to None.
            admin_id: Integer. Defaults to None.
            content_id: Integer. Defaults to None.
            ip_address: String. Defaults to None.
            report_status: String, accepts 'open' or 'resolved'. 
                Defaults to 'open'.
            page_num: Integer. Defaults to 1.
        Returns:
            List of Report objects.
        """
        args = locals()
        if user_id is not None:
            try:
                if report_status == "open":
                    report_objects = redis_api.get_reports(user_id=user_id)
                elif report_status == "resolved":
                    report_objects = cls.storage_handler.call(
                        select.get_user_reports, user_id=user_id)
            except:
                raise
        elif admin_id is not None:
            try:
                if report_status == "open":
                    report_objects = redis_api.get_reports(admin_id=admin_id)
                elif report_status == "resolved":
                    report_objects = cls.storage_handler.call(
                        select.get_user_reports, admin_id=admin_id)
            except:
                raise
        elif content_id is not None:
            try:
                if report_status == "open":
                    report_objects = redis_api.get_reports(
                        content_id=content_id)
                elif report_status == "resolved":
                    report_objects = cls.storage_handler.call(
                        select.get_user_reports, content_id=content_id)
            except:
                raise
        elif ip_address is not None:
            try:
                if report_status == "open":
                    raise NotImplementedError
                elif report_status == "resolved":
                    report_objects = cls.storage_handler.call(
                        select.get_user_reports, ip_address=ip_address)
            except:
                raise
        else:
            raise InputError("Invalid argument(s) provided.",
                             message="Insufficient data provided.",
                             inputs=args)
        if page_num != 0:
            reports = [
                Report(report_status=report_status,
                       report_object=report_object)
                for report_object in report_objects[10 * (page_num - 1):10 *
                                                    page_num]
            ]
        else:
            reports = [
                Report(report_status=report_status,
                       report_object=report_object)
                for report_object in report_objects
            ]

        return reports