Esempio n. 1
0
def test_run_reports_handles_error():
    reports = [
        ReportConfig("nonexistent", None, ["*****@*****.**"], "subject1", 600,
                     "a.ssignee"),
        ReportConfig("diagnostic", {}, ["*****@*****.**"], "subject2", 600,
                     "a.ssignee")
    ]
    config = Config()
    wrapper = OrderlyWebClientWrapper(config)
    success = {}
    error = {}

    def success_callback(report, version):
        success[report.name] = version

    def error_callback(report, message):
        error[report.name] = message

    running_reports_repository = RunningReportsRepository()

    versions = run_reports(wrapper, "testGroup", "testDisease",
                           "testTouchstone", config, reports, success_callback,
                           error_callback, running_reports_repository)
    keys = list(versions.keys())
    assert len(keys) == 1
    assert versions[keys[0]]["published"] is True
    assert success["diagnostic"] == keys[0]
    assert "Failure for key" in error["nonexistent"]
    assert len(success) == 1
    assert len(error) == 1
Esempio n. 2
0
def test_tags_not_created_if_exists():
    report = ReportConfig("TEST", {}, ["*****@*****.**"], "Hi", 100,
                          "a.ssignee")
    mock_config: Config = MockConfig()
    mock_client = Mock(spec=YTClient("", ""))
    mock_client.create_issue = Mock(return_value="ISSUE")
    mock_client.get_issues = Mock(return_value=[])
    mock_client.get_tags = Mock(return_value=fake_tags)
    create_ticket("g1", "d1", "t1", "s1", report, "1234", None, mock_client,
                  mock_config)
    mock_client.create_tag.assert_has_calls([])
Esempio n. 3
0
def test_create_ticket_logs_errors(logging):
    report = ReportConfig("TEST", {}, ["*****@*****.**"], "Hi", 100,
                          "a.ssignee")
    mock_config: Config = MockConfig()
    mock_client = Mock(spec=YTClient("", ""))
    mock_client.get_issues = Mock(return_value=[])
    mock_client.get_tags = Mock(return_value=fake_tags)
    test_ex = Exception("TEST EX")
    mock_client.create_issue = Mock(side_effect=test_ex)
    create_ticket("g1", "d1", "t1", "s1", report, "1234", None, mock_client,
                  mock_config)
    logging.exception.assert_has_calls([call(test_ex)])
Esempio n. 4
0
def test_update_ticket():
    report = ReportConfig("TEST", {}, ["*****@*****.**"], "Hi", 100,
                          "a.ssignee")
    mock_config: Config = MockConfig()
    mock_client = Mock(spec=YTClient("", ""))
    mock_client.get_issues = Mock(return_value=["ISSUE"])
    mock_client.get_tags = Mock(return_value=fake_tags)
    create_ticket("g1", "d1", "t1", "s1", report, "1234", None, mock_client,
                  mock_config)
    expected_command = call(
        "ISSUE", "Check & share diag report with g1 (d1) t1",
        "Report run triggered by upload to scenario: s1. "
        "http://orderly-web/report/TEST/1234/")
    mock_client.update_issue.assert_has_calls([expected_command])
def test_additional_recipients_not_used(send_email):
    name = "r1"
    report = ReportConfig(name, {}, ["*****@*****.**"], "Hi", 1000,
                          "a.ssignee")
    fake_emailer = {}
    mock_config = MockConfig(use_additional_recipients=False)
    send_diagnostic_report_email(fake_emailer, report, "1234-abcd", "groupId",
                                 "diseaseId", "touchstoneId",
                                 "2020-11-04T12:22:53", "no_vaccination",
                                 mock_config, "*****@*****.**")
    url = "http://orderly-web/report/{}/1234-abcd/".format(name)
    send_email.assert_has_calls([
        call(fake_emailer, report, "diagnostic_report",
             get_test_template_values(url), mock_config, list())
    ])
