def setUp(self) -> None:
     super().setUp()
     self.action = MotionUpdateMetadata(PermissionTestAdapter(),
                                        DatabaseTestAdapter())
     self.action.user_id = (
         7826715669  # This user has perm MOTION_CAN_MANAGE for some meetings.
     )
Esempio n. 2
0
 def setUp(self) -> None:
     super().setUp()
     self.user_id = 7826715669
     self.action = MotionUpdateMetadata(
         "motion.update_metadata",
         PermissionTestAdapter(superuser=self.user_id),
         DatabaseTestAdapter(old_style_testing=True),
     )
Esempio n. 3
0
class MotionUpdateMetadataActionUnitTester(BaseMotionUpdateMetadataActionTester
                                           ):
    def setUp(self) -> None:
        super().setUp()
        user_id = 7826715669
        self.action = MotionUpdateMetadata(
            "motion.update_metadate",
            PermissionTestAdapter(superuser=user_id),
            DatabaseTestAdapter(old_style_testing=True),
        )
        self.action.user_id = user_id

    def test_validation_correct_1(self) -> None:
        self.action.validate(self.valid_payload_1)

    def test_validation_correct_2(self) -> None:
        self.action.validate(self.valid_payload_2)

    def test_prepare_dataset_1(self) -> None:
        dataset = self.action.prepare_dataset(self.valid_payload_1)
        instance = deepcopy(self.valid_payload_1[0])
        instance["last_modified"] = round(time.time())
        expected = [{
            "instance": instance,
            "relations": {
                get_fqfield("motion_category/8734727380/motion_ids"): {
                    "type": "remove",
                    "value": [],
                },
                get_fqfield("motion_block/4116433002/motion_ids"): {
                    "type": "remove",
                    "value": [],
                },
                get_fqfield("motion_block/4740630442/motion_ids"): {
                    "type": "add",
                    "value": [2995885358],
                },
            },
        }]
        self.assertEqual(dataset["data"], expected)

    def test_prepare_dataset_2(self) -> None:
        dataset = self.action.prepare_dataset(self.valid_payload_2)
        instance = deepcopy(self.valid_payload_2[0])
        instance["last_modified"] = round(time.time())
        expected = [{
            "instance": instance,
            "relations": {
                get_fqfield("user/7268025091/supported_motion_5562405520_ids"):
                {
                    "type": "add",
                    "value": [2995885358],
                },
            },
        }]
        self.assertEqual(dataset["data"], expected)
class MotionUpdateMetadataActionUnitTester(BaseMotionUpdateMetadataActionTester
                                           ):
    def setUp(self) -> None:
        super().setUp()
        self.action = MotionUpdateMetadata(PermissionTestAdapter(),
                                           DatabaseTestAdapter())
        self.action.user_id = (
            7826715669  # This user has perm MOTION_CAN_MANAGE for some meetings.
        )

    def test_validation_correct_1(self) -> None:
        self.action.validate(self.valid_payload_1)

    def test_validation_correct_2(self) -> None:
        self.action.validate(self.valid_payload_2)

    def test_prepare_dataset_1(self) -> None:
        dataset = self.action.prepare_dataset(self.valid_payload_1)
        self.assertEqual(dataset["position"], 1)
        instance = deepcopy(self.valid_payload_1[0])
        instance["last_modified"] = round(time.time())
        expected = [{
            "instance": instance,
            "relations": {
                get_fqfield("motion_category/8734727380/motion_ids"): {
                    "type": "remove",
                    "value": [],
                },
                get_fqfield("motion_block/4116433002/motion_ids"): {
                    "type": "remove",
                    "value": [],
                },
                get_fqfield("motion_block/4740630442/motion_ids"): {
                    "type": "add",
                    "value": [2995885358],
                },
            },
        }]
        self.assertEqual(dataset["data"], expected)

    def test_prepare_dataset_2(self) -> None:
        dataset = self.action.prepare_dataset(self.valid_payload_2)
        self.assertEqual(dataset["position"], 1)
        instance = deepcopy(self.valid_payload_2[0])
        instance["last_modified"] = round(time.time())
        expected = [{
            "instance": instance,
            "relations": {
                get_fqfield("user/7268025091/supported_motion_5562405520_ids"):
                {
                    "type": "add",
                    "value": [2995885358],
                },
            },
        }]
        self.assertEqual(dataset["data"], expected)
