コード例 #1
0
    def test_change_dict_with_missing_attributes_in_cmd(self) -> None:
        commit_dict = {
            'cmd': 'update_question_property',
            'property_name': 'question_state_data',
            'old_value': 'old_value'
        }
        invalid_commit_cmd_model = (
            question_models.QuestionSnapshotMetadataModel(
                id='model_id-1',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='commiter-id',
                commit_type='edit',
                commit_cmds=[commit_dict])
        )

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                question_validation.ValidateQuestionSnapshotMetadataModel())
        )

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model,
                commit_dict,
                'The following required attributes are missing: new_value')
        ])
コード例 #2
0
    def test_param_change_object_with_invalid_cmd_raises_exception(self):
        invalid_commit_cmd_model = (
            config_models.PlatformParameterSnapshotMetadataModel(
                id='model_id-1',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='create',
                commit_cmds=[{'cmd': 'invalid'}])
        )

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                config_validation
                .ValidatePlatformParameterSnapshotMetadataModel())
        )

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model,
                {'cmd': 'invalid'},
                'Command invalid is not allowed')
        ])
コード例 #3
0
    def test_story_change_object_with_extra_attribute_in_cmd(self) -> None:
        invalid_commit_cmd_model = story_models.StorySnapshotMetadataModel(
            id='123',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            committer_id='committer_id',
            commit_type='create',
            commit_cmds=[{
                'cmd': 'add_story_node',
                'node_id': 'node_id',
                'invalid': 'invalid'
            }])

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(
                      story_validation.ValidateStorySnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'add_story_node',
                    'node_id': 'node_id',
                    'invalid': 'invalid'
                }, 'The following required attributes are missing: title, '
                'The following extra attributes are present: invalid')
        ])
コード例 #4
0
ファイル: base_validation.py プロジェクト: oppia/oppia
    def process(
        self, entity: ModelInstanceType
    ) -> Iterator[Union[base_validation_errors.CommitCmdsNoneError,
                        base_validation_errors.CommitCmdsValidateError]]:
        """Validates schema of commit commands in commit_cmds dict.

        Args:
            entity: datastore_services.Model. Entity to validate.

        Yields:
            CommitCmdsNoneError. Error for invalid commit cmds id.
            CommitCmdsValidateError. Error for wrong commit cmds.
        """
        change_domain_object = self._get_change_domain_class(entity)
        if change_domain_object is None:
            # This is for cases where id of the entity is invalid
            # and no commit command domain object is found for the entity.
            # For example, if a CollectionCommitLogEntryModel does
            # not have id starting with collection/rights, there is
            # no commit command domain object defined for this model.
            yield base_validation_errors.CommitCmdsNoneError(entity)
            return
        # Ruling out the possibility of any other model instance for mypy type
        # checking.
        assert isinstance(entity, (base_models.BaseSnapshotMetadataModel,
                                   base_models.BaseCommitLogEntryModel))
        for commit_cmd_dict in entity.commit_cmds:
            if not commit_cmd_dict:
                continue
            try:
                change_domain_object(commit_cmd_dict)
            except Exception as e:
                yield base_validation_errors.CommitCmdsValidateError(
                    entity, commit_cmd_dict, str(e))
コード例 #5
0
    def test_update_question_property_with_wrong_property_name(self) -> None:
        commit_dict = {
            'cmd': 'update_question_property',
            'property_name': 'wrong',
            'new_value': 'new_value',
            'old_value': 'old_value'
        }
        invalid_commit_cmd_model = (
            question_models.QuestionSnapshotMetadataModel(
                id='model_id-1',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='commiter-id',
                commit_type='edit',
                commit_cmds=[commit_dict])
        )

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                question_validation.ValidateQuestionSnapshotMetadataModel())
        )

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model,
                commit_dict,
                'Value for property_name in cmd update_question_property: '
                'wrong is not allowed')
        ])
