def test_model_invalid_id_error(self) -> None: model = base_models.BaseCommitLogEntryModel(id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='invalid-type', user_id='', post_commit_status='', commit_cmds=[]) error = base_validation_errors.InvalidCommitTypeError(model) self.assertEqual( error.stderr, 'InvalidCommitTypeError in BaseCommitLogEntryModel(id="123"): ' 'Commit type invalid-type is not allowed')
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=[{}]) error = base_validation_errors.CommitCmdsNoneError(model) self.assertEqual( error.stderr, 'CommitCmdsNoneError in BaseCommitLogEntryModel(id="invalid"): ' 'No commit command domain object ' 'defined for entity with commands: [{}]')
def test_message_for_invalid_post_commit_status(self) -> None: model = base_models.BaseCommitLogEntryModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='invalid-type', user_id='', post_commit_status='invalid', post_commit_is_private=False, commit_cmds=[]) error = base_validation_errors.InvalidCommitStatusError(model) self.assertEqual( error.stderr, 'InvalidCommitStatusError in BaseCommitLogEntryModel(id="123"): ' 'post_commit_status is invalid')
def test_message_for_public_post_commit_status(self) -> None: model = base_models.BaseCommitLogEntryModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='invalid-type', user_id='', post_commit_status='public', post_commit_is_private=True, commit_cmds=[]) error = base_validation_errors.InvalidPrivateCommitStatusError(model) self.assertEqual( error.stderr, 'InvalidPrivateCommitStatusError in ' 'BaseCommitLogEntryModel(id="123"): post_commit_status=public ' 'but post_commit_is_private=True')
def test_validate_commit_cmds(self) -> None: invalid_commit_cmd_model = base_models.BaseCommitLogEntryModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='test', user_id='', post_commit_status='', commit_cmds=[{'cmd': base_models.VersionedModel.CMD_DELETE_COMMIT}]) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo(MockValidateWrongSchema()) ) self.assert_pcoll_equal(output, [])
def test_message_for_public_post_commit_status_raise_exception( self) -> None: model = base_models.BaseCommitLogEntryModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='create', user_id='', post_commit_status='public', post_commit_community_owned=False, commit_cmds=[]) error = base_validation_errors.InvalidPublicCommitStatusError(model) self.assertEqual( error.stderr, 'InvalidPublicCommitStatusError in ' 'BaseCommitLogEntryModel(id="123"): post_commit_status=public ' 'but post_commit_community_owned=False')
def test_validate_raise_not_implemented(self) -> None: invalid_commit_cmd_model = base_models.BaseCommitLogEntryModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='test', user_id='', post_commit_status='', commit_cmds=[{}]) with self.assertRaisesRegex( # type: ignore[no-untyped-call] NotImplementedError, re.escape( 'The _get_change_domain_class() method is missing from the ' 'derived class. It should be implemented in the derived class.' ) ): MockValidateCommitCmdsSchema().process(invalid_commit_cmd_model)
def test_validate_post_commit_is_public_when_status_is_public(self) -> None: invalid_commit_status = base_models.BaseCommitLogEntryModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='create', user_id='', post_commit_status='public', post_commit_community_owned=True, commit_cmds=[]) output = ( self.pipeline | beam.Create([invalid_commit_status]) | beam.ParDo(base_validation.ValidatePostCommitIsPublic()) ) self.assert_pcoll_empty(output)
def test_validate_none_commit(self) -> None: 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=[{}]) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo(MockValidateCommitCmdsSchemaChangeDomain()) ) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsNoneError(invalid_commit_cmd_model) ])
def test_validate_commit_type(self) -> None: invalid_commit_type_model = base_models.BaseCommitLogEntryModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='invalid-type', user_id='', post_commit_status='', commit_cmds=[]) output = ( self.pipeline | beam.Create([invalid_commit_type_model]) | beam.ParDo(base_validation.ValidateCommitType()) ) self.assert_pcoll_equal(output, [ base_validation_errors.InvalidCommitTypeError( invalid_commit_type_model), ])
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')
def test_validate_post_commit_is_public_raise_exception(self) -> None: invalid_commit_status = base_models.BaseCommitLogEntryModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='create', user_id='', post_commit_status='public', post_commit_community_owned=False, commit_cmds=[]) output = ( self.pipeline | beam.Create([invalid_commit_status]) | beam.ParDo(base_validation.ValidatePostCommitIsPublic()) ) self.assert_pcoll_equal(output, [ base_validation_errors.InvalidPublicCommitStatusError( invalid_commit_status), ])
def test_validate_wrong_commit_cmd(self) -> None: 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') ])
def test_validate_post_commit_is_private_when_status_is_private( self ) -> None: invalid_commit_status = base_models.BaseCommitLogEntryModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='invalid-type', user_id='', post_commit_status='private', post_commit_is_private=False, commit_cmds=[]) output = ( self.pipeline | beam.Create([invalid_commit_status]) | beam.ParDo(base_validation.ValidatePostCommitIsPrivate()) ) self.assert_pcoll_equal(output, [ base_validation_errors.InvalidPrivateCommitStatusError( invalid_commit_status), ])