Esempio n. 5
0
class MotionUpdateMetadataActionPerformTester(
        BaseMotionUpdateMetadataActionTester):
    def setUp(self) -> None:
        super().setUp()
        self.user_id = 7826715669
        self.action = MotionUpdateMetadata(
            "motion.update_metadata",
            PermissionTestAdapter(superuser=self.user_id),
            DatabaseTestAdapter(old_style_testing=True),
        )

    def test_perform_correct_1(self) -> None:
        write_request_elements = self.action.perform(self.valid_payload_1,
                                                     user_id=self.user_id)
        expected = [
            {
                "events": [
                    {
                        "type": "update",
                        "fqid": get_fqid("motion/2995885358"),
                        "fields": {
                            "last_modified": round(time.time()),
                            "category_id": None,
                            "block_id": 4740630442,
                        },
                    },
                    {
                        "type": "update",
                        "fqid": get_fqid("motion_block/4116433002"),
                        "fields": {
                            "motion_ids": []
                        },
                    },
                    {
                        "type": "update",
                        "fqid": get_fqid("motion_block/4740630442"),
                        "fields": {
                            "motion_ids": [2995885358]
                        },
                    },
                    {
                        "type": "update",
                        "fqid": get_fqid("motion_category/8734727380"),
                        "fields": {
                            "motion_ids": []
                        },
                    },
                ],
                "information": {
                    get_fqid("motion/2995885358"): ["Object updated"],
                    get_fqid("motion_block/4116433002"):
                    ["Object attachment to motion reset"],
                    get_fqid("motion_block/4740630442"):
                    ["Object attached to motion"],
                    get_fqid("motion_category/8734727380"):
                    ["Object attachment to motion reset"],
                },
                "user_id":
                self.user_id,
            },
        ]
        self.assertEqual(
            list(write_request_elements),
            expected,
        )

    def test_perform_correct_2(self) -> None:
        write_request_elements = self.action.perform(self.valid_payload_2,
                                                     user_id=self.user_id)
        expected = [{
            "events": [
                {
                    "type": "update",
                    "fqid": get_fqid("motion/2995885358"),
                    "fields": {
                        "last_modified": round(time.time()),
                        "supporter_ids": [7268025091],
                    },
                },
                {
                    "type": "update",
                    "fqid": get_fqid("user/7268025091"),
                    "fields": {
                        "supported_motion_5562405520_ids": [2995885358]
                    },
                },
            ],
            "information": {
                get_fqid("motion/2995885358"): ["Object updated"],
                get_fqid("user/7268025091"): ["Object attached to motion"],
            },
            "user_id":
            self.user_id,
        }]
        self.assertEqual(
            list(write_request_elements),
            expected,
        )

    def test_perform_no_permission_1(self) -> None:
        with self.assertRaises(PermissionDenied) as context_manager:
            self.action.perform(self.valid_payload_1, user_id=4796568680)
        self.assertEqual(
            context_manager.exception.message,
            "You are not allowed to perform action motion.update_metadata.",
        )
