示例#1
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) == []
示例#2
0
def test_terminate_process_no_ckp(pg_conn):
    orig = create_location(pg_conn, 'Origin')
    dest = create_location(pg_conn, 'Dest')
    ctc = create_contact(pg_conn, 'Subject')
    vhc = create_vehicle(pg_conn, 'UUU0000')
    pk = create_process(pg_conn)
    time.sleep(0.01)
    update_process(pg_conn, pk, ctc, orig, dest, None, vhc)
    with pytest.raises(Exception):
        terminate_process(pg_conn, pk)
示例#3
0
def test_terminate_process_no_orig(pg_conn):
    dest = create_location(pg_conn, 'Dest')
    ctc = create_contact(pg_conn, 'Subject')
    ckp = create_checkpoint(pg_conn, 'Gate 1')
    vhc = create_vehicle(pg_conn, 'UUU0000')
    pk = create_process(pg_conn)
    time.sleep(0.01)
    update_process(pg_conn, pk, ctc, None, dest, ckp, vhc)
    with pytest.raises(Exception):
        terminate_process(pg_conn, pk)
示例#4
0
def test_terminate_process_no_ctc(pg_conn):
    orig = create_location(pg_conn, 'Origin')
    dest = create_location(pg_conn, 'Dest')
    ckp = create_checkpoint(pg_conn, 'Gate 1')
    vhc = create_vehicle(pg_conn, 'UUU0000')
    pk = create_process(pg_conn)
    time.sleep(0.01)
    update_process(pg_conn, pk, None, orig, dest, ckp, vhc)
    with pytest.raises(Exception):
        terminate_process(pg_conn, pk)
示例#5
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]
示例#6
0
def test_terminate_process_no_vhc(pg_conn):
    orig = create_location(pg_conn, 'Origin')
    dest = create_location(pg_conn, 'Dest')
    ctc = create_contact(pg_conn, 'Subject')
    ckp = create_checkpoint(pg_conn, 'Gate 1')
    pk = create_process(pg_conn)
    time.sleep(0.01)
    update_process(pg_conn, pk, ctc, orig, dest, ckp, None)
    terminate_process(pg_conn, pk)
    rs = retrieve_processes_by_ids(pg_conn, (pk,))
    assert rs[0]['finished_at']
示例#7
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]
def test_create_process_auth_events_on_finished_process_err(pg_conn):
    orig = create_location(pg_conn, 'Origin')
    dest = create_location(pg_conn, 'Dest')
    ctc = create_contact(pg_conn, 'Subject')
    ckp = create_checkpoint(pg_conn, 'Gate 1')
    vhc = create_vehicle(pg_conn, 'UUU0000')
    proc_id = create_process(pg_conn)
    time.sleep(0.1)
    update_process(pg_conn, proc_id, ctc, orig, dest, ckp, vhc)
    terminate_process(pg_conn, proc_id)
    with pytest.raises(Exception):
        create_process_auth_event(pg_conn, proc_id, 0, 'sys/none')
示例#9
0
def test_update_process_finished_err(pg_conn):
    orig = create_location(pg_conn, 'Origin')
    dest = create_location(pg_conn, 'Dest')
    ctc = create_contact(pg_conn, 'Subject')
    ckp = create_checkpoint(pg_conn, 'Gate 1')
    vhc = create_vehicle(pg_conn, 'UUU0000')
    pk = create_process(pg_conn)
    time.sleep(0.01)
    update_process(pg_conn, pk, ctc, orig, dest, ckp, vhc)
    terminate_process(pg_conn, pk)
    with pytest.raises(Exception):
        update_process(pg_conn, pk, ctc, orig, dest, ckp, vhc)
示例#10
0
def test_process_archive_with_unresolved_terminated_process_should_archive_none(
        pg_conn):
    orig = create_location(pg_conn, 'Origin')
    dest = create_location(pg_conn, 'Dest')
    ctc = create_contact(pg_conn, 'Subject')
    ckp = create_checkpoint(pg_conn, 'Gate 1')
    vhc = create_vehicle(pg_conn, 'UUU0000')
    pk = create_process(pg_conn)
    time.sleep(0.1)
    update_process(pg_conn, pk, ctc, orig, dest, ckp, vhc)
    terminate_process(pg_conn, pk)
    results = archive_finished_processes(pg_conn)
    assert results == []
示例#11
0
def test_process_archive_with_resolved_terminated_process_should_archive_one(
        pg_conn, basic_flow):
    orig = create_location(pg_conn, 'Origin')
    dest = create_location(pg_conn, 'Dest')
    ctc = create_contact(pg_conn, 'Subject')
    ckp = create_checkpoint(pg_conn, 'Gate 1')
    vhc = create_vehicle(pg_conn, 'UUU0000')
    pk = create_process(pg_conn)
    time.sleep(0.1)
    update_process(pg_conn, pk, ctc, orig, dest, ckp, vhc)
    create_process_auth_event(pg_conn, pk, ctc, 'sys/acc')
    terminate_process(pg_conn, pk)
    results = archive_finished_processes(pg_conn)
    assert results[0]['archived_proc_id'] == pk
