tls_sig_api 0.1.1

Tencent Login Service Signature API (aka. TLSSigAPI)
Documentation
use chrono::Duration;
use dotenv::{dotenv, var};
use log::*;
use rand::prelude::*;
use reqwest::Client;
use std::collections::HashMap;
use tls_sig_api::TlsSigApiVer2;

#[test]
fn check_generated_sig_correctness() {
    let _ = env_logger::builder().is_test(true).try_init();

    let env = dotenv().expect("Error occurs when processing .dotenv file!");
    trace!("Environments loaded from {:?}.", env);

    let appid = var("TEST_APPID")
        .map(|id_str| id_str.parse::<u64>().expect("Appid ParseError: Not a Int!"))
        .expect("No test appid configured!");
    let key = var("TEST_APP_KEY").expect("No test app key configured!");
    let admin = var("TEST_APP_ADMIN").expect("No test app administrator configured!");

    trace!(
        "Test Environments got: appid: {}, appkey: {}, admin: {}.",
        appid,
        key,
        admin
    );
    let sig_api = TlsSigApiVer2::new(appid, &key);

    let admin_sig = sig_api.gen_sign(&admin, Duration::hours(10), None);
    trace!("generated admin_sig: {}", admin_sig);

    let r = random::<u32>();

    let url = format!("https://console.tim.qq.com/v4/im_open_login_svc/account_import?sdkappid={}&identifier={}&usersig={}&random={}&contenttype=json", appid, admin, admin_sig, r).to_string();
    trace!("concated url: {}", url);

    let mut map = HashMap::new();
    map.insert("Identifier", "test");

    let client = Client::new();
    let res = client
        .post(&url)
        .json(&map)
        .send()
        .expect("Sending Request failed!")
        .text()
        .expect("Reading Content failed!");
    trace!("Get respone: {}", res);

    assert!(res.contains(r#""ActionStatus":"OK""#));
}