コード例 #6
0
    def test_validate_exp_model_object_with_extra_attribute_in_cmd(self):
        invalid_commit_cmd_model = exp_models.ExplorationSnapshotMetadataModel(
            id='model_id-1',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            committer_id='committer_id',
            commit_type='create',
            commit_cmds_user_ids=[
                'commit_cmds_user_1_id', 'commit_cmds_user_2_id'
            ],
            content_user_ids=['content_user_1_id', 'content_user_2_id'],
            commit_cmds=[{
                'cmd': 'rename_state',
                'old_state_name': 'old_state_name',
                'new_state_name': 'new_state_name',
                'invalid': 'invalid'
            }])

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                exp_validation.ValidateExplorationSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'rename_state',
                    'old_state_name': 'old_state_name',
                    'new_state_name': 'new_state_name',
                    'invalid': 'invalid'
                }, 'The following extra attributes are present: invalid')
        ])
コード例 #7
0
ファイル: exp_validation_test.py プロジェクト: oppia/oppia
    def test_validate_exp_model_object_with_invalid_cmd(self) -> None:
        invalid_commit_cmd_model = exp_models.ExplorationSnapshotMetadataModel(
            id='model_id-1',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            committer_id='committer_id',
            commit_type='create',
            commit_cmds_user_ids=[
                'commit_cmds_user_1_id', 'commit_cmds_user_2_id'],
            content_user_ids=['content_user_1_id', 'content_user_2_id'],
            commit_cmds=[{'cmd': 'invalid'}])

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                exp_validation.ValidateExplorationSnapshotMetadataModel())
        )

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model,
                {'cmd': 'invalid'},
                'Command invalid is not allowed')
        ])
コード例 #8
0
    def test_skill_change_object_with_invalid_skill_contents_property(
            self) -> None:
        commit_dict = {
            'cmd': 'update_skill_contents_property',
            'property_name': 'invalid',
            'old_value': 'old_value',
            'new_value': 'new_value',
        }
        invalid_commit_cmd_model = skill_models.SkillSnapshotMetadataModel(
            id='123',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            committer_id='committer-id',
            commit_type='create',
            commit_cmds_user_ids=[
                'commit_cmds_user_1_id', 'commit_cmds_user_2_id'
            ],
            content_user_ids=['content_user_1_id', 'content_user_2_id'],
            commit_cmds=[commit_dict])

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(
                      skill_validation.ValidateSkillSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, commit_dict,
                'Value for property_name in cmd '
                'update_skill_contents_property: invalid is not allowed')
        ])
コード例 #9
0
    def test_param_change_object_with_extra_attribute_in_cmd_raises_exception(
            self):
        commit_dict = {
            'cmd': self.CMD_EDIT_RULES,
            'new_rules': [],
            'invalid': 'invalid'
        }
        invalid_commit_cmd_model = (
            config_models.PlatformParameterSnapshotMetadataModel(
                id='model_id-1',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='create',
                commit_cmds=[commit_dict]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  |
                  beam.ParDo(config_validation.
                             ValidatePlatformParameterSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, commit_dict,
                'The following extra attributes are present: invalid')
        ])
コード例 #10
0
    def test_topic_rights_change_object_with_extra_attribute_in_cmd(self):
        commit_dict = {
            'cmd': 'publish_topic',
            'invalid': 'invalid'
        }
        invalid_commit_cmd_model = (
            topic_models.TopicRightsSnapshotMetadataModel(
                id='123',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='create',
                commit_cmds=[commit_dict])
        )

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                topic_validation.ValidateTopicRightsSnapshotMetadataModel())
        )

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model,
                commit_dict,
                'The following extra attributes are present: invalid')
        ])
コード例 #11
0
    def test_collection_rights_change_object_with_extra_attribute_in_cmd(
            self) -> None:
        commit_dict = {
            'cmd': 'change_private_viewability',
            'old_viewable_if_private': 'old_viewable_if_private',
            'new_viewable_if_private': 'new_viewable_if_private',
            'invalid': 'invalid'
        }
        invalid_commit_cmd_model = (
            collection_models.CollectionRightsSnapshotMetadataModel(
                id='123',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='edit',
                commit_cmds=[commit_dict]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  |
                  beam.ParDo(collection_validation.
                             ValidateCollectionRightsSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, commit_dict,
                'The following extra attributes are present: invalid')
        ])
コード例 #12
0
    def test_collection_change_object_with_invalid_collection_property(
            self) -> None:
        invalid_commit_cmd_model = (
            collection_models.CollectionSnapshotMetadataModel(
                id='123',
                committer_id='committer_id',
                commit_type='create',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                commit_cmds=[{
                    'cmd': 'edit_collection_property',
                    'property_name': 'invalid',
                    'old_value': 'old_value',
                    'new_value': 'new_value',
                }]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(collection_validation.
                               ValidateCollectionSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'edit_collection_property',
                    'property_name': 'invalid',
                    'old_value': 'old_value',
                    'new_value': 'new_value',
                }, 'Value for property_name in cmd edit_collection_property: '
                'invalid is not allowed')
        ])
