token_check/
token_check.rs1use baidu_netdisk_sdk::auth::AccessToken;
2use baidu_netdisk_sdk::BaiduNetDiskClient;
3use std::time::SystemTime;
4use std::time::UNIX_EPOCH;
5
6#[tokio::main]
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("debug")).init();
10
11 println!("=== Token Validation and Refresh Test ===");
12 println!();
13
14 let client = BaiduNetDiskClient::builder().build()?;
16
17 println!("Client created successfully");
18 println!();
19
20 println!("Test 1: Loading token from environment...");
22 client.load_token_from_env()?;
23
24 let token = client.get_valid_token().await?;
25 println!("Token loaded successfully: {}", token.access_token);
26 println!();
27
28 println!("Test 2: Checking token validity...");
30 println!("Token acquired at: {}", token.acquired_at);
31 println!("Token expires in: {} seconds", token.expires_in);
32 println!("Token remaining seconds: {}", token.remaining_seconds());
33 println!("Token is expired: {}", token.is_expired());
34
35 if !token.is_expired() {
36 println!("✓ Token is valid");
37 } else {
38 println!("✗ Token is expired");
39 }
40 println!();
41
42 println!("Test 3: Testing needs_refresh logic...");
44 let needs_refresh = client.token_provider().needs_refresh()?;
45 println!("Token needs refresh: {}", needs_refresh);
46
47 if !needs_refresh {
48 println!("✓ Token doesn't need refresh");
49 } else {
50 println!("✗ Token needs refresh");
51 }
52 println!();
53
54 println!("Test 4: Getting valid token...");
56 match client.get_valid_token().await {
57 Ok(valid_token) => {
58 println!("✓ Got valid token: {}", valid_token.access_token);
59 println!(
60 "Token expires in: {} seconds",
61 valid_token.remaining_seconds()
62 );
63 }
64 Err(e) => {
65 println!("✗ Failed to get valid token: {}", e);
66 println!("Note: This is expected if refresh token is invalid/mock");
67 }
68 }
69 println!();
70
71 println!("Test 5: Testing with expired token...");
73 let expired_token = AccessToken {
74 access_token: "expired_token".to_string(),
75 expires_in: 1, refresh_token: "mock_refresh_token".to_string(),
77 scope: "basic netdisk".to_string(),
78 session_key: "".to_string(),
79 session_secret: "".to_string(),
80 acquired_at: SystemTime::now()
81 .duration_since(UNIX_EPOCH)
82 .unwrap_or_default()
83 .as_secs()
84 - 10, };
86
87 client.set_access_token(expired_token.clone())?;
88 println!(
89 "Expired token remaining seconds: {}",
90 expired_token.remaining_seconds()
91 );
92 println!("Expired token is_expired: {}", expired_token.is_expired());
93
94 if expired_token.is_expired() {
95 println!("✓ Expired token correctly identified");
96 } else {
97 println!("✗ Failed to identify expired token");
98 }
99 println!();
100
101 println!("=== Test completed ===");
102 Ok(())
103}