Ejemplo n.º 1
0
def test_rule_match_success_dest_ctc_assign_same(pg_conn, loc_a1, loc_b1,
                                                 ctc_a1, ctc_b1):
    create_location_assign_type(pg_conn, 'keeper', 'Keeper')
    create_location_assign_type(pg_conn, 'dweller', 'Dweller')
    assign_contact_to_location(pg_conn, loc_a1, ctc_a1, 'dweller')
    assign_contact_to_location(pg_conn, loc_a1, ctc_b1, 'keeper')
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    rule_2 = _create_auth_rule(pg_conn, 2, 'sys/none')
    rule_3 = _create_auth_rule(pg_conn, 3, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, loc_ass='dweller')
    patch_auth_rule(pg_conn, rule_2, loc_ass='keeper')
    proc_1 = create_process(pg_conn)
    proc_2 = create_process(pg_conn)
    proc_3 = create_process(pg_conn)
    update_process(pg_conn, proc_1, ctc_a1, None, loc_a1, None,
                   None)  # assignee aiming correct loc
    update_process(pg_conn, proc_2, ctc_b1, None, loc_a1, None,
                   None)  # assignee aiming correct loc
    update_process(pg_conn, proc_3, ctc_b1, None, loc_b1, None,
                   None)  # assignee aiming incorrect loc
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_1, rule_3]
    assert _proc_matches(grouped, proc_2) == [rule_2, rule_3]
    assert _proc_matches(grouped, proc_3) == [rule_3]
Ejemplo n.º 2
0
def test_processes_rule_matches_single_process_matches_no_rule(
        pg_conn, ctc_a1, ctc_b1):
    proc_1 = create_process(pg_conn)
    update_process(pg_conn, proc_1, ctc_a1, None, None, None, None)
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == []
Ejemplo n.º 3
0
def test_rule_match_failure_daytime_above_max_hour_below_max_minute(pg_conn):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, hour0=0, minute0=0, hour1=3, minute1=20)
    proc_1 = create_process(pg_conn, started_at=dt(2018, 7, 15, 4, 1))
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == []
Ejemplo n.º 4
0
def test_rule_match_success_daytime_below_min_minute_within_daytime_range(
        pg_conn):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, hour0=0, minute0=10, hour1=3, minute1=20)
    proc_1 = create_process(pg_conn, started_at=dt(2018, 7, 15, 2, 5))
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_1]
Ejemplo n.º 5
0
def test_processes_rule_matches_no_processes_match_no_rule(
        pg_conn, ctc_a1, ctc_b1):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    rule_2 = _create_auth_rule(pg_conn, 2, 'sys/none')
    rule_3 = _create_auth_rule(pg_conn, 3, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, ctc=ctc_a1)
    patch_auth_rule(pg_conn, rule_2, ctc=ctc_a1)
    patch_auth_rule(pg_conn, rule_3, ctc=ctc_b1)
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    assert processes_matches == []
Ejemplo n.º 6
0
def test_rule_match_success_ckp_null(pg_conn, ckp_a1, ckp_b1):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    rule_2 = _create_auth_rule(pg_conn, 2, 'sys/none')
    proc_1 = create_process(pg_conn)
    proc_2 = create_process(pg_conn)
    update_process(pg_conn, proc_1, None, None, None, ckp_a1, None)
    update_process(pg_conn, proc_2, None, None, None, ckp_b1, None)
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_1, rule_2]
    assert _proc_matches(grouped, proc_2) == [rule_1, rule_2]
Ejemplo n.º 7
0
def test_rule_match_success_daytime_range_max(pg_conn):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    rule_2 = _create_auth_rule(pg_conn, 2, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, hour1=0, minute1=0)
    patch_auth_rule(pg_conn, rule_2, hour1=23, minute1=59)
    proc_1 = create_process(pg_conn, started_at=dt(2018, 7, 15, 0, 0))
    proc_2 = create_process(pg_conn, started_at=dt(2018, 7, 15, 23, 59))
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_1, rule_2]
    assert _proc_matches(grouped, proc_2) == [rule_2]