コード例 #13
0
ファイル: base_validation.py プロジェクト: chris7716/oppia
    def process(self, entity):
        """Validates schema of commit commands in commit_cmds dict.

        Args:
            entity: datastore_services.Model. Entity to validate.

        Yields:
            CommitCmdsNoneError. Error for invalid commit cmds id.
            CommitCmdsValidateError. Error for wrong commit cmds.
        """
        change_domain_object = self._get_change_domain_class(entity)
        if change_domain_object is None:
            # This is for cases where id of the entity is invalid
            # and no commit command domain object is found for the entity.
            # For example, if a CollectionCommitLogEntryModel does
            # not have id starting with collection/rights, there is
            # no commit command domain object defined for this model.
            yield base_validation_errors.CommitCmdsNoneError(entity)
            return
        for commit_cmd_dict in entity.commit_cmds:
            if not commit_cmd_dict:
                continue
            try:
                change_domain_object(commit_cmd_dict)
            except Exception as e:
                yield base_validation_errors.CommitCmdsValidateError(
                    entity, commit_cmd_dict, e)
コード例 #14
0
ファイル: exp_validation_test.py プロジェクト: oppia/oppia
    def test_exploration_rights_change_object_with_invalid_status(
        self
    ) -> None:
        invalid_commit_cmd_model = (
            exp_models.ExplorationRightsSnapshotMetadataModel(
                id='model_id-1',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='create',
                commit_cmds=[{
                    'cmd': 'change_exploration_status',
                    'old_status': rights_domain.ACTIVITY_STATUS_PRIVATE,
                    'new_status': 'invalid'
                }])
        )

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                exp_validation.ValidateExplorationRightsSnapshotMetadataModel())
        )

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model,
                {
                    'cmd': 'change_exploration_status',
                    'old_status': rights_domain.ACTIVITY_STATUS_PRIVATE,
                    'new_status': 'invalid'
                },
                'Value for new_status in cmd change_exploration_status: '
                'invalid is not allowed')
        ])
コード例 #15
0
ファイル: exp_validation_test.py プロジェクト: oppia/oppia
    def test_exploration_rights_change_object_with_missing_attribute_in_cmd(
        self
    ) -> None:
        invalid_commit_cmd_model = (
            exp_models.ExplorationRightsSnapshotMetadataModel(
                id='model_id-1',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='create',
                commit_cmds=[{
                    'cmd': 'change_role',
                    'assignee_id': 'assignee_id',
                }])
        )

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                exp_validation.ValidateExplorationRightsSnapshotMetadataModel())
        )

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model,
                {
                    'cmd': 'change_role',
                    'assignee_id': 'assignee_id',
                },
                'The following required attributes are missing: '
                'new_role, old_role')
        ])
コード例 #16
0
    def test_config_property_change_object_with_extra_attribute_in_cmd(self):
        commit_dict = {
            'cmd': 'change_property_value',
            'new_value': 'new_value',
            'invalid': 'invalid'
        }
        invalid_commit_cmd_model = (
            config_models.ConfigPropertySnapshotMetadataModel(
                id='model_id-1',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='create',
                commit_cmds=[commit_dict]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(config_validation.
                               ValidateConfigPropertySnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, commit_dict,
                'The following extra attributes are present: invalid')
        ])
コード例 #17
0
    def test_skill_change_object_with_extra_attribute_in_cmd(self) -> None:
        commit_dict = {
            'cmd':
            'add_skill_misconception',
            # Key new_misconception_dict stores a string because dict
            # keeps on rearranging themselves so tests are not passing.
            'new_misconception_dict':
            '{u\'id\': 0, u\'notes\': '
            'u\'<p>notes</p>\', u\'feedback\': '
            'u\'<p>default_feedback</p>\', '
            'u\'name\': u\'name\'}',
            'invalid':
            'invalid'
        }
        invalid_commit_cmd_model = skill_models.SkillSnapshotMetadataModel(
            id='123',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            committer_id='committer-id',
            commit_type='create',
            commit_cmds=[commit_dict])

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(
                      skill_validation.ValidateSkillSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, commit_dict,
                'The following extra attributes are present: invalid')
        ])
