コード例 #1
0
def test_get_next_oldest(client, jwt, app):

    # add NR to database
    from namex.models import Request as RequestDAO, State
    nr = RequestDAO()
    nr.nrNum = 'NR 0000001'
    nr.stateCd = State.DRAFT
    nr._source = 'NRO'
    nr.save_to_db()

    for i in range(2, 12):
        nr = RequestDAO()
        nr.nrNum = 'NR {0:07d}'.format(i)
        nr.stateCd = State.DRAFT
        nr._source = 'NRO'
        nr.save_to_db()

    # create JWT & setup header with a Bearer Token using the JWT
    token = jwt.create_jwt(claims, token_header)
    headers = {'Authorization': 'Bearer ' + token}

    # The message expected to be returned
    json_msg = jsonify(nameRequest='NR 0000001')

    # get the resource (this is the test)
    rv = client.get('/api/v1/requests/queues/@me/oldest', headers=headers)

    assert b'"nameRequest": "NR 0000001"' in rv.data
コード例 #2
0
def test_get_queued_oldest_multirow(client, app):

    # add NR to database
    from namex.models import Request as RequestDAO, State, User
    nr_first = RequestDAO()
    nr_first.nrNum = 'NR 0000001'
    nr_first.stateCd = State.DRAFT
    nr_first.save_to_db()

    for i in range(2, 12):
        nr = RequestDAO()
        nr.nrNum = 'NR {0:07d}'.format(i)
        nr.stateCd = State.DRAFT
        nr.save_to_db()

    user = User(username='******',
                firstname='first',
                lastname='last',
                sub='idir/funcmunk',
                iss='keycloak')
    user.save_to_db()

    nr_oldest, new_req = RequestDAO.get_queued_oldest(user)

    # Tests ####
    assert nr_first.nrNum == nr_oldest.nrNum
    assert nr_oldest.json()
コード例 #3
0
def test_full_access_to_name_request(test_name, \
                                    name_request_number, temp_request_number, user_email, user_phone, \
                                    header_name_request_number, header_temp_request_number, header_user_email, header_user_phone, \
                                    expected):
    """Assure that this contains the headers required to fully access an NR."""
    from namex.utils.auth import full_access_to_name_request

    # setup
    nr = RequestDAO()
    nr.nrNum = name_request_number or temp_request_number
    nr.stateCd = State.DRAFT
    nr._source = ValidSources.NAMEREQUEST.value
    applicant = Applicant()
    applicant.phoneNumber = user_phone
    applicant.emailAddress = user_email
    nr.applicants.append(applicant)
    nr.save_to_db()

    builder = EnvironBuilder(method='POST',
                             data={},
                             headers={
                                 'BCREG_NR': header_name_request_number,
                                 'BCREG_NRL': header_temp_request_number,
                                 'BCREG-User-Email': header_user_email,
                                 'BCREG-User-Phone': header_user_phone
                             })
    env = builder.get_environ()
    req = Request(env)

    print(req)

    assert expected == full_access_to_name_request(req)
コード例 #4
0
def build_draft(data=None, test_names=None, generate_id_seq=None):
    try:
        nr = RequestDAO()

        # Set defaults, if these exist in the provided data they will be overwritten
        nr.stateCd = State.DRAFT
        nr.requestId = 1460775
        nr._source = 'NRO'

        if not data:
            data = {}

        # Map the data, if provided
        for key, value in data.items():
            # Don't set list attrs, they have to be set separately to handle sequences
            if hasattr(nr, key) and not isinstance(data.get(key), list):
                nr.__setattr__(key, value)

        nr.names = []
        for test_name in test_names:
            nr.names.append(build_name(test_name, generate_id_seq))

        return nr
    except Exception as err:
        print(repr(err))