示例#12
0
def test_update_process(pg_conn):
    orig = create_location(pg_conn, 'Origin')
    dest = create_location(pg_conn, 'Dest')
    ctc = create_contact(pg_conn, 'Subject')
    ckp = create_checkpoint(pg_conn, 'Gate 1')
    vhc = create_vehicle(pg_conn, 'UUU0000')
    pk = create_process(pg_conn)
    update_process(pg_conn, pk, ctc, orig, dest, ckp, vhc)
    rs = retrieve_processes_by_ids(pg_conn, (pk,))
    assert len(rs) == 1
    assert rs[0]['proc_id'] == pk
    assert rs[0]['ctc'] == ctc
    assert rs[0]['vhc'] == vhc
    assert rs[0]['ckp'] == ckp
    assert rs[0]['loc_orig'] == orig
    assert rs[0]['loc_dest'] == dest
示例#13
0
def test_processes_rule_selections_highest_order_rule_selected_from_multiple_matches(
        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, ctc=ctc_b1)
    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, None)
    update_process(pg_conn, proc_2, ctc_b1, None, None, None, vhc_a1)
    processes_matches = retrieve_processes_rule_selections(pg_conn)
    grouped = toolz.groupby('proc_id', processes_matches)
    assert _proc_matches(grouped, proc_1) == [rule_2]
    assert _proc_matches(grouped, proc_2) == [rule_1]
示例#14
0
def test_retrieve_process_histories_by_ids(pg_conn):
    dql_binds.create_auth_level(pg_conn, 'sys/acc', auth_grant=True)
    dql_binds.create_auth_flow_st(pg_conn, 0, 'sys/acc', st_term=True)
    dql_binds.create_auth_flow_tr(pg_conn, 0, 'sys/acc', 'sys/none', 'sys/acc')

    created_proc_id = dql_binds.create_process(pg_conn)
    ctc = dql_binds.create_contact(pg_conn, 'Joe')
    loc_orig = dql_binds.create_location(pg_conn, 'Addr 1')
    loc_dest = dql_binds.create_location(pg_conn, 'Addr 2')
    ckp = dql_binds.create_checkpoint(pg_conn, 'Gate 1')
    dql_binds.update_process(pg_conn,
                             created_proc_id,
                             ctc=ctc,
                             loc_orig=loc_orig,
                             loc_dest=loc_dest,
                             ckp=ckp)
    dql_binds.create_process_auth_event(pg_conn, created_proc_id, ctc,
                                        'sys/acc')
    result = dql_binds.retrieve_process_histories_by_ids(
        pg_conn, (created_proc_id, ))
    assert result
示例#15
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]
示例#16
0
def test_archive_finished_processes(pg_conn):
    dql_binds.create_auth_level(pg_conn, 'sys/acc', auth_grant=True)
    dql_binds.create_auth_flow_st(pg_conn, 0, 'sys/acc', st_term=True)
    dql_binds.create_auth_flow_tr(pg_conn, 0, 'sys/acc', 'sys/none', 'sys/acc')

    created_proc_id = dql_binds.create_process(pg_conn)
    ctc = dql_binds.create_contact(pg_conn, 'Joe')
    loc_orig = dql_binds.create_location(pg_conn, 'Addr 1')
    loc_dest = dql_binds.create_location(pg_conn, 'Addr 2')
    ckp = dql_binds.create_checkpoint(pg_conn, 'Gate 1')
    dql_binds.update_process(pg_conn,
                             created_proc_id,
                             ctc=ctc,
                             loc_orig=loc_orig,
                             loc_dest=loc_dest,
                             ckp=ckp)

    dql_binds.create_process_auth_event(pg_conn, created_proc_id, ctc,
                                        'sys/acc')
    time.sleep(0.1)
    dql_binds.terminate_process(pg_conn, created_proc_id)
    result = dql_binds.archive_finished_processes(pg_conn)
    assert result
示例#17
0
def test_terminate_process(pg_conn):
    created_proc_id = dql_binds.create_process(pg_conn)
    created_ctc_id = dql_binds.create_contact(pg_conn, 'Joe')
    created_orig_id = dql_binds.create_location(pg_conn, 'Addr 1')
    created_dest_id = dql_binds.create_location(pg_conn, 'Addr 2')
    created_ckp_id = dql_binds.create_checkpoint(pg_conn, 'Gate 1')
    result = dql_binds.update_process(pg_conn,
                                      created_proc_id,
                                      ctc=created_ctc_id,
                                      loc_orig=created_orig_id,
                                      loc_dest=created_dest_id,
                                      ckp=created_ckp_id)
    result = dql_binds.terminate_process(pg_conn, created_proc_id)
    assert isinstance(result, datetime.datetime)
示例#18
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]
示例#19
0
def test_update_process(pg_conn):
    created_proc_id = dql_binds.create_process(pg_conn)
    result = dql_binds.update_process(pg_conn, created_proc_id, ctc=0)
    assert result is None