def test_alert_without_model_or_conditions(self): with mock.patch("tests.alerts.Alert1.model", None): with self.assertRaises(NotImplementedError): run.execute_alert(Alert1, sync=True) with mock.patch("tests.alerts.Alert1.model", None): with self.assertRaises(NotImplementedError): run.execute_alert(Alert1, sync=True)
def test_execute_alert(self): alert_to = Alert1.alert_to[0] sample_id = None with db.session_scope() as session: sample = SampleModel(name="catch_alert") session.add(sample) session.commit() sample_id = sample.id run.execute_alert(Alert1, sync=True) self.assertEquals(alert_to.fp.getvalue(), "catch_alert") with db.session_scope() as session: query = session.query(Alerted) self.assertEqual(query.count(), 1) alerted = query.first() sample = session.query(SampleModel).get(sample_id) self.assertEquals(alerted.model, sample) self.assertEquals(alerted.alert, Alert1) run.execute_alert(Alert1, sync=True) with db.session_scope() as session: query = session.query(Alerted) self.assertEqual(query.count(), 1) alerted = query.first() sample = session.query(SampleModel).get(sample_id) self.assertEquals(alerted.model, sample) self.assertEquals(alerted.alert, Alert1)
def test_email_endpoint(self, smtp): with db.session_scope() as session: sample = SampleModel(name="catch_alert") session.add(sample) session.commit() to = ["*****@*****.**"] alert_to = ep.Email(to) with mock.patch("tests.alerts.Alert1.alert_to", [alert_to]): run.execute_alert(Alert1, sync=True) actual = alert_to.server.sendmail.call_args[0][:2] expected = (conf.settings.EMAIL["user"], to) self.assertEquals(actual, expected)
def test_execute_alert_default_render(self): alert_to = Alert1.alert_to[0] with db.session_scope() as session: sample = SampleModel(name="catch_alert") session.add(sample) session.commit() expected = [] def render(self, *args, **kwargs): rendered = super(Alert1, self).render_alert(*args, **kwargs) expected.append(rendered) return expected[-1] with mock.patch("tests.alerts.Alert1.render_alert", render): run.execute_alert(Alert1, sync=True) self.assertEquals(alert_to.fp.getvalue(), expected[-1])
def test_manual_register_filter_registered(self): with db.session_scope() as session: sample = SampleModel(name="catch_alert") session.add(sample) session.commit() with self.assertRaises(NotImplementedError): run.execute_alert(Alert1, sync=True) with mock.patch("tests.alerts.Alert1.filter_registered") as flt_reg: run.execute_alert(Alert1, sync=True) with db.session_scope() as session: actual = flt_reg.call_args[0][0].statement.compile(db.engine) expected = session.query(Alert1.model).filter( *Alert1.conditions).statement.compile(db.engine) self.assertEquals(str(actual), str(expected)) self.assertEquals(actual.params, expected.params)
def test_manual_register_filter_registered(self): with db.session_scope() as session: sample = SampleModel(name="catch_alert") session.add(sample) session.commit() with self.assertRaises(NotImplementedError): run.execute_alert(Alert1, sync=True) with mock.patch("tests.alerts.Alert1.filter_registered") as flt_reg: run.execute_alert(Alert1, sync=True) with db.session_scope() as session: actual = flt_reg.call_args[0][0].statement.compile(db.engine) expected = session.query( Alert1.model ).filter(*Alert1.conditions).statement.compile(db.engine) self.assertEquals(str(actual), str(expected)) self.assertEquals(actual.params, expected.params)
def test_manual_register_register(self): sample_id = None with db.session_scope() as session: sample = SampleModel(name="catch_alert") session.add(sample) session.commit() sample_id = sample.id with self.assertRaises(NotImplementedError): run.execute_alert(Alert1, sync=True) called_with = [] def reg(self, obj): called_with.append({"id": obj.id, "name": obj.name}) with mock.patch("tests.alerts.Alert1.register", reg): run.execute_alert(Alert1, sync=True) self.assertEquals(len(called_with), 1) with db.session_scope() as session: actual = called_with[0] sample = session.query(SampleModel).get(sample_id) self.assertEquals(actual["id"], sample.id) self.assertEquals(actual["name"], sample.name)
def test_alert_return_no_model(self): with mock.patch("tests.alerts.Alert1.generate", return_value=[None]): with self.assertRaises(TypeError): run.execute_alert(Step1, sync=True)
def test_procces_corectly_created(self, *args): with mock.patch("tests.alerts.Alert1.procno", 20): procs = run.execute_alert(Alert1) self.assertEqual(len(procs), 20)
def test_execute_no_alert(self): with self.assertRaises(TypeError): run.execute_alert("foo", sync=True)