コード例 #5
0
def build_rejected(data=None, test_names=None, generate_id_seq=None):
    """
    :param data:
    :param test_names:
    :param generate_id_seq:
    :return:
    """
    nr = RequestDAO()

    # Set defaults, if these exist in the provided data they will be overwritten
    nr.stateCd = State.REJECTED
    nr.requestId = 1460775
    nr._source = 'NRO'

    if not data:
        data = {}

    # Map the data, if provided
    for key, value in data.items():
        # Don't set list attrs, they have to be set separately to handle sequences
        if hasattr(nr, key) and not isinstance(data.get(key), list):
            nr.__setattr__(key, value)

    nr.names = []
    for test_name in test_names:
        nr.names.append(build_name(test_name, generate_id_seq))

    return nr
コード例 #6
0
def test_name_search_populated_by_name():
    """Tests changing a name updates the nameSearch column."""
    from namex.models import Name, Request as RequestDAO, State

    name = Name()
    name.choice = 1
    name.name = 'TEST'
    name.state = 'NE'

    nr = RequestDAO()
    nr.nrNum = 'NR 0000001'
    nr.stateCd = State.DRAFT
    nr.names.append(name)
    nr.save_to_db()

    test = RequestDAO.find_by_id(nr.id)
    # sanity check
    names = test.names.all()
    assert len(names) == 1
    assert names[0].name == 'TEST'

    # check nameSearch
    assert nr.nameSearch == '|1TEST1|'

    # alter name
    name.name = 'CHANGED'
    name.save_to_db()

    # check nameSearch
    assert nr.nameSearch == '|1CHANGED1|'
コード例 #7
0
def test_reopen_event_history(client, jwt, app):
    from namex.models import Request as RequestDAO, State, Name as NameDAO, User, Event
    from namex.services import EventRecorder

    # add a user for the comment
    user = User('test-user', '', '', '43e6a245-0bf7-4ccf-9bd0-e7fb85fd18cc',
                'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/sbc')
    user.save_to_db()

    headers = create_header(jwt, [User.EDITOR])

    nr = RequestDAO()
    nr.nrNum = 'NR 0000002'
    nr.stateCd = State.REJECTED
    nr.requestId = 1460775
    nr._source = 'NRO'
    name1 = NameDAO()
    name1.choice = 1
    name1.name = 'TEST NAME ONE'
    nr.names = [name1]
    nr.save_to_db()

    EventRecorder.record(user, Event.PATCH, nr, {})

    nr.stateCd = State.INPROGRESS
    EventRecorder.record(user, Event.PUT, nr, {
        "additional": "additional",
        "furnished": "N"
    })

    # get the resource (this is the test)
    rv = client.get('/api/v1/events/NR%200000002', headers=headers)
    assert rv.status_code == 200

    assert b'"user_action": "Re-Open"' in rv.data
コード例 #8
0
def test_comment_where_no_user(client, jwt, app):
    from namex.models import Request as RequestDAO, State, Name as NameDAO, Comment as CommentDAO, User

    nr = RequestDAO()
    nr.nrNum = 'NR 0000002'
    nr.stateCd = State.INPROGRESS
    nr.requestId = 1460775
    nr._source = 'NRO'
    name1 = NameDAO()
    name1.choice = 1
    name1.name = 'TEST NAME ONE'
    nr.names = [name1]
    nr.save_to_db()

    # create JWT & setup header with a Bearer Token using the JWT
    token = jwt.create_jwt(claims, token_header)
    headers = {
        'Authorization': 'Bearer ' + token,
        'content-type': 'application/json'
    }

    new_comment = {"comment": "The 13th comment entered by the user."}
    rv = client.post('/api/v1/requests/NR%200000002/comments',
                     data=json.dumps(new_comment),
                     headers=headers)
    assert 404 == rv.status_code
コード例 #9
0
def save_words_list_name(words_list, queue=False):
    from namex.models import Request as RequestDAO, State, Name as NameDAO
    num = 0
    req = 1460775
    for record in words_list:
        nr_num_label = 'NR 00000'
        num += 1
        req += 1
        nr_num = nr_num_label + str(num)

        nr = RequestDAO()
        nr.nrNum = nr_num
        if queue:
            nr.stateCd = State.DRAFT
            nr.expirationDate = datetime.date.today() + datetime.timedelta(days=1)
        else:
            nr.stateCd = State.APPROVED
        nr.requestId = req
        nr.requestTypeCd = EntityTypes.CORPORATION.value
        nr._source = 'NAMEREQUEST'

        name = NameDAO()
        name.choice = 1
        name.name = record
        name.state = State.APPROVED
        name.corpNum = '0652480'
        nr.names = [name]
        nr.save_to_db()
