Esempio n. 1
0
    def test_run_does_nothing_if_conditions_not_met(
            self, reactor_config_map):  # noqa
        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = util.ImageName.parse('repo/name')
            build_process_failed = True
            exit_results = {}
            plugin_workspace = {}

        workflow = WF()
        if reactor_config_map:
            smtp_map = {
                'from_address': '*****@*****.**',
                'host': 'smtp.spam.com',
            }
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'smtp': smtp_map})

        p = SendMailPlugin(None,
                           workflow,
                           from_address='*****@*****.**',
                           smtp_host='smtp.spam.com',
                           send_on=[MS])

        (flexmock(p).should_receive('_should_send').with_args(
            True, False, False, False).and_return(False))
        flexmock(p).should_receive('_get_receivers_list').times(0)
        flexmock(p).should_receive('_send_mail').times(0)

        p.run()
Esempio n. 2
0
    def test_run_ok_and_send(self, workflow):
        workflow.data.plugin_failed = True

        class SMTP(object):
            def sendmail(self, from_addr, to, msg):
                pass

            def quit(self):
                pass

        smtp_map = {
            'from_address': '*****@*****.**',
            'host': 'smtp.spam.com',
        }
        rcm = {'version': 1, 'smtp': smtp_map, 'openshift': {'url': 'https://something.com'}}
        workflow.conf = Configuration(raw_config=rcm)
        add_koji_map_in_workflow(workflow, hub_url='/', root_url='',
                                 ssl_certs_dir='/certs')

        receivers = ['*****@*****.**', '*****@*****.**']
        p = SendMailPlugin(workflow,
                           from_address='*****@*****.**', smtp_host='smtp.spam.com',
                           send_on=[])

        (flexmock(p).should_receive('_should_send')
            .with_args(False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_return(receivers)
        flexmock(p).should_receive('_get_image_name_and_repos').and_return(('foobar',
                                                                           ['foo/bar:baz',
                                                                            'foo/bar:spam']))

        smtp_inst = SMTP()
        flexmock(smtplib).should_receive('SMTP').and_return(smtp_inst)
        p.run()
    def test_run_does_nothing_if_conditions_not_met(self, reactor_config_map):  # noqa
        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = util.ImageName.parse('repo/name')
            build_process_failed = True
            exit_results = {}
            plugin_workspace = {}

        workflow = WF()
        if reactor_config_map:
            smtp_map = {
                'from_address': '*****@*****.**',
                'host': 'smtp.spam.com',
            }
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'smtp': smtp_map})

        p = SendMailPlugin(None, workflow,
                           from_address='*****@*****.**', smtp_host='smtp.spam.com',
                           send_on=[MS])

        (flexmock(p).should_receive('_should_send')
            .with_args(True, False, False, False).and_return(False))
        flexmock(p).should_receive('_get_receivers_list').times(0)
        flexmock(p).should_receive('_send_mail').times(0)

        p.run()
