Esempio n. 1
0
    def test_base_validation(self):
        base_model_with_invalid_id = self.create_model(
            base_models.BaseModel, id='123@?!*', deleted=False)
        base_model_with_invalid_timestamps = self.create_model(
            base_models.BaseModel, id='124', deleted=False,
            created_on=self.NOW, last_updated=self.YEAR_LATER)
        base_model_with_inconsistent_timestamps = self.create_model(
            base_models.BaseModel, id='125', deleted=False,
            created_on=self.YEAR_LATER, last_updated=self.YEAR_AGO)
        expired_base_model = self.create_model(
            base_models.BaseModel, id='126', deleted=True)
        valid_base_model = self.create_model(
            base_models.BaseModel, id='127', deleted=False)

        self.put_multi([
            base_model_with_invalid_id,
            base_model_with_invalid_timestamps,
            base_model_with_inconsistent_timestamps,
            expired_base_model,
            valid_base_model,
        ])

        self.assert_job_output_is([
            base_validation_errors.ModelIdRegexError(
                base_model_with_invalid_id,
                base_validation.BASE_MODEL_ID_PATTERN),
            base_validation_errors.ModelMutatedDuringJobError(
                base_model_with_invalid_timestamps),
            base_validation_errors.InconsistentTimestampsError(
                base_model_with_inconsistent_timestamps),
            base_validation_errors.ModelExpiredError(expired_base_model),
        ])
    def test_message(self):
        model = base_models.BaseModel(id='?!"',
                                      created_on=self.YEAR_AGO,
                                      last_updated=self.NOW)
        error = base_validation_errors.ModelIdRegexError(model, '[abc]{3}')

        self.assertEqual(
            error.message,
            'ModelIdRegexError in BaseModel(id=\'?!"\'): id does not '
            'match the expected regex=u\'[abc]{3}\'')
Esempio n. 3
0
    def test_validate_model_id(self):
        invalid_id_model = base_models.BaseModel(id='123@?!*',
                                                 created_on=self.YEAR_AGO,
                                                 last_updated=self.NOW)

        output = (self.pipeline
                  | beam.Create([invalid_id_model])
                  | beam.ParDo(base_validation.ValidateBaseModelId()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.ModelIdRegexError(
                invalid_id_model, base_validation.BASE_MODEL_ID_PATTERN),
        ])
Esempio n. 4
0
    def test_reports_error_for_invalid_id(self):
        model_with_invalid_id = auth_models.FirebaseSeedModel(
            id='2', created_on=self.NOW, last_updated=self.NOW)

        output = (self.pipeline
                  | beam.Create([model_with_invalid_id])
                  | beam.ParDo(auth_validation.ValidateFirebaseSeedModelId()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.ModelIdRegexError(
                model_with_invalid_id,
                auth_models.ONLY_FIREBASE_SEED_MODEL_ID),
        ])
Esempio n. 5
0
    def test_process_reports_error_for_invalid_uid(self):
        model_with_invalid_id = user_models.UserSettingsModel(
            id='123',
            email='*****@*****.**',
            created_on=self.NOW,
            last_updated=self.NOW)

        output = (self.pipeline
                  | beam.Create([model_with_invalid_id])
                  | beam.ParDo(user_validation.ValidateModelWithUserId()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.ModelIdRegexError(model_with_invalid_id,
                                                     feconf.USER_ID_REGEX),
        ])
Esempio n. 6
0
    def test_reports_error_for_invalid_id(self):
        model_with_invalid_id = auth_models.UserIdByFirebaseAuthIdModel(
            id='-!\'"', user_id='1', created_on=self.NOW, last_updated=self.NOW)

        output = (
            self.pipeline
            | beam.Create([model_with_invalid_id])
            | beam.ParDo(
                auth_validation.ValidateUserIdByFirebaseAuthIdModelId())
        )

        self.assert_pcoll_equal(output, [
            base_validation_errors.ModelIdRegexError(
                model_with_invalid_id, feconf.FIREBASE_AUTH_ID_REGEX),
        ])
Esempio n. 7
0
    def process(self, input_model):
        """Function that defines how to process each element in a pipeline of
        models.

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

        Yields:
            ModelIdRegexError. An error class for models with invalid IDs.
        """
        model = job_utils.clone_model(input_model)

        if not re.match(self._pattern, model.id):
            yield base_validation_errors.ModelIdRegexError(
                model, self._pattern)
Esempio n. 8
0
    def process(self, entity):
        """Function that defines how to process each entity in a pipeline of
        models.

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

        Yields:
            ModelIdRegexError. An error class for models with invalid IDs.
        """
        cloned_entity = job_utils.clone_model(entity)

        if not re.match(self._pattern, cloned_entity.id):
            yield base_validation_errors.ModelIdRegexError(
                cloned_entity, self._pattern)
Esempio n. 9
0
    def test_user_audits(self):
        user_settings_model_with_invalid_id = self.create_model(
            user_models.UserSettingsModel,
            id='128', email='*****@*****.**')
        user_settings_model_with_valid_id = self.create_model(
            user_models.UserSettingsModel,
            id=self.VALID_USER_ID, email='*****@*****.**')

        self.put_multi([
            user_settings_model_with_invalid_id,
            user_settings_model_with_valid_id,
        ])

        self.assert_job_output_is([
            base_validation_errors.ModelIdRegexError(
                user_settings_model_with_invalid_id, feconf.USER_ID_REGEX),
        ])