コード例 #10
0
ファイル: test_events.py プロジェクト: stevenc987/namex
def test_get_inprogress_event_history(client, jwt, app):
    from namex.models import Request as RequestDAO, State, Name as NameDAO, User, Event
    from namex.services import EventRecorder

    # add a user for the comment
    user = User('test-user', '', '', '43e6a245-0bf7-4ccf-9bd0-e7fb85fd18cc',
                'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/sbc')
    user.save_to_db()

    # create JWT & setup header with a Bearer Token using the JWT
    token = jwt.create_jwt(claims, token_header)
    headers = {
        'Authorization': 'Bearer ' + token,
        'content-type': 'application/json'
    }

    nr = RequestDAO()
    nr.nrNum = 'NR 0000002'
    nr.stateCd = State.INPROGRESS
    nr.requestId = 1460775
    nr._source = 'NRO'
    name1 = NameDAO()
    name1.choice = 1
    name1.name = 'TEST NAME ONE'
    nr.names = [name1]
    nr.save_to_db()

    EventRecorder.record(user, Event.PATCH, nr, {})

    # get the resource (this is the test)
    rv = client.get('/api/v1/events/NR%200000002', headers=headers)
    assert rv.status_code == 200

    assert b'"user_action": "Load NR"' in rv.data
コード例 #11
0
ファイル: common.py プロジェクト: stevenc987/namex
def save_auto_approved_names(approved_number_records):
    from namex.models import Event as EventDAO, Request as RequestDAO, User as UserDAO, State
    num = 0
    global num_records

    username = '******'
    usr = UserDAO(username, '', '', '', '')
    usr.id = 86

    usr.save_to_db()
    while approved_number_records > num:
        nr_num_label = 'NR 00'
        num_records += 1
        num += 1
        nr_num = nr_num_label + str(num_records)

        nr = RequestDAO()
        nr.nrNum = nr_num
        nr.stateCd = State.APPROVED
        nr._source = 'NAMEREQUEST'

        event = EventDAO()
        event.action = EventAction.PUT.value
        event.userId = EventUserId.SERVICE_ACCOUNT.value
        event.stateCd = State.APPROVED
        event.eventDate = datetime.date.today()
        nr.events = [event]
        nr.save_to_db()
コード例 #12
0
def test_add_new_comment_to_nr(client, jwt, app):
    from namex.models import Request as RequestDAO, State, Name as NameDAO, Comment as CommentDAO, User, \
    Event as EventDAO
    from sqlalchemy import desc

    #add a user for the comment
    user = User('test-user', '', '', '43e6a245-0bf7-4ccf-9bd0-e7fb85fd18cc',
                'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/sbc')
    user.save_to_db()

    nr = RequestDAO()
    nr.nrNum = 'NR 0000002'
    nr.stateCd = State.INPROGRESS
    nr.requestId = 1460775
    nr._source = 'NRO'
    name1 = NameDAO()
    name1.choice = 1
    name1.name = 'TEST NAME ONE'
    nr.names = [name1]
    nr.save_to_db()

    comment1 = CommentDAO()
    comment1.comment = 'This is the first Comment'
    comment1.nr_id = nr.id
    comment1.examinerId = nr.userId
    nr.comments = [comment1]
    nr.save_to_db()

    # create JWT & setup header with a Bearer Token using the JWT
    token = jwt.create_jwt(claims, token_header)
    headers = {
        'Authorization': 'Bearer ' + token,
        'content-type': 'application/json'
    }

    # get the resource so we have a template for the request:
    rv = client.get('/api/v1/requests/NR%200000002', headers=headers)
    assert rv.status_code == 200
    # assert we're starting with just one name:
    data = json.loads(rv.data)
    assert len(data['comments']) == 1

    new_comment = {"comment": "The 13th comment entered by the user."}

    rv = client.post('/api/v1/requests/NR%200000002/comments',
                     data=json.dumps(new_comment),
                     headers=headers)

    assert b'"comment": "The 13th comment entered by the user."' in rv.data
    assert 200 == rv.status_code

    event_results = EventDAO.query.filter_by(nrId=nr.id).order_by(
        EventDAO.eventDate.desc()).first_or_404()
    assert event_results.action == 'post'
    assert event_results.eventJson[0:11] == '{"comment":'
