Add alertmanager as supported sender and update deps
This commit is contained in:
parent
05ffc640ed
commit
973e1fd789
18 changed files with 1682 additions and 1155 deletions
57
tests/test_alertmanager.py
Normal file
57
tests/test_alertmanager.py
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
from ops_bot.alertmanager import prometheus_alert_to_markdown
|
||||
import json
|
||||
|
||||
payload = json.loads(
|
||||
"""
|
||||
{
|
||||
"receiver": "matrix",
|
||||
"status": "firing",
|
||||
"alerts": [
|
||||
{
|
||||
"status": "firing",
|
||||
"labels": {
|
||||
"alertname": "InstanceDown",
|
||||
"environment": "monitoring.example.com",
|
||||
"instance": "webserver.example.com",
|
||||
"job": "node_exporter",
|
||||
"severity": "critical"
|
||||
},
|
||||
"annotations": {
|
||||
"description": "webserver.example.com of job node_exporter has been down for more than 5 minutes.",
|
||||
"summary": "THIS IS A TEST Instance webserver.example.com down"
|
||||
},
|
||||
"startsAt": "2022-06-23T11:53:14.318Z",
|
||||
"endsAt": "0001-01-01T00:00:00Z",
|
||||
"generatorURL": "http://monitoring.example.com:9090",
|
||||
"fingerprint": "9cd7837114d58797"
|
||||
}
|
||||
],
|
||||
"groupLabels": {
|
||||
"alertname": "InstanceDown"
|
||||
},
|
||||
"commonLabels": {
|
||||
"alertname": "InstanceDown",
|
||||
"environment": "monitoring.example.com",
|
||||
"instance": "webserver.example.com",
|
||||
"job": "node_exporter",
|
||||
"severity": "critical"
|
||||
},
|
||||
"commonAnnotations": {
|
||||
"description": "webserver.example.com of job node_exporter has been down for more than 5 minutes.",
|
||||
"summary": "Instance webserver.example.com down"
|
||||
},
|
||||
"externalURL": "https://alert.example",
|
||||
"version": "4",
|
||||
"groupKey": "",
|
||||
"truncatedAlerts": 0
|
||||
}"""
|
||||
)
|
||||
|
||||
|
||||
def test_alertmanager():
|
||||
r = prometheus_alert_to_markdown(payload)
|
||||
assert len(r) == 1
|
||||
plain, formatted = r[0]
|
||||
|
||||
assert "firing" in plain and "Instance webserver.example.com down" in plain
|
||||
assert "firing" in formatted and "Instance webserver.example.com down" in formatted
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
import json
|
||||
|
||||
from ops_bot.gitlab import hook
|
||||
from ops_bot.util.template import TemplateUtil
|
||||
|
||||
|
|
@ -148,16 +149,27 @@ issue_open_payload_raw = """
|
|||
}
|
||||
}"""
|
||||
issue_open_payload = json.loads(issue_open_payload_raw)
|
||||
|
||||
|
||||
def test_templates():
|
||||
# print(gitlab.messages._loader.list_templates())
|
||||
tpl = hook.messages["test"]
|
||||
args = issue_open_payload | {"util": TemplateUtil}
|
||||
args["templates"] = hook.templates.proxy(args)
|
||||
assert tpl.render(**args) == "<strong data-mautrix-exclude-plaintext>[<a data-mautrix-exclude-plaintext href=\"http://example.com/gitlabhq/gitlab-test\">gitlabhq/gitlab-test</a>]</strong> <a data-mautrix-exclude-plaintext href=\"\">root</a>"
|
||||
assert (
|
||||
tpl.render(**args)
|
||||
== '<strong data-mautrix-exclude-plaintext>[<a data-mautrix-exclude-plaintext href="http://example.com/gitlabhq/gitlab-test">gitlabhq/gitlab-test</a>]</strong> <a data-mautrix-exclude-plaintext href="">root</a>'
|
||||
)
|
||||
|
||||
|
||||
async def test_hook():
|
||||
r = await hook.handle_event("Issue Hook", issue_open_payload)
|
||||
assert r[0]
|
||||
assert r[0][0] == "[gitlabhq/gitlab-test] root opened [issue #23](http://example.com/diaspora/issues/23): New API: create/update/delete file\n \n> Create new API for manipulations with repository\nAPI"
|
||||
assert r[0][1] == "<strong data-mautrix-exclude-plaintext>[<a data-mautrix-exclude-plaintext href=\"http://example.com/gitlabhq/gitlab-test\">gitlabhq/gitlab-test</a>]</strong> <a data-mautrix-exclude-plaintext href=\"http://example.com/root\">root</a>\n opened <a href=\"http://example.com/diaspora/issues/23\" >issue #23</a>: New API: create/update/delete file<br/>\n <blockquote><p>Create new API for manipulations with repository</p>\n</blockquote>\n <span data-mx-color=\"#000000\"\n data-mx-bg-color=\"#ffffff\"\n title=\"API related issues\"\n > API </span>"
|
||||
assert (
|
||||
r[0][0]
|
||||
== "[gitlabhq/gitlab-test] root opened [issue #23](http://example.com/diaspora/issues/23): New API: create/update/delete file\n \n> Create new API for manipulations with repository\nAPI"
|
||||
)
|
||||
assert (
|
||||
r[0][1]
|
||||
== '<strong data-mautrix-exclude-plaintext>[<a data-mautrix-exclude-plaintext href="http://example.com/gitlabhq/gitlab-test">gitlabhq/gitlab-test</a>]</strong> <a data-mautrix-exclude-plaintext href="http://example.com/root">root</a>\n opened <a href="http://example.com/diaspora/issues/23" >issue #23</a>: New API: create/update/delete file<br/>\n <blockquote><p>Create new API for manipulations with repository</p>\n</blockquote>\n <span data-mx-color="#000000"\n data-mx-bg-color="#ffffff"\n title="API related issues"\n > API </span>'
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
import json
|
||||
from ops_bot import __version__
|
||||
from ops_bot import aws
|
||||
|
||||
from ops_bot import __version__, aws
|
||||
|
||||
|
||||
def test_version() -> None:
|
||||
assert __version__ == "0.1.0"
|
||||
|
||||
|
||||
sns_subscribtion_unsubscribe = """{
|
||||
"Type" : "UnsubscribeConfirmation",
|
||||
"MessageId" : "47138184-6831-46b8-8f7c-afc488602d7d",
|
||||
|
|
@ -44,19 +45,25 @@ sns_notification = """{
|
|||
"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96"
|
||||
}"""
|
||||
|
||||
|
||||
async def test_aws_sns_notification() -> None:
|
||||
r = await aws.parse_sns_event(None, json.loads(sns_notification), None)
|
||||
assert r[0][0] == "My First Message\nHello world!"
|
||||
assert r[0][1] == "<strong><font color=#dc3545>My First Message</font></strong>\n<p>Hello world!</p>"
|
||||
assert (
|
||||
r[0][1]
|
||||
== "<strong><font color=#dc3545>My First Message</font></strong>\n<p>Hello world!</p>"
|
||||
)
|
||||
|
||||
|
||||
async def test_aws_sns_subscribe() -> None:
|
||||
r = await aws.parse_sns_event(None, json.loads(sns_subscribtion_confirm), None)
|
||||
print(r)
|
||||
expected = 'You have chosen to subscribe to the topic arn:aws:sns:us-west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.\n\nhttps://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37...'
|
||||
expected = "You have chosen to subscribe to the topic arn:aws:sns:us-west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.\n\nhttps://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37..."
|
||||
assert r[0] == (expected, expected)
|
||||
|
||||
|
||||
async def test_aws_sns_unsubscribe() -> None:
|
||||
r = await aws.parse_sns_event(None, json.loads(sns_subscribtion_unsubscribe), None)
|
||||
print(r)
|
||||
expected = 'You have chosen to deactivate subscription arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation and restore the subscription, visit the SubscribeURL included in this message.\n\nhttps://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb6...'
|
||||
expected = "You have chosen to deactivate subscription arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation and restore the subscription, visit the SubscribeURL included in this message.\n\nhttps://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb6..."
|
||||
assert r[0] == (expected, expected)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue