boreholeio 0.1.0

A library for interacting with borehole.io, a subsurface data management, delivery and visualisation platform
Documentation
//! THESE ARE NOT TESTS.
//!
//! Runs the client endpoints for manual testing with borehole.io.

use std::net::Ipv4Addr;

use boreholeio::{
    client::{
        authentication::{ApplicationAuthentication, Authentication},
        endpoints::{application, logging_run},
        BoreholeIoClient, BoreholeIoClientOptions, Result,
    },
    schema::{Borehole, Device},
};
use chrono::Local;

const JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjEifQ.eyJpc3MiOiJsc2wiLCJzdWIiOiI5YWFlMWQxZC1mYTQzLTQ3MDEtOGM5Ny0xMTZkY2FlMDIyODQiLCJqdGkiOiIxMiIsIm5iZiI6MTcwMDcyMjEzMSwiYXVkIjoiYm9yZWhvbGUuaW8iLCJleHAiOjE4MTE5MzkyNjAsImlhdCI6MTcwMDcyMjEzMX0.vpo6EcQuW1F1ziqdaKNmXsnz2tr9sGXrBYwhW6YI_6Xe2DqaPHthCXwXtJER78wU6hVqChQmwTslKb4czJ3d2ZtEPHSCRddDbEx9Ta7qY-U6X4ZurP7CxPuzUJhba4C4h-o14E084J2IM9sS7mNIrv_20XhIp5kC0xn8A9Yix-08YXk6VLo8u5Dpd9D0mlQaNtewnf2NeYaBFQvIZp5V_kp46ybmH5aHdPsyn2Uib8PuGW3FC4TnXIp2mRuPZT8tfJO8VbmBGdfU9oarnGPNE1YPnaP10IDZpQINUdeGGSc6CckQMsXKd585od7a5rkN5n4O8jwd-zgUiQQpZNTxxTHH0ZBMDlGLOH_ut-5e1r85WLdb4lvwPhQZAr7t6NhVA7IJShdfmxzj_F8zJL17Ea0AajxcgAlvFuXFsOVDWRpN5CiI5kKRXAqJEctBFt9M6FtjuqbrHi9ZH-e1ZC0ffgb0bUgJNz3sP26zplX-zYcqsRyQx5Ly8PP9oMQ0AWv1X-bB_gMt6vR3MOAu_jwDlLDpmi4T34LTGUolOZE7aujSCY9KvLEeD1lQ5EyJ6OAFJXmER5_N-pePefWDgWlsmTtl2uZoNjiYgbyo6GsabiV5IlCTBriCEx8hnuEEokLy0iGY2Sctwx2F8dl7bgD_DLaT-AOs0qxDMPoEQMAboQ8";

const PUB_KEY: &str = "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4qF3khNfwboi+LOE9QJU\nV26dKJLez1Tn558bwkYqQ9BPIXqoj0diOoL0LBs5FkCezz3NCJGsztZzNcmVILUz\nwJMhzX/VDbyjMUd6rr0YTPyIacQVKn5izCE2jlqcVFkQUVHAaU8XxOFlzuV5nozn\nzBwnrp6Zn3Vrad4cK0rVNlUevmTakBZVARuc1vWgv4BIG6Eee0+r5FQ6nng1lsnQ\nQmy2u1BOr7tLLenhn5Q4uQF4EcFa3frjqoHkVpv7WeEkb+kI5RhuOflGUhciwZ5K\nxfg/J9Hn29+4XIOv+5jGcm/uVnxgC4dl0R7IFCt26c8+7KBRVaTAgjEu55vmwnKH\n5a3DOeE9qx5dJbUfT2WCtH4cw8X0tc9ydaPjbt7Nwp6zfZNWdUWk6jyvVSGSkSvj\nFSJALruG/AOZlTRloOaN5hMAm/aSKzrx7h4SCqg5DwcHNmSvllxgHVRiWGOOYnzH\n/dvskeHYC2mHMCkDhs5IH3GmdjPFISIEvbeK4EJ0xafjT/yhwdjMlt4QHi4w0CMx\nD6zUrXSZSnY/ckcBymH2egdmpxeuNk4epJ0t4cLXjNi9AggTTWhHJ2dIBBlvMWjw\nqLMbhue3bK4mvIjAZ4Eb+HlR3du9tSoCmAkFhLQf416A6gBjL3uo1nPY2QkNUvgO\nM7Nz7EDVJJPr9SMzJzrNShsCAwEAAQ==\n-----END PUBLIC KEY-----";

#[tokio::test]
async fn test_create_logging_run() -> Result<()> {
    let client = BoreholeIoClient::new(BoreholeIoClientOptions {
        base_url: "http://localhost:8000".into(),
        authentication: Authentication::Application(ApplicationAuthentication { jwt: JWT.into() }),
        ..Default::default()
    });

    let logging_run = logging_run::create(
        &client,
        logging_run::CreateParameters {
            id: Some("b51196bf-e2cd-4614-8921-d71573137c6c".into()),
            device: Some(Device {
                hostname: "hostname".into(),
                username: "username".into(),
                operating_system: None,
                domain_name: None,
                language: None,
                locale: None,
                ip_addresses: None,
            }),
            started_at: Some(Local::now().into()), // Not sure if this is correct
            starting_depth: Some(144.),
            ..Default::default()
        },
    )
    .await
    .unwrap();

    println!("{:?}", &logging_run);

    Ok(())
}

#[tokio::test]
async fn test_get_logging_run() -> Result<()> {
    let client = BoreholeIoClient::new(BoreholeIoClientOptions {
        base_url: "http://localhost:8000".into(),
        authentication: Authentication::Application(ApplicationAuthentication { jwt: JWT.into() }),
        ..Default::default()
    });

    let logging_run = logging_run::find(&client, "b51196bf-e2cd-4614-8921-d71573137c6c".into())
        .await
        .unwrap();

    println!("{:?}", &logging_run);

    Ok(())
}

#[tokio::test]
async fn test_bulk_update_logging_run() -> Result<()> {
    let client = BoreholeIoClient::new(BoreholeIoClientOptions {
        base_url: "http://localhost:8000".into(),
        authentication: Authentication::Application(ApplicationAuthentication { jwt: JWT.into() }),
        ..Default::default()
    });

    let logging_run = logging_run::bulk_update(
        &client,
        logging_run::BulkUpdateParameters {
            ids: Some(vec!["b51196bf-e2cd-4614-8921-d71573137c6c".into()]),
            borehole: Some(Borehole {
                name: Some("name".into()),
                ..Default::default()
            }),
            ..Default::default()
        },
    )
    .await
    .unwrap();

    println!("{:?}", &logging_run);

    Ok(())
}

#[tokio::test]
async fn test_application() -> Result<()> {
    let client = BoreholeIoClient::new(BoreholeIoClientOptions {
        base_url: "http://localhost:8000".into(),
        ..Default::default()
    });

    let _response = application::register(
        &client,
        application::RegisterParams {
            id: Some("9aae1d1d-fa43-4701-8c97-116dcae02284".into()),
            device: Some(Device {
                hostname: "test_hostname".into(),
                username: "test_username".into(),
                operating_system: Some("windows".into()),
                domain_name: Some("domain".into()),
                language: Some("english".into()),
                locale: Some("en-uk".into()),
                ip_addresses: Some(vec![Ipv4Addr::new(127, 0, 0, 1)]),
            }),
            application_name: Some("test_application".into()),
            application_version: Some("v1".into()),
            public_key: Some(PUB_KEY.into()),
            new_jwt: Some(JWT.into()),

            ..Default::default()
        },
    )
    .await?;

    // println!("{:?}", response);

    Ok(())
}