コード例 #13
0
def test_get_expiry_days(client, test_name, days, action_cd, request_type):
    """
    Test that get_expiry_date method returns a either 56 or 421 days
    """
    mock_nr = RequestDAO()

    # Set defaults, if these exist in the provided data they will be overwritten
    mock_nr.stateCd = State.APPROVED
    mock_nr.request_action_cd = action_cd
    mock_nr.requestTypeCd = request_type
    mock_nr.expirationDate = None
    mock_expiry_days = int(nr_svc.get_expiry_days(mock_nr))

    assert mock_expiry_days == days
コード例 #14
0
def create_base_nr():
    nr = RequestDAO()
    nr.nrNum = 'NR 0000002'
    nr.stateCd = State.PENDING_PAYMENT
    nr.requestId = 1460775
    nr._source = ValidSources.NAMEREQUEST.value
    name1 = NameDAO()
    name1.choice = 1
    name1.name = 'TEST NAME ONE'
    nr.names = [name1]
    nr.additionalInfo = 'test'
    nr.requestTypeCd = 'CR'
    nr.request_action_cd = 'NEW'
    nr.save_to_db()
    return nr
コード例 #15
0
def test_has_consumed_name():
    """Assert has_consumed_name."""
    from namex.models import Name, Request as RequestDAO, State
    name = Name()
    name.choice = 1
    name.name = 'TEST'
    name.state = 'APPROVED'

    nr = RequestDAO()
    nr.nrNum = 'NR 0000001'
    nr.stateCd = State.CONSUMED
    nr.names.append(name)
    nr.save_to_db()

    assert nr.has_consumed_name is True
コード例 #16
0
ファイル: common.py プロジェクト: lekshmimallika-aot/namex
def save_name(submitted_date, nr_num, priority=False):
    from namex.models import Request as RequestDAO, State
    num = 0
    global num_records

    nr_num_label = 'NR '
    nr_num = nr_num_label + str(nr_num)

    nr = RequestDAO()
    nr.nrNum = nr_num
    nr.stateCd = State.DRAFT
    nr.priorityCd = 'Y' if priority else 'N'
    nr._source = 'NAMEREQUEST'
    nr.submittedDate = submitted_date
    nr.save_to_db()
コード例 #17
0
def test_is_expired():
    """Assert is_expired."""
    from namex.models import Name, Request as RequestDAO, State

    name = Name()
    name.choice = 1
    name.name = 'TEST'
    name.state = 'APPROVED'

    nr = RequestDAO()
    nr.nrNum = 'NR 0000001'
    nr.stateCd = State.EXPIRED
    nr.names.append(name)
    nr.save_to_db()

    assert nr.is_expired is True
コード例 #18
0
ファイル: common.py プロジェクト: stevenc987/namex
def save_names_queue(queue_number_records, priority=False):
    from namex.models import Request as RequestDAO, State
    num = 0
    global num_records

    while queue_number_records > num:
        nr_num_label = 'NR '
        num_records += 1
        num += 1
        nr_num = nr_num_label + str(num_records)

        nr = RequestDAO()
        nr.nrNum = nr_num
        nr.stateCd = State.DRAFT
        nr.priorityCd = 'Y' if priority else 'N'
        nr._source = 'NAMEREQUEST'
        nr.save_to_db()