Ejemplo n.º 8
0
def test_rule_match_success_weekday_range_max(pg_conn):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    rule_2 = _create_auth_rule(pg_conn, 2, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, wday1=0)
    patch_auth_rule(pg_conn, rule_2, wday1=6)
    proc_1 = create_process(pg_conn, started_at=dt(2018, 7, 15))  # 0, monday
    proc_2 = create_process(pg_conn, started_at=dt(2018, 7, 14))  # 6, sunday
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_1, rule_2]
    assert _proc_matches(grouped, proc_2) == [rule_2]
Ejemplo n.º 9
0
def test_rule_match_success_monthday_range_max(pg_conn):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    rule_2 = _create_auth_rule(pg_conn, 2, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, mday1=1)
    patch_auth_rule(pg_conn, rule_2, mday1=31)
    proc_1 = create_process(pg_conn, started_at=dt(2010, 1, 1))
    proc_2 = create_process(pg_conn, started_at=dt(2010, 1, 31))
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_1, rule_2]
    assert _proc_matches(grouped, proc_2) == [rule_2]
Ejemplo n.º 10
0
def test_rule_match_success_year_range_min(pg_conn):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    rule_2 = _create_auth_rule(pg_conn, 2, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, year0=2018)
    patch_auth_rule(pg_conn, rule_2, year0=2010)
    proc_1 = create_process(pg_conn, started_at=dt(2018, 1, 1))
    proc_2 = create_process(pg_conn, started_at=dt(2010, 1, 1))
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_1, rule_2]
    assert _proc_matches(grouped, proc_2) == [rule_2]
Ejemplo n.º 11
0
def test_processes_rule_matches_multiple_processes_match_single_rule(
        pg_conn, ctc_a1, ctc_b1):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, ctc=ctc_a1)
    proc_1 = create_process(pg_conn)
    proc_2 = create_process(pg_conn)
    update_process(pg_conn, proc_1, ctc_a1, None, None, None, None)
    update_process(pg_conn, proc_2, ctc_a1, None, None, None, None)
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_1]
    assert _proc_matches(grouped, proc_2) == [rule_1]
Ejemplo n.º 12
0
def test_processes_rule_matches_multiple_processes_match_different_rules(
        pg_conn, ctc_a1, ctc_b1, vhc_a1):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    rule_2 = _create_auth_rule(pg_conn, 2, 'sys/none')
    rule_3 = _create_auth_rule(pg_conn, 3, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, vhc=vhc_a1)
    patch_auth_rule(pg_conn, rule_2, ctc=ctc_a1)
    patch_auth_rule(pg_conn, rule_3, ctc=ctc_b1, vhc=vhc_a1)
    proc_1 = create_process(pg_conn)
    proc_2 = create_process(pg_conn)
    update_process(pg_conn, proc_1, ctc_a1, None, None, None, vhc_a1)
    update_process(pg_conn, proc_2, ctc_b1, None, None, None, vhc_a1)
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_1, rule_2]
    assert _proc_matches(grouped, proc_2) == [rule_1, rule_3]
Ejemplo n.º 13
0
def test_rule_match_success_dest_group_same(pg_conn, loc_a1, loc_b1, loc_nogrp,
                                            locgrp_a, locgrp_b):
    rule_1 = _create_auth_rule(pg_conn, 1, 'sys/none')
    rule_2 = _create_auth_rule(pg_conn, 2, 'sys/none')
    rule_3 = _create_auth_rule(pg_conn, 3, 'sys/none')
    patch_auth_rule(pg_conn, rule_1, loc_grp=locgrp_a)
    patch_auth_rule(pg_conn, rule_2, loc_grp=locgrp_b)
    proc_1 = create_process(pg_conn)
    proc_2 = create_process(pg_conn)
    proc_3 = create_process(pg_conn)
    update_process(pg_conn, proc_1, None, None, loc_a1, None, None)
    update_process(pg_conn, proc_2, None, None, loc_b1, None, None)
    update_process(pg_conn, proc_3, None, None, loc_nogrp, None, None)
    processes_matches = retrieve_processes_rule_matches(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_1, rule_3]
    assert _proc_matches(grouped, proc_2) == [rule_2, rule_3]
    assert _proc_matches(grouped, proc_3) == [rule_3]
Ejemplo n.º 14
0
def test_retrieve_processes_rule_matches(pg_conn):
    dql_binds.create_process(pg_conn)
    result = dql_binds.retrieve_processes_rule_matches(pg_conn)
    assert result