Esempio n. 4
0
    def test_run_invalid_receivers(self, caplog, workflow):
        workflow.data.plugin_failed = True
        error_addresses = ['*****@*****.**']

        mock_store_metadata_results(workflow)

        smtp_map = {
            'from_address': '*****@*****.**',
            'host': 'smtp.bar.com',
            'error_addresses': ['*****@*****.**'],
        }
        rcm = {'version': 1, 'smtp': smtp_map, 'openshift': {'url': 'https://something.com'}}
        workflow.conf = Configuration(raw_config=rcm)
        add_koji_map_in_workflow(workflow, hub_url='/', root_url='',
                                 ssl_certs_dir='/certs')

        p = SendMailPlugin(workflow,
                           from_address='*****@*****.**', smtp_host='smtp.spam.com',
                           send_on=[], error_addresses=error_addresses)

        (flexmock(p).should_receive('_should_send')
            .with_args(False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_return([])
        flexmock(p).should_receive('_get_image_name_and_repos').and_return(('foobar',
                                                                           ['foo/bar:baz',
                                                                            'foo/bar:spam']))
        p.run()
        assert 'no valid addresses in requested addresses. Doing nothing' in caplog.text
Esempio n. 5
0
    def test_run_ok(self, tmpdir, workflow, source_dir):
        workflow.data.plugin_failed = True
        receivers = ['*****@*****.**', '*****@*****.**']

        dockerfile = source_dir / DOCKERFILE_FILENAME
        dockerfile.write_text(MOCK_DOCKERFILE, "utf-8")
        flexmock(workflow, df_path=str(dockerfile))

        mock_store_metadata_results(workflow)

        smtp_map = {
            'from_address': '*****@*****.**',
            'host': 'smtp.bar.com',
        }
        rcm = {'version': 1, 'smtp': smtp_map, 'openshift': {'url': 'https://something.com'}}
        workflow.conf = Configuration(raw_config=rcm)
        add_koji_map_in_workflow(workflow, hub_url='/', root_url='',
                                 ssl_certs_dir='/certs')

        p = SendMailPlugin(workflow,
                           from_address='*****@*****.**', smtp_host='smtp.spam.com',
                           send_on=[])

        (flexmock(p).should_receive('_should_send')
         .with_args(False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_return(receivers)
        flexmock(p).should_receive('_send_mail').with_args(receivers,
                                                           str, str, None)

        p.run()
Esempio n. 6
0
    def test_run_fails_to_obtain_receivers(self):
        class TagConf(object):
            unique_images = []

        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = util.ImageName.parse('repo/name')
            build_process_failed = True
            tag_conf = TagConf()
            exit_results = {}

        error_addresses = ['*****@*****.**']
        p = SendMailPlugin(None,
                           WF(),
                           from_address='*****@*****.**',
                           smtp_host='smtp.spam.com',
                           send_on=[AF],
                           error_addresses=error_addresses)

        (flexmock(p).should_receive('_should_send').with_args(
            True, False, False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_raise(
            RuntimeError())
        flexmock(p).should_receive('_send_mail').with_args(
            error_addresses, six.text_type, six.text_type)

        p.run()
Esempio n. 7
0
    def test_skip_plugin(self, caplog, workflow):
        rcm = {'version': 1, 'openshift': {'url': 'https://something.com'}}
        workflow.conf = Configuration(raw_config=rcm)
        add_koji_map_in_workflow(workflow, hub_url='/', root_url='',
                                 ssl_certs_dir='/certs')

        p = SendMailPlugin(workflow)
        p.run()
        log_msg = 'no smtp configuration, skipping plugin'
        assert log_msg in caplog.text
Esempio n. 8
0
 def test_fails_with_unknown_states(self):
     p = SendMailPlugin(None,
                        None,
                        smtp_host='smtp.bar.com',
                        from_address='*****@*****.**',
                        send_on=['unknown_state', MS])
     with pytest.raises(PluginFailedException) as e:
         p.run()
     assert str(
         e.value) == 'Unknown state(s) "unknown_state" for sendmail plugin'
Esempio n. 9
0
    def test_run_does_nothing_if_conditions_not_met(self):
        class WF(object):
            build_result = BuildResult(fail_reason="not built")
            autorebuild_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = ImageName.parse('repo/name')
        p = SendMailPlugin(None, WF(), send_on=[MS])

        flexmock(p).should_receive('_should_send').with_args(True, False, False).and_return(False)
        flexmock(p).should_receive('_get_receivers_list').times(0)
        flexmock(p).should_receive('_send_mail').times(0)

        p.run()
Esempio n. 10
0
    def test_run_does_nothing_if_conditions_not_met(self):
        class WF(object):
            build_failed = True
            autorebuild_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = ImageName.parse('repo/name')
        p = SendMailPlugin(None, WF(), send_on=[MS])

        flexmock(p).should_receive('_should_send').with_args(True, False, False).and_return(False)
        flexmock(p).should_receive('_get_receivers_list').times(0)
        flexmock(p).should_receive('_send_mail').times(0)

        p.run()
Esempio n. 11
0
    def test_run_ok(self):
        class WF(object):
            build_failed = True
            autorebuild_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = ImageName.parse('repo/name')
        receivers = ['*****@*****.**', '*****@*****.**']
        p = SendMailPlugin(None, WF(), send_on=[AF])

        flexmock(p).should_receive('_should_send').with_args(True, False, False).and_return(True)
        flexmock(p).should_receive('_get_receivers_list').and_return(receivers)
        flexmock(p).should_receive('_send_mail').with_args(receivers, six.text_type, six.text_type)

        p.run()
Esempio n. 12
0
    def test_run_ok(self):
        class WF(object):
            build_result = BuildResult(fail_reason="not built")
            autorebuild_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = ImageName.parse('repo/name')
        receivers = ['*****@*****.**', '*****@*****.**']
        p = SendMailPlugin(None, WF(), send_on=[AF])

        flexmock(p).should_receive('_should_send').with_args(True, False, False).and_return(True)
        flexmock(p).should_receive('_get_receivers_list').and_return(receivers)
        flexmock(p).should_receive('_send_mail').with_args(receivers, six.text_type, six.text_type)

        p.run()
Esempio n. 13
0
    def test_run_fails_to_obtain_receivers(self):
        class WF(object):
            build_result = BuildResult(fail_reason="not built")
            autorebuild_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = ImageName.parse('repo/name')
        error_addresses = ['*****@*****.**']
        p = SendMailPlugin(None, WF(), send_on=[AF], error_addresses=error_addresses)

        flexmock(p).should_receive('_should_send').with_args(True, False, False).and_return(True)
        flexmock(p).should_receive('_get_receivers_list').and_raise(RuntimeError())
        flexmock(p).should_receive('_send_mail').with_args(error_addresses, six.text_type,
                                                           six.text_type)

        p.run()
Esempio n. 14
0
    def test_run_fails_to_obtain_receivers(self):
        class WF(object):
            build_failed = True
            autorebuild_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = ImageName.parse('repo/name')
        error_addresses = ['*****@*****.**']
        p = SendMailPlugin(None, WF(), send_on=[AF], error_addresses=error_addresses)

        flexmock(p).should_receive('_should_send').with_args(True, False, False).and_return(True)
        flexmock(p).should_receive('_get_receivers_list').and_raise(RuntimeError())
        flexmock(p).should_receive('_send_mail').with_args(error_addresses, six.text_type,
                                                           six.text_type)

        p.run()
Esempio n. 15
0
    def test_run_fails_to_obtain_receivers(self, reactor_config_map):  # noqa
        class TagConf(object):
            unique_images = []

        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = util.ImageName.parse('repo/name')
            build_process_failed = True
            tag_conf = TagConf()
            exit_results = {}
            plugin_workspace = {}

        error_addresses = ['*****@*****.**']
        workflow = WF()
        mock_store_metadata_results(workflow)

        if reactor_config_map:
            smtp_map = {
                'from_address': '*****@*****.**',
                'host': 'smtp.bar.com',
                'error_addresses': ['*****@*****.**'],
            }
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'smtp': smtp_map})

        p = SendMailPlugin(None,
                           workflow,
                           from_address='*****@*****.**',
                           smtp_host='smtp.spam.com',
                           send_on=[AF],
                           error_addresses=error_addresses)

        (flexmock(p).should_receive('_should_send').with_args(
            True, False, False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_raise(
            RuntimeError())
        flexmock(p).should_receive('_fetch_log_files').and_return(None)
        flexmock(p).should_receive('_get_image_name_and_repos').and_return(
            ('foobar', ['foo/bar:baz', 'foo/bar:spam']))
        flexmock(p).should_receive('_send_mail').with_args(
            error_addresses, six.text_type, six.text_type, None)

        p.run()
Esempio n. 16
0
    def test_run_ok(self, tmpdir):  # noqa
        class TagConf(object):
            unique_images = []

        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = ImageName.parse('repo/name')
            build_process_failed = True
            tag_conf = TagConf()
            exit_results = {}
            plugin_workspace = {}
            source = mock_source()
            builder = mock_builder()
            with open(os.path.join(str(tmpdir), 'Dockerfile'), 'wt') as df:
                df.write(MOCK_DOCKERFILE)
                setattr(builder, 'df_path', df.name)

        receivers = ['*****@*****.**', '*****@*****.**']

        workflow = WF()
        mock_store_metadata_results(workflow)

        smtp_map = {
            'from_address': '*****@*****.**',
            'host': 'smtp.bar.com',
        }
        workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
        workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
            ReactorConfig({'version': 1, 'smtp': smtp_map})
        add_koji_map_in_workflow(workflow, hub_url='/', root_url='',
                                 ssl_certs_dir='/certs')

        p = SendMailPlugin(None, workflow,
                           from_address='*****@*****.**', smtp_host='smtp.spam.com',
                           send_on=[AF])

        (flexmock(p).should_receive('_should_send')
         .with_args(True, False, False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_return(receivers)
        flexmock(p).should_receive('_fetch_log_files').and_return(None)
        flexmock(p).should_receive('_send_mail').with_args(receivers,
                                                           str, str, None)

        p.run()
Esempio n. 17
0
    def test_fails_with_unknown_states(self, workflow):
        smtp_map = {
            'from_address': '*****@*****.**',
            'host': 'smtp.spam.com',
        }

        rcm = {'version': 1, 'smtp': smtp_map, 'openshift': {'url': 'https://something.com'}}
        workflow.conf = Configuration(raw_config=rcm)
        add_koji_map_in_workflow(workflow, hub_url='/', root_url='',
                                 ssl_certs_dir='/certs')

        p = SendMailPlugin(workflow,
                           smtp_host='smtp.bar.com', from_address='*****@*****.**',
                           send_on=['unknown_state', MS])
        with pytest.raises(PluginFailedException) as e:
            p.run()
        assert str(e.value) == 'Unknown state(s) "unknown_state" for sendmail plugin'
    def test_run_ok(self, tmpdir, reactor_config_map):  # noqa
        class TagConf(object):
            unique_images = []

        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = util.ImageName.parse('repo/name')
            build_process_failed = True
            tag_conf = TagConf()
            exit_results = {}
            plugin_workspace = {}
            source = mock_source()
            builder = mock_builder()
            with open(os.path.join(str(tmpdir), 'Dockerfile'), 'wt') as df:
                df.write(MOCK_DOCKERFILE)
                setattr(builder, 'df_path', df.name)

        receivers = ['*****@*****.**', '*****@*****.**']

        workflow = WF()
        mock_store_metadata_results(workflow)

        if reactor_config_map:
            smtp_map = {
                'from_address': '*****@*****.**',
                'host': 'smtp.bar.com',
            }
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'smtp': smtp_map})

        p = SendMailPlugin(None, workflow,
                           from_address='*****@*****.**', smtp_host='smtp.spam.com',
                           send_on=[AF])

        (flexmock(p).should_receive('_should_send')
         .with_args(True, False, False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_return(receivers)
        flexmock(p).should_receive('_fetch_log_files').and_return(None)
        flexmock(p).should_receive('_send_mail').with_args(receivers,
                                                           six.text_type, six.text_type, None)

        p.run()
    def test_run_fails_to_obtain_receivers(self, reactor_config_map):  # noqa
        class TagConf(object):
            unique_images = []

        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = util.ImageName.parse('repo/name')
            build_process_failed = True
            tag_conf = TagConf()
            exit_results = {}
            plugin_workspace = {}
            source = mock_source()

        error_addresses = ['*****@*****.**']
        workflow = WF()
        mock_store_metadata_results(workflow)

        if reactor_config_map:
            smtp_map = {
                'from_address': '*****@*****.**',
                'host': 'smtp.bar.com',
                'error_addresses': ['*****@*****.**'],
            }
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'smtp': smtp_map})

        p = SendMailPlugin(None, workflow,
                           from_address='*****@*****.**', smtp_host='smtp.spam.com',
                           send_on=[AF], error_addresses=error_addresses)

        (flexmock(p).should_receive('_should_send')
            .with_args(True, False, False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_raise(RuntimeError())
        flexmock(p).should_receive('_fetch_log_files').and_return(None)
        flexmock(p).should_receive('_get_image_name_and_repos').and_return(('foobar',
                                                                           ['foo/bar:baz',
                                                                            'foo/bar:spam']))
        flexmock(p).should_receive('_send_mail').with_args(error_addresses,
                                                           six.text_type, six.text_type, None)

        p.run()
Esempio n. 20
0
    def test_run_invalid_receivers(self, caplog):  # noqa
        class TagConf(object):
            unique_images = []

        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = ImageName.parse('repo/name')
            build_process_failed = True
            tag_conf = TagConf()
            exit_results = {}
            plugin_workspace = {}
            source = mock_source()

        error_addresses = ['*****@*****.**']
        workflow = WF()
        mock_store_metadata_results(workflow)

        smtp_map = {
            'from_address': '*****@*****.**',
            'host': 'smtp.bar.com',
            'error_addresses': ['*****@*****.**'],
        }
        workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
        workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
            ReactorConfig({'version': 1, 'smtp': smtp_map})
        add_koji_map_in_workflow(workflow, hub_url='/', root_url='',
                                 ssl_certs_dir='/certs')

        p = SendMailPlugin(None, workflow,
                           from_address='*****@*****.**', smtp_host='smtp.spam.com',
                           send_on=[AF], error_addresses=error_addresses)

        (flexmock(p).should_receive('_should_send')
            .with_args(True, False, False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_return([])
        flexmock(p).should_receive('_fetch_log_files').and_return(None)
        flexmock(p).should_receive('_get_image_name_and_repos').and_return(('foobar',
                                                                           ['foo/bar:baz',
                                                                            'foo/bar:spam']))
        p.run()
        assert 'no valid addresses in requested addresses. Doing nothing' in caplog.text
Esempio n. 21
0
    def test_run_does_nothing_if_conditions_not_met(self):
        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = util.ImageName.parse('repo/name')
            build_process_failed = True

        p = SendMailPlugin(None,
                           WF(),
                           from_address='*****@*****.**',
                           smtp_host='smtp.spam.com',
                           send_on=[MS])

        (flexmock(p).should_receive('_should_send').with_args(
            True, False, False, False).and_return(False))
        flexmock(p).should_receive('_get_receivers_list').times(0)
        flexmock(p).should_receive('_send_mail').times(0)

        p.run()
Esempio n. 22
0
    def test_run_does_nothing_if_conditions_not_met(self, workflow):
        workflow.data.plugin_failed = True
        smtp_map = {
            'from_address': '*****@*****.**',
            'host': 'smtp.spam.com',
        }
        rcm = {'version': 1, 'smtp': smtp_map, 'openshift': {'url': 'https://something.com'}}
        workflow.conf = Configuration(raw_config=rcm)
        add_koji_map_in_workflow(workflow, hub_url='/', root_url='',
                                 ssl_certs_dir='/certs')

        p = SendMailPlugin(workflow,
                           from_address='*****@*****.**', smtp_host='smtp.spam.com',
                           send_on=[MS])

        (flexmock(p).should_receive('_should_send')
            .with_args(False, False).and_return(False))
        flexmock(p).should_receive('_get_receivers_list').times(0)
        flexmock(p).should_receive('_send_mail').times(0)

        p.run()
    def test_fails_with_unknown_states(self, reactor_config_map):  # noqa
        class WF(object):
            exit_results = {}
            plugin_workspace = {}

        workflow = WF()
        if reactor_config_map:
            smtp_map = {
                'from_address': '*****@*****.**',
                'host': 'smtp.spam.com',
            }
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'smtp': smtp_map})

        p = SendMailPlugin(None, workflow,
                           smtp_host='smtp.bar.com', from_address='*****@*****.**',
                           send_on=['unknown_state', MS])
        with pytest.raises(PluginFailedException) as e:
            p.run()
        assert str(e.value) == 'Unknown state(s) "unknown_state" for sendmail plugin'
Esempio n. 24
0
    def test_fails_with_unknown_states(self, reactor_config_map):  # noqa
        class WF(object):
            exit_results = {}
            plugin_workspace = {}

        workflow = WF()
        if reactor_config_map:
            smtp_map = {
                'from_address': '*****@*****.**',
                'host': 'smtp.spam.com',
            }
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'smtp': smtp_map})

        p = SendMailPlugin(None, workflow,
                           smtp_host='smtp.bar.com', from_address='*****@*****.**',
                           send_on=['unknown_state', MS])
        with pytest.raises(PluginFailedException) as e:
            p.run()
        assert str(e.value) == 'Unknown state(s) "unknown_state" for sendmail plugin'
    def test_run_ok_and_send(self, monkeypatch, reactor_config_map):  # noqa
        class TagConf(object):
            unique_images = []

        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = util.ImageName.parse('repo/name')
            build_process_failed = True
            tag_conf = TagConf()
            exit_results = {}
            plugin_workspace = {}
            source = mock_source()

        class SMTP(object):
            def sendmail(self, from_addr, to, msg):
                pass

            def quit(self):
                pass

        monkeypatch.setenv("BUILD", json.dumps({
            'metadata': {
                'labels': {
                    'koji-task-id': MOCK_KOJI_TASK_ID,
                },
                'name': {},
            }
        }))

        workflow = WF()
        if reactor_config_map:
            smtp_map = {
                'from_address': '*****@*****.**',
                'host': 'smtp.spam.com',
            }
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'smtp': smtp_map})

        receivers = ['*****@*****.**', '*****@*****.**']
        fake_logs = [LogEntry(None, 'orchestrator'),
                     LogEntry(None, 'orchestrator line 2'),
                     LogEntry('x86_64', 'Hurray for bacon: \u2017'),
                     LogEntry('x86_64', 'line 2')]
        p = SendMailPlugin(None, workflow,
                           from_address='*****@*****.**', smtp_host='smtp.spam.com',
                           send_on=[AF])

        (flexmock(p).should_receive('_should_send')
            .with_args(True, False, False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_return(receivers)
        flexmock(OSBS).should_receive('get_orchestrator_build_logs').and_return(fake_logs)
        flexmock(p).should_receive('_get_image_name_and_repos').and_return(('foobar',
                                                                           ['foo/bar:baz',
                                                                            'foo/bar:spam']))

        smtp_inst = SMTP()
        flexmock(smtplib).should_receive('SMTP').and_return(smtp_inst)
        p.run()
Esempio n. 26
0
 def test_fails_with_unknown_states(self):
     p = SendMailPlugin(None, None, send_on=['unknown_state', MS])
     with pytest.raises(PluginFailedException) as e:
         p.run()
     assert str(e.value) == 'Unknown state(s) "unknown_state" for sendmail plugin'
Esempio n. 27
0
    def test_run_ok_and_send(self, monkeypatch, reactor_config_map):  # noqa
        class TagConf(object):
            unique_images = []

        class WF(object):
            autorebuild_canceled = False
            build_canceled = False
            prebuild_results = {CheckAndSetRebuildPlugin.key: True}
            image = util.ImageName.parse('repo/name')
            build_process_failed = True
            tag_conf = TagConf()
            exit_results = {}
            plugin_workspace = {}

        class SMTP(object):
            def sendmail(self, from_addr, to, msg):
                pass

            def quit(self):
                pass

        monkeypatch.setenv(
            "BUILD",
            json.dumps({
                'metadata': {
                    'labels': {
                        'koji-task-id': MOCK_KOJI_TASK_ID,
                    },
                    'name': {},
                }
            }))

        workflow = WF()
        if reactor_config_map:
            smtp_map = {
                'from_address': '*****@*****.**',
                'host': 'smtp.spam.com',
            }
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'smtp': smtp_map})

        receivers = ['*****@*****.**', '*****@*****.**']
        fake_logs = [
            LogEntry(None, 'orchestrator'),
            LogEntry(None, 'orchestrator line 2'),
            LogEntry('x86_64', 'Hurray for bacon: \u2017'),
            LogEntry('x86_64', 'line 2')
        ]
        p = SendMailPlugin(None,
                           workflow,
                           from_address='*****@*****.**',
                           smtp_host='smtp.spam.com',
                           send_on=[AF])

        (flexmock(p).should_receive('_should_send').with_args(
            True, False, False, False).and_return(True))
        flexmock(p).should_receive('_get_receivers_list').and_return(receivers)
        flexmock(OSBS).should_receive(
            'get_orchestrator_build_logs').and_return(fake_logs)
        flexmock(p).should_receive('_get_image_name_and_repos').and_return(
            ('foobar', ['foo/bar:baz', 'foo/bar:spam']))

        smtp_inst = SMTP()
        flexmock(smtplib).should_receive('SMTP').and_return(smtp_inst)
        p.run()
Esempio n. 28
0
 def test_fails_with_unknown_states(self):
     p = SendMailPlugin(None, None, send_on=['unknown_state', MS])
     with pytest.raises(PluginFailedException) as e:
         p.run()
     assert str(e.value) == 'Unknown state(s) "unknown_state" for sendmail plugin'