コード例 #18
0
    def test_change_dict_with_extra_attributes_in_cmd(self):
        invalid_commit_cmd_model = (
            question_models.QuestionSnapshotMetadataModel(
                id='model_id-1',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='commiter-id',
                commit_type='create',
                commit_cmds=[{
                    'cmd': 'create_new',
                    'invalid': 'invalid'
                }]))

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                question_validation.ValidateQuestionSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'create_new',
                    'invalid': 'invalid'
                }, 'The following extra attributes are present: invalid')
        ])
コード例 #19
0
    def test_validate_exp_model_object_with_invalid_exploration_property(self):
        invalid_commit_cmd_model = exp_models.ExplorationSnapshotMetadataModel(
            id='model_id-1',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            committer_id='committer_id',
            commit_type='create',
            commit_cmds_user_ids=[
                'commit_cmds_user_1_id', 'commit_cmds_user_2_id'
            ],
            content_user_ids=['content_user_1_id', 'content_user_2_id'],
            commit_cmds=[{
                'cmd': 'edit_exploration_property',
                'property_name': 'invalid',
                'old_value': 'old_value',
                'new_value': 'new_value',
            }])

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                exp_validation.ValidateExplorationSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'edit_exploration_property',
                    'property_name': 'invalid',
                    'old_value': 'old_value',
                    'new_value': 'new_value',
                }, 'Value for property_name in cmd edit_exploration_property: '
                'invalid is not allowed')
        ])
コード例 #20
0
ファイル: topic_validation_test.py プロジェクト: oppia/oppia
    def test_topic_rights_change_object_with_missing_attribute_in_cmd(
            self) -> None:
        commit_dict = {
            'cmd': 'change_role',
            'assignee_id': 'assignee_id',
        }
        invalid_commit_cmd_model = (
            topic_models.TopicRightsSnapshotMetadataModel(
                id='123',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='edit',
                commit_cmds=[commit_dict]))

        output = (
            self.pipeline
            | beam.Create([invalid_commit_cmd_model])
            | beam.ParDo(
                topic_validation.ValidateTopicRightsSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, commit_dict,
                'The following required attributes are missing: '
                'new_role, old_role')
        ])
コード例 #21
0
ファイル: topic_validation_test.py プロジェクト: oppia/oppia
    def test_topic_change_object_with_extra_attribute_in_cmd(self) -> None:
        invalid_commit_cmd_model = topic_models.TopicSnapshotMetadataModel(
            id='123',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            committer_id='committer_id',
            commit_type='create',
            commit_cmds=[{
                'cmd': 'add_subtopic',
                'title': 'title',
                'subtopic_id': 'subtopic_id',
                'url_fragment': 'url-fragment',
                'invalid': 'invalid'
            }])

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(
                      topic_validation.ValidateTopicSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'add_subtopic',
                    'title': 'title',
                    'subtopic_id': 'subtopic_id',
                    'url_fragment': 'url-fragment',
                    'invalid': 'invalid'
                }, 'The following extra attributes are present: invalid')
        ])
コード例 #22
0
ファイル: topic_validation_test.py プロジェクト: oppia/oppia
    def test_topic_change_object_with_missing_attribute_in_cmd(self) -> None:
        invalid_commit_cmd_model = topic_models.TopicSnapshotMetadataModel(
            id='123',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            committer_id='committer_id',
            commit_type='edit',
            commit_cmds=[{
                'cmd': 'update_topic_property',
                'property_name': 'name',
            }])

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(
                      topic_validation.ValidateTopicSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'update_topic_property',
                    'property_name': 'name',
                }, 'The following required attributes are missing: '
                'new_value, old_value')
        ])
コード例 #23
0
    def test_collection_rights_change_object_with_invalid_role(self) -> None:
        commit_dict = {
            'cmd': 'change_role',
            'assignee_id': 'assignee_id',
            'old_role': rights_domain.ROLE_OWNER,
            'new_role': 'invalid',
        }
        invalid_commit_cmd_model = (
            collection_models.CollectionRightsSnapshotMetadataModel(
                id='123',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='edit',
                commit_cmds=[commit_dict]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  |
                  beam.ParDo(collection_validation.
                             ValidateCollectionRightsSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, commit_dict,
                'Value for new_role in cmd change_role: '
                'invalid is not allowed')
        ])