class MotionUpdateMetadataActionPerformTester(
        BaseMotionUpdateMetadataActionTester):
    def setUp(self) -> None:
        super().setUp()
        self.action = MotionUpdateMetadata(PermissionTestAdapter(),
                                           DatabaseTestAdapter())
        self.user_id_1 = (
            7826715669  # This user has perm MOTION_CAN_MANAGE for some meetings.
        )
        self.user_id_2 = 3265963568  # This user has perm MOTION_CAN_MANAGE_METADATA for some meetings.

    def test_perform_correct_1_1(self) -> None:
        write_request_elements = self.action.perform(self.valid_payload_1,
                                                     user_id=self.user_id_1)
        expected = [
            {
                "events": [
                    {
                        "type": "update",
                        "fqid": get_fqid("motion/2995885358"),
                        "fields": {
                            "last_modified": round(time.time()),
                            "category_id": None,
                            "block_id": 4740630442,
                        },
                    },
                    {
                        "type": "update",
                        "fqid": get_fqid("motion_block/4116433002"),
                        "fields": {
                            "motion_ids": []
                        },
                    },
                    {
                        "type": "update",
                        "fqid": get_fqid("motion_block/4740630442"),
                        "fields": {
                            "motion_ids": [2995885358]
                        },
                    },
                    {
                        "type": "update",
                        "fqid": get_fqid("motion_category/8734727380"),
                        "fields": {
                            "motion_ids": []
                        },
                    },
                ],
                "information": {
                    get_fqid("motion/2995885358"): ["Object updated"],
                    get_fqid("motion_block/4116433002"):
                    ["Object attachment to motion reset"],
                    get_fqid("motion_block/4740630442"):
                    ["Object attached to motion"],
                    get_fqid("motion_category/8734727380"):
                    ["Object attachment to motion reset"],
                },
                "user_id":
                self.user_id_1,
                "locked_fields": {
                    get_fqfield("motion/2995885358/deleted"): 1,
                    get_fqfield("motion_category/8734727380/motion_ids"): 1,
                    get_fqfield("motion_block/4116433002/motion_ids"): 1,
                    get_fqfield("motion_block/4740630442/motion_ids"): 1,
                },
            },
        ]
        self.assertEqual(
            list(write_request_elements),
            expected,
        )

    def test_perform_correct_1_2(self) -> None:
        write_request_elements = self.action.perform(self.valid_payload_1,
                                                     user_id=self.user_id_2)
        expected = [
            {
                "events": [
                    {
                        "type": "update",
                        "fqid": get_fqid("motion/2995885358"),
                        "fields": {
                            "last_modified": round(time.time()),
                            "category_id": None,
                            "block_id": 4740630442,
                        },
                    },
                    {
                        "type": "update",
                        "fqid": get_fqid("motion_block/4116433002"),
                        "fields": {
                            "motion_ids": []
                        },
                    },
                    {
                        "type": "update",
                        "fqid": get_fqid("motion_block/4740630442"),
                        "fields": {
                            "motion_ids": [2995885358]
                        },
                    },
                    {
                        "type": "update",
                        "fqid": get_fqid("motion_category/8734727380"),
                        "fields": {
                            "motion_ids": []
                        },
                    },
                ],
                "information": {
                    get_fqid("motion/2995885358"): ["Object updated"],
                    get_fqid("motion_block/4116433002"):
                    ["Object attachment to motion reset"],
                    get_fqid("motion_block/4740630442"):
                    ["Object attached to motion"],
                    get_fqid("motion_category/8734727380"):
                    ["Object attachment to motion reset"],
                },
                "user_id":
                self.user_id_2,
                "locked_fields": {
                    get_fqfield("motion/2995885358/deleted"): 1,
                    get_fqfield("motion_category/8734727380/motion_ids"): 1,
                    get_fqfield("motion_block/4116433002/motion_ids"): 1,
                    get_fqfield("motion_block/4740630442/motion_ids"): 1,
                },
            },
        ]
        self.assertEqual(
            list(write_request_elements),
            expected,
        )

    def test_perform_correct_2_1(self) -> None:
        write_request_elements = self.action.perform(self.valid_payload_2,
                                                     user_id=self.user_id_1)
        expected = [{
            "events": [
                {
                    "type": "update",
                    "fqid": get_fqid("motion/2995885358"),
                    "fields": {
                        "last_modified": round(time.time()),
                        "supporter_ids": [7268025091],
                    },
                },
                {
                    "type": "update",
                    "fqid": get_fqid("user/7268025091"),
                    "fields": {
                        "supported_motion_5562405520_ids": [2995885358]
                    },
                },
            ],
            "information": {
                get_fqid("motion/2995885358"): ["Object updated"],
                get_fqid("user/7268025091"): ["Object attached to motion"],
            },
            "user_id":
            self.user_id_1,
            "locked_fields": {
                get_fqfield("motion/2995885358/deleted"): 1,
                get_fqfield("user/7268025091/supported_motion_5562405520_ids"):
                1,
            },
        }]
        self.assertEqual(
            list(write_request_elements),
            expected,
        )

    def test_perform_correct_2_2(self) -> None:
        write_request_elements = self.action.perform(self.valid_payload_2,
                                                     user_id=self.user_id_2)
        expected = [{
            "events": [
                {
                    "type": "update",
                    "fqid": get_fqid("motion/2995885358"),
                    "fields": {
                        "last_modified": round(time.time()),
                        "supporter_ids": [7268025091],
                    },
                },
                {
                    "type": "update",
                    "fqid": get_fqid("user/7268025091"),
                    "fields": {
                        "supported_motion_5562405520_ids": [2995885358]
                    },
                },
            ],
            "information": {
                get_fqid("motion/2995885358"): ["Object updated"],
                get_fqid("user/7268025091"): ["Object attached to motion"],
            },
            "user_id":
            self.user_id_2,
            "locked_fields": {
                get_fqfield("motion/2995885358/deleted"): 1,
                get_fqfield("user/7268025091/supported_motion_5562405520_ids"):
                1,
            },
        }]
        self.assertEqual(
            list(write_request_elements),
            expected,
        )

    def test_perform_no_permission_1(self) -> None:
        with self.assertRaises(PermissionDenied) as context_manager:
            self.action.perform(self.valid_payload_1, user_id=4796568680)
        self.assertEqual(
            context_manager.exception.message,
            "User must have motion.can_manage or motion.can_manage_metadata permission for meeting_id 5562405520.",
        )