예제 #1
0
def test_get_document_data(client: CustomFlaskClient, auth_header: any):
    document = (DocumentModel.select().where(
        DocumentModel.deleted_at.is_null()).order_by(
            fn.Random()).limit(1).get())
    db_wrapper.database.close()
    document_id = document.id

    response = client.get(f'/api/documents/{document_id}',
                          json={},
                          headers=auth_header())
    json_response = response.get_json()
    json_data = json_response.get('data')

    parse_url = urlparse(json_data.get('url'))

    assert 200 == response.status_code
    assert document.created_by.id == json_data.get('created_by').get('id')
    assert document.name == json_data.get('name')
    assert document.mime_type == json_data.get('mime_type')
    assert document.size == json_data.get('size')
    assert parse_url.scheme and parse_url.netloc
    assert document.created_at.strftime('%Y-%m-%d %H:%M:%S') == json_data.get(
        'created_at')
    assert document.updated_at.strftime('%Y-%m-%d %H:%M:%S') == json_data.get(
        'updated_at')
    assert document.deleted_at == json_data.get('deleted_at')
예제 #2
0
def test_update_document(client: CustomFlaskClient, auth_header: any):
    pdf_file = '%s/example.pdf' % current_app.config.get('MOCKUP_DIRECTORY')
    document = (DocumentModel.select().where(
        DocumentModel.deleted_at.is_null()).order_by(
            fn.Random()).limit(1).get())
    db_wrapper.database.close()
    document_id = document.id

    data = {
        'document': open(pdf_file, 'rb'),
    }

    headers = auth_header()
    headers['Content-Type'] = 'multipart/form-data'

    response = client.put(f'/api/documents/{document_id}',
                          data=data,
                          headers=headers)
    json_response = response.get_json()
    json_data = json_response.get('data')

    parse_url = urlparse(json_data.get('url'))

    assert 200 == response.status_code
    assert isinstance(json_data.get('created_by').get('id'), int)
    assert pdf_file == json_data.get('name')
    assert document.mime_type == json_data.get('mime_type')
    assert FileStorage.get_filesize(pdf_file) == json_data.get('size')
    assert parse_url.scheme and parse_url.netloc
    assert document.created_at.strftime('%Y-%m-%d %H:%M:%S') == json_data.get(
        'created_at')
    assert json_data.get('updated_at') > json_data.get('created_at')
    assert json_data.get('deleted_at') is None
예제 #3
0
def test_get_document_file(client: CustomFlaskClient, auth_header: any):
    document = (DocumentModel.select().where(
        DocumentModel.deleted_at.is_null()).order_by(
            fn.Random()).limit(1).get())
    document_id = document.id
    db_wrapper.database.close()

    headers = auth_header()
    headers['Content-Type'] = 'application/octet-stream'

    response = client.get(f'/api/documents/{document_id}', headers=headers)

    assert 200 == response.status_code
    assert isinstance(response.get_data(), bytes)
예제 #4
0
def test_delete_document(client: CustomFlaskClient, auth_header: any):
    document_id = (DocumentModel.select(DocumentModel.id).where(
        DocumentModel.deleted_at.is_null()).order_by(
            fn.Random()).limit(1).get().id)
    db_wrapper.database.close()

    response = client.delete('/api/documents/%s' % document_id,
                             json={},
                             headers=auth_header())
    json_response = response.get_json()
    json_data = json_response.get('data')

    assert 200 == response.status_code
    assert document_id == json_data.get('id')
    assert json_data.get('deleted_at') is not None
    assert json_data.get('deleted_at') >= json_data.get('updated_at')
예제 #5
0
def test_search_document(client: CustomFlaskClient, auth_header: any):
    document_name = (DocumentModel.select(DocumentModel.name).where(
        DocumentModel.deleted_at.is_null()).order_by(
            fn.Random()).limit(1).get().name)
    db_wrapper.database.close()

    json_body = {
        'search': [
            {
                'field_name': 'name',
                'field_operator': 'eq',
                'field_value': document_name,
            },
        ],
        'order': [
            {
                'field_name': 'name',
                'sorting': 'desc',
            },
        ],
    }

    response = client.post('/api/documents/search',
                           json=json_body,
                           headers=auth_header())
    json_response = response.get_json()

    document_data = json_response.get('data')
    records_total = json_response.get('records_total')
    records_filtered = json_response.get('records_filtered')

    assert 200 == response.status_code
    assert isinstance(document_data, list)
    assert records_total > 0
    assert 0 < records_filtered <= records_total
    assert document_data[0].get('name').find(document_name) != -1