コード例 #24
0
    def test_collection_change_object_with_extra_attribute_in_cmd(
            self) -> None:
        invalid_commit_cmd_model = (
            collection_models.CollectionSnapshotMetadataModel(
                id='123',
                committer_id='committer_id',
                commit_type='create',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                commit_cmds=[{
                    'cmd': 'edit_collection_node_property',
                    'exploration_id': 'exploration_id',
                    'property_name': 'category',
                    'old_value': 'old_value',
                    'new_value': 'new_value',
                    'invalid': 'invalid'
                }]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(collection_validation.
                               ValidateCollectionSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'edit_collection_node_property',
                    'exploration_id': 'exploration_id',
                    'property_name': 'category',
                    'old_value': 'old_value',
                    'new_value': 'new_value',
                    'invalid': 'invalid'
                }, 'The following extra attributes are present: invalid')
        ])
コード例 #25
0
    def test_message(self) -> None:
        model = base_models.BaseCommitLogEntryModel(id='invalid',
                                                    created_on=self.YEAR_AGO,
                                                    last_updated=self.NOW,
                                                    commit_type='test',
                                                    user_id='',
                                                    post_commit_status='',
                                                    commit_cmds=[{
                                                        'cmd-invalid':
                                                        'invalid_test_command'
                                                    }])
        error_message = 'Missing cmd key in change dict'
        error = base_validation_errors.CommitCmdsValidateError(
            model, {'cmd-invalid': 'invalid_test_command'}, error_message)

        self.assertEqual(
            error.stderr, 'CommitCmdsValidateError in BaseCommitLogEntryModel'
            '(id="invalid"): Commit command domain validation for '
            'command: {\'cmd-invalid\': \'invalid_test_command\'} failed '
            'with error: Missing cmd key in change dict')
コード例 #26
0
    def test_skill_change_object_with_missing_cmd(self) -> None:
        invalid_commit_cmd_model = skill_models.SkillSnapshotMetadataModel(
            id='123',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            committer_id='committer-id',
            commit_type='delete',
            commit_cmds=[{
                'invalid': 'data'
            }])

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(
                      skill_validation.ValidateSkillSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {'invalid': 'data'},
                'Missing cmd key in change dict')
        ])
コード例 #27
0
    def test_validate_wrong_commit_cmd(self):
        invalid_commit_cmd_model = base_models.BaseCommitLogEntryModel(
            id='invalid',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            commit_type='test',
            user_id='',
            post_commit_status='',
            commit_cmds=[{
                'cmd': 'invalid_test_command'
            }])

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(MockValidateWrongSchema()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {'cmd': 'invalid_test_command'},
                'Command invalid_test_command is not allowed')
        ])
コード例 #28
0
ファイル: topic_validation_test.py プロジェクト: oppia/oppia
    def test_topic_change_object_with_invalid_cmd(self) -> None:
        invalid_commit_cmd_model = topic_models.TopicSnapshotMetadataModel(
            id='123',
            created_on=self.YEAR_AGO,
            last_updated=self.NOW,
            committer_id='committer_id',
            commit_type='delete',
            commit_cmds=[{
                'cmd': 'invalid'
            }])

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(
                      topic_validation.ValidateTopicSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {'cmd': 'invalid'},
                'Command invalid is not allowed')
        ])
コード例 #29
0
    def test_config_property_change_object_with_missing_cmd(self):
        invalid_commit_cmd_model = (
            config_models.ConfigPropertySnapshotMetadataModel(
                id='model_id-1',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='create',
                commit_cmds=[{
                    'invalid': 'data'
                }]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(config_validation.
                               ValidateConfigPropertySnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {'invalid': 'data'},
                'Missing cmd key in change dict')
        ])
コード例 #30
0
    def test_collection_rights_change_object_with_invalid_cmd(self) -> None:
        commit_dict = {'cmd': 'invalid'}
        invalid_commit_cmd_model = (
            collection_models.CollectionRightsSnapshotMetadataModel(
                id='123',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='create',
                commit_cmds=[commit_dict]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  |
                  beam.ParDo(collection_validation.
                             ValidateCollectionRightsSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, commit_dict,
                'Command invalid is not allowed')
        ])