コード例 #19
0
def test_get_queued_oldest(client, app):

    # SETUP #####
    # add NR to database
    from namex.models import Request as RequestDAO, State, User
    nr = RequestDAO()
    nr.nrNum='NR 0000001'
    nr.stateCd = State.DRAFT
    nr.save_to_db()

    user = User(username='******', firstname='first', lastname='last', sub='idir/funcmunk', iss='keycloak')
    user.save_to_db()

    nr_oldest, new_req = RequestDAO.get_queued_oldest(user)

    # Tests ####
    assert nr.nrNum == nr_oldest.nrNum
コード例 #20
0
def test_get_next_no_draft_avail(client, jwt, app):

    # add NR to database
    from namex.models import Request as RequestDAO, State
    nr = RequestDAO()
    nr.nrNum = 'NR 0000001'
    nr.stateCd = State.APPROVED
    nr.save_to_db()

    # create JWT & setup header with a Bearer Token using the JWT
    token = jwt.create_jwt(claims, token_header)
    headers = {'Authorization': 'Bearer ' + token}

    # get the resource (this is the test)
    rv = client.get('/api/v1/requests/queues/@me/oldest', headers=headers)

    # should return 404, not found
    assert 404 == rv.status_code
コード例 #21
0
def test_get_next_not_approver(client, jwt, app):

    # add NR to database
    from namex.models import Request as RequestDAO, State
    nr = RequestDAO()
    nr.nrNum = 'NR 0000001'
    nr.stateCd = State.DRAFT
    nr.save_to_db()

    # create JWT & setup header with a Bearer Token using the JWT
    token = jwt.create_jwt(claims_editor, token_header)
    headers = {'Authorization': 'Bearer ' + token}

    expected_response = b'{\n  "code": "missing_required_roles", \n  "description": "Missing the role(s) required to access this endpoint"\n}\n'
    # get the resource (this is the test)
    rv = client.get('/api/v1/requests/queues/@me/oldest', headers=headers)

    assert rv.data == expected_response
コード例 #22
0
def test_remove_name_from_nr(client, jwt, app):

    # add NR to database
    from namex.models import Request as RequestDAO, State, Name as NameDAO
    nr = RequestDAO()
    nr.nrNum = 'NR 0000002'
    nr.stateCd = State.INPROGRESS
    nr.requestId = 1460775
    nr._source = 'NRO'
    name1 = NameDAO()
    name1.choice = 1
    name1.name = 'ONE'
    name2 = NameDAO()
    name2.choice = 2
    name2.name = 'TWO'
    nr.names = [name1, name2]
    nr.save_to_db()

    # create JWT & setup header with a Bearer Token using the JWT
    token = jwt.create_jwt(claims, token_header)
    headers = {
        'Authorization': 'Bearer ' + token,
        'content-type': 'application/json'
    }

    # get the resource so we have a template for the request:
    rv = client.get('/api/v1/requests/NR%200000002', headers=headers)
    assert rv.status_code == 200
    # assert we're starting with just one name:
    data = json.loads(rv.data)
    assert len(data['names']) == 2

    for name in data['names']:
        if name['choice'] == 2:
            name['name'] = ''

    # Update with one blank name name (should remove the blank name)
    rv = client.put('/api/v1/requests/NR%200000002',
                    data=json.dumps(data),
                    headers=headers)

    data = json.loads(rv.data)
    assert 200 == rv.status_code
    assert len(data['names']) == 1