def test_url_encodes_url_in_email(send_email):
    name = "'A silly, report"
    encoded = "%27A%20silly%2C%20report"
    report = ReportConfig(name, {}, ["*****@*****.**"], "Hi", 100, "a.ssignee")
    fake_emailer = {}
    mock_config = MockConfig()
    send_diagnostic_report_email(fake_emailer, report, "1234-abcd", "groupId",
                                 "diseaseId", "touchstoneId",
                                 "2020-11-04T12:22:53", "no_vaccination",
                                 mock_config)
    url = "http://orderly-web/report/{}/1234-abcd/".format(encoded, encoded)
    send_email.assert_has_calls([
        call(fake_emailer, report, "diagnostic_report",
             get_test_template_values(url), mock_config, list())
    ])
Esempio n. 7
0
def test_create_ticket_with_version():
    report = ReportConfig("TEST", {}, ["*****@*****.**"], "Hi", 100,
                          "a.ssignee")
    mock_config: Config = MockConfig()
    mock_client = Mock(spec=YTClient("", ""))
    mock_client.create_issue = Mock(return_value="ISSUE")
    mock_client.get_issues = Mock(return_value=[])
    mock_client.get_tags = Mock(return_value=fake_tags)
    create_ticket("g1", "d1", "t1", "s1", report, "1234", None, mock_client,
                  mock_config)
    expected_create = call(
        Project(id="78-0"), "Check & share diag report with g1 (d1) t1",
        "Report run triggered by upload to scenario: s1. "
        "http://orderly-web/report/TEST/1234/")
    mock_client.create_issue.assert_has_calls([expected_create])
    expected_command_query = \
        "for a.ssignee implementer a.ssignee tag g1 tag d1 tag t1 tag TEST"
    expected_command = call(
        Command(issues=["ISSUE"], query=expected_command_query))
    mock_client.run_command.assert_has_calls([expected_command])
from src.task_run_diagnostic_reports import send_diagnostic_report_email
from src.config import ReportConfig
from unittest.mock import patch, call
from test.unit.test_run_reports import MockConfig

reports = [
    ReportConfig("r1", None, ["*****@*****.**"], "Subj: r1", 1000,
                 "a.ssignee"),
    ReportConfig("r2", {"p1": "v1"}, ["*****@*****.**"], "Subj: r2", 2000,
                 "a.ssignee")
]


def get_test_template_values(url):
    return {
        "report_version_url": url,
        "disease": "diseaseId",
        "group": "groupId",
        "touchstone": "touchstoneId",
        "scenario": "no_vaccination",
        "utc_time": "Wed 04 Nov 2020 12:22:53 UTC",
        "eastern_time": "Wed 04 Nov 2020 07:22:53 ET"
    }


@patch("src.task_run_diagnostic_reports.send_email")
def test_url_encodes_url_in_email(send_email):
    name = "'A silly, report"
    encoded = "%27A%20silly%2C%20report"
    report = ReportConfig(name, {}, ["*****@*****.**"], "Hi", 100, "a.ssignee")
    fake_emailer = {}
Esempio n. 9
0
from src.utils.run_reports import run_reports
from src.config import ReportConfig
from orderlyweb_api import ReportStatusResult
from unittest.mock import patch, call
from src.orderlyweb_client_wrapper import OrderlyWebClientWrapper
from test import ExceptionMatching
from test.unit.test_run_reports import MockConfig, MockRunningReportRepository

reports = [ReportConfig("r1", None, ["*****@*****.**"],
                        "Subj: r1", 1000, "a.ssignee")]

report_response = ReportStatusResult({"status": "success",
                                      "version": "r1-version",
                                      "output": None})

group = "test_group"
disease = "test_disease"
touchstone = "2021test-1"


class MockOrderlyWebAPIWithExpiredToken:

    def run_report(self, name, params, timeout):
        raise Exception("Token expired")

    def report_status(self, key):
        raise Exception("Token expired")

    def publish_report(self, name, version):
        raise Exception("Token expired")