コード例 #23
0
def test_add_new_blank_name_to_nr(client, jwt, app):

    # add NR to database
    from namex.models import Request as RequestDAO, State, Name as NameDAO
    nr = RequestDAO()
    nr.nrNum = 'NR 0000002'
    nr.stateCd = State.INPROGRESS
    nr.requestId = 1460775
    nr._source = 'NRO'
    name1 = NameDAO()
    name1.choice = 1
    name1.name = 'ONE'
    nr.names = [name1]
    nr.save_to_db()

    # create JWT & setup header with a Bearer Token using the JWT
    token = jwt.create_jwt(claims, token_header)
    headers = {
        'Authorization': 'Bearer ' + token,
        'content-type': 'application/json'
    }

    # get the resource so we have a template for the request:
    rv = client.get('/api/v1/requests/NR%200000002', headers=headers)
    assert rv.status_code == 200
    # assert we're starting with just one name:
    data = json.loads(rv.data)
    assert len(data['names']) == 1

    new_name = data['names'][0].copy()
    new_name['name'] = ''
    new_name['choice'] = 2
    data['names'].append(new_name)

    # Update with a brand new name (this is the test)
    rv = client.put('/api/v1/requests/NR%200000002',
                    data=json.dumps(data),
                    headers=headers)

    data = json.loads(rv.data)
    assert 200 == rv.status_code
    assert len(data['names']) == 1
コード例 #24
0
def test_add_clean_name_to_nr(client, jwt, app):
    # add NR to database
    from namex.models import Request as RequestDAO, State, Name as NameDAO, User, Event as EventDAO
    # add a user for the comment
    user = User('test-user', '', '', '43e6a245-0bf7-4ccf-9bd0-e7fb85fd18cc',
                'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/sbc')
    user.save_to_db()

    user_id = user.id

    nr = RequestDAO()
    nr.nrNum = 'NR 0000002'
    nr.stateCd = State.INPROGRESS
    nr.requestId = 1460775
    nr.userId = user_id
    name1 = NameDAO()
    name1.choice = 1
    name1.name = 'B,S&J ENTERPRISES LTD.'
    name1.state = State.APPROVED
    nr.names = [name1]
    nr.save_to_db()

    # create JWT & setup header with a Bearer Token using the JWT
    token = jwt.create_jwt(claims, token_header)
    headers = {
        'Authorization': 'Bearer ' + token,
        'content-type': 'application/json'
    }

    rv = client.put('/api/v1/requests/NR%200000002/names/1',
                    data=json.dumps(name1.as_dict()),
                    headers=headers)
    assert rv.status_code == 200

    event_results = EventDAO.query.filter_by(nrId=nr.id).order_by(
        EventDAO.eventDate.desc()).first_or_404()
    assert event_results.action == 'put'

    test_string = event_results.eventJson
    test_dict = json.loads(test_string)

    assert 'BSJ ENTERPRISES' == test_dict['clean_name']
コード例 #25
0
def test_get_nr_view_only(client, jwt, app):

    # add NR to database
    from namex.models import Request as RequestDAO, State
    nr = RequestDAO()
    nr.nrNum = 'NR 0000001'
    nr.stateCd = State.DRAFT
    nr.save_to_db()
    print("Role: {} ".format(claims_viewer.get('realm_access').get('roles')))

    # create JWT & setup header with a Bearer Token using the JWT
    token = jwt.create_jwt(claims_viewer, token_header)
    headers = {'Authorization': 'Bearer ' + token}

    # The message expected to be returned
    json_msg = jsonify(nameRequest='NR 0000001')

    # get the resource (this is the test)
    rv = client.get('/api/v1/requests/NR%200000001', headers=headers)

    assert 200 == rv.status_code
コード例 #26
0
ファイル: common.py プロジェクト: stevenc987/namex
def save_approved_names_by_examiner(approved_number_records):
    from namex.models import Request as RequestDAO, State, Event as EventDAO
    num = 0
    global num_records

    while approved_number_records > num:
        num_records += 1
        num += 1
        nr_num_label = 'NR 00'
        nr_num = nr_num_label + str(num_records)

        nr = RequestDAO()
        nr.nrNum = nr_num
        nr.stateCd = State.APPROVED
        nr.submittedDate = datetime.date.today() - datetime.timedelta(days=2)
        nr._source = 'NAMEREQUEST'

        event = EventDAO()
        event.action = EventAction.PATCH.value
        event.stateCd = State.APPROVED
        event.eventDate = datetime.date.today() - datetime.timedelta(days=1)
        nr.events = [event]
